BuildConfigFromArgs parses CLI args and env vars, then builds config. Config file can be specified via --config flag or CONFIG env var. Priority: defaults < config file < environment variables < CLI args
(args []string)
| 68 | // Config file can be specified via --config flag or CONFIG env var. |
| 69 | // Priority: defaults < config file < environment variables < CLI args |
| 70 | func BuildConfigFromArgs(args []string) (*config.Config, error) { |
| 71 | cli := &CLI{} |
| 72 | parser, err := kong.New( |
| 73 | cli, |
| 74 | kong.Name("agent-stack-k8s"), |
| 75 | kong.Description("Buildkite Agent Stack for Kubernetes"), |
| 76 | kong.DefaultEnvars(""), |
| 77 | kong.ConfigureHelp(kong.HelpOptions{ |
| 78 | Compact: true, |
| 79 | }), |
| 80 | kong.UsageOnError(), |
| 81 | ) |
| 82 | if err != nil { |
| 83 | return nil, fmt.Errorf("failed to create parser: %w", err) |
| 84 | } |
| 85 | |
| 86 | _, err = parser.Parse(args) |
| 87 | if err != nil { |
| 88 | parser.FatalIfErrorf(err) |
| 89 | } |
| 90 | |
| 91 | return buildConfig(cli) |
| 92 | } |
| 93 | |
| 94 | // buildConfig builds the config from CLI values with correct precedence: |
| 95 | // defaults < config file < env vars/CLI flags. |