From f78582a7bab8f2ba8c90fcebe35efb30fe5be705 Mon Sep 17 00:00:00 2001 From: Johannes Ziemke Date: Mon, 11 Mar 2024 17:24:44 +0100 Subject: [PATCH] Suport version parameter in manifest --- pkg/diambra/client/submission.go | 9 +++++++-- pkg/diambra/config.go | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/diambra/client/submission.go b/pkg/diambra/client/submission.go index 659659c..94a9848 100644 --- a/pkg/diambra/client/submission.go +++ b/pkg/diambra/client/submission.go @@ -23,6 +23,7 @@ const ( type Manifest struct { Image string `yaml:"image" json:"image"` + Version string `yaml:"version,omitempty" json:"version,omitempty"` Mode Mode `yaml:"mode" json:"mode"` Difficulty string `yaml:"difficulty,omitempty" json:"difficulty,omitempty"` Command []string `yaml:"command,omitempty" json:"command,omitempty"` @@ -89,12 +90,16 @@ func (c *Client) Submission(id int) (*Submission, error) { func ManifestFromPath(path string) (*Manifest, error) { manifest := &Manifest{} if path == "-" { - return manifest, yaml.NewDecoder(os.Stdin).Decode(manifest) + d := yaml.NewDecoder(os.Stdin) + d.SetStrict(true) + return manifest, d.Decode(manifest) } f, err := os.Open(path) if err != nil { return nil, fmt.Errorf("failed to open manifest: %w", err) } defer f.Close() - return manifest, yaml.NewDecoder(f).Decode(manifest) + d := yaml.NewDecoder(f) + d.SetStrict(true) + return manifest, d.Decode(manifest) } diff --git a/pkg/diambra/config.go b/pkg/diambra/config.go index 2519e57..69f55a4 100644 --- a/pkg/diambra/config.go +++ b/pkg/diambra/config.go @@ -45,6 +45,7 @@ type AppArgs struct { Render bool LockFPS bool Sound bool + ExtraArgs []string } type Args []string @@ -68,6 +69,7 @@ func (a AppArgs) Args() []string { args.Bool("--lockFps", a.LockFPS) args.Bool("--sound", a.Sound) args.Int("--randomSeed", a.RandomSeed) + args = append(args, a.ExtraArgs...) return args } @@ -166,6 +168,7 @@ func (c *EnvConfig) AddFlags(flags *pflag.FlagSet) { flags.BoolVarP(&c.AppArgs.Render, "engine.render", "g", false, "Render graphics server side") flags.BoolVarP(&c.AppArgs.LockFPS, "engine.lockfps", "l", false, "Lock FPS") flags.BoolVar(&c.AppArgs.Sound, "engine.sound", false, "Enable sound") + flags.StringSliceVar(&c.AppArgs.ExtraArgs, "engine.args", []string{}, "Additional engine arguments") // Agent flags flags.StringVarP(&c.AgentImage, "agent.image", "a", "", "Run given agent command in container") @@ -237,6 +240,7 @@ var ErrInvalidArgs = errors.New("either image, manifest path or submission id mu type SubmissionConfig struct { Mode string Difficulty string + Version string EnvVars map[string]string Sources map[string]string Secrets map[string]string @@ -262,6 +266,7 @@ func (c *SubmissionConfig) RegisterCredentialsProviders() { func (c *SubmissionConfig) AddFlags(flags *pflag.FlagSet) { flags.StringVar(&c.Mode, "submission.mode", string(client.ModeAIvsCOM), "Mode to use for evaluation") flags.StringVar(&c.Difficulty, "submission.difficulty", string(DifficultyEasy), "Difficulty to use for evaluation") + flags.StringVar(&c.Version, "submission.version", "", "Version to use for evaluation") flags.StringToStringVarP(&c.EnvVars, "submission.env", "e", nil, "Environment variables to pass to the agent") flags.StringToStringVarP(&c.Sources, "submission.source", "u", nil, "Source urls to pass to the agent") flags.StringToStringVar(&c.Secrets, "submission.secret", nil, "Secrets to pass to the agent") @@ -316,6 +321,9 @@ func (c *SubmissionConfig) Submission(config *EnvConfig, args []string) (*client if c.Difficulty != "" { manifest.Difficulty = c.Difficulty } + if c.Version != "" { + manifest.Version = c.Version + } if manifest.Image == "" { return nil, fmt.Errorf("image is required") }