From 98d1033dc80f3c0703240399ca4d1843dcc838f2 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Mon, 29 Apr 2024 16:09:26 -0700 Subject: [PATCH 1/3] Add valid config fields to its help --- README.md | 5 +++-- cmd/cliflags/flags.go | 14 ++++++++++++++ cmd/config/config.go | 17 +++++++++++++++++ cmd/config/config_test.go | 5 +++-- cmd/config/testdata/help.golden | 8 +++++++- cmd/root.go | 8 ++++---- 6 files changed, 48 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7989b341..0d9dfbb3 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,12 @@ ldcli --help The LaunchDarkly CLI allows you to save preferred settings, either within a config file using the `config` commands, or set as environment variables. -Current respected settings: +Current settings: -* `access-token` A LaunchDarkly API token with write-level access +* `access-token` A LaunchDarkly access token with write-level access * `analytics-optout` Opt out of analytics tracking (default false) * `base-uri` LaunchDarkly base URI (default "https://app.launchdarkly.com") +* `output` Command response output format in either JSON or plain text To set a value as an environment variable, prepend the variable name with `LD`. For example: ```shell diff --git a/cmd/cliflags/flags.go b/cmd/cliflags/flags.go index 36b3b45c..f5a325c3 100644 --- a/cmd/cliflags/flags.go +++ b/cmd/cliflags/flags.go @@ -13,4 +13,18 @@ const ( OutputFlag = "output" ProjectFlag = "project" RoleFlag = "role" + + AccessTokenFlagDescription = "LaunchDarkly access token with write-level access" + AnalyticsOptOutDescription = "Opt out of analytics tracking" + BaseURIFlagDescription = "LaunchDarkly base URI" + OutputFlagDescription = "Command response output format in either JSON or plain text" ) + +func AllFlagsHelp() map[string]string { + return map[string]string{ + AccessTokenFlag: AccessTokenFlagDescription, + AnalyticsOptOut: AnalyticsOptOutDescription, + BaseURIFlag: BaseURIFlagDescription, + OutputFlag: OutputFlagDescription, + } +} diff --git a/cmd/config/config.go b/cmd/config/config.go index 10f2b0f1..75584fa2 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "os" + "strings" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -39,6 +40,22 @@ func NewConfigCmd(analyticsTracker analytics.Tracker) *cobra.Command { }, } + helpFun := cmd.HelpFunc() + cmd.SetHelpFunc(func(cmd *cobra.Command, args []string) { + var sb strings.Builder + sb.WriteString("\n\nCurrent settings:\n") + for _, s := range []string{ + cliflags.AccessTokenFlag, + cliflags.AnalyticsOptOut, + cliflags.BaseURIFlag, + cliflags.OutputFlag, + } { + sb.WriteString(fmt.Sprintf("- `%s`: %s\n", s, cliflags.AllFlagsHelp()[s])) + } + cmd.Long += sb.String() + helpFun(cmd, args) + }) + cmd.Flags().Bool(ListFlag, false, "List configs") _ = viper.BindPFlag(ListFlag, cmd.Flags().Lookup(ListFlag)) cmd.Flags().Bool(SetFlag, false, "Set a config field to a value") diff --git a/cmd/config/config_test.go b/cmd/config/config_test.go index ebeca840..f6646308 100644 --- a/cmd/config/config_test.go +++ b/cmd/config/config_test.go @@ -1,13 +1,14 @@ package config_test import ( - "ldcli/cmd" - "ldcli/internal/analytics" "os" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "ldcli/cmd" + "ldcli/internal/analytics" ) func TestNoFlag(t *testing.T) { diff --git a/cmd/config/testdata/help.golden b/cmd/config/testdata/help.golden index d8553fcb..aadfc37e 100644 --- a/cmd/config/testdata/help.golden +++ b/cmd/config/testdata/help.golden @@ -1,5 +1,11 @@ View and modify specific configuration values +Current settings: +- `access-token`: LaunchDarkly access token with write-level access +- `analytics-opt-out`: Opt out of analytics tracking +- `base-uri`: LaunchDarkly base URI +- `output`: Command response output format in either JSON or plain text + Usage: ldcli config [flags] @@ -10,7 +16,7 @@ Flags: --unset string Unset a config field Global Flags: - --access-token string LaunchDarkly API token with write-level access + --access-token string LaunchDarkly access token with write-level access --analytics-opt-out Opt out of analytics tracking --base-uri string LaunchDarkly base URI (default "https://app.launchdarkly.com") -o, --output string Command response output format in either JSON or plain text (default "plaintext") diff --git a/cmd/root.go b/cmd/root.go index 2e922b8b..cb19c927 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -78,7 +78,7 @@ func NewRootCommand( cmd.PersistentFlags().String( cliflags.AccessTokenFlag, "", - "LaunchDarkly API token with write-level access", + cliflags.AccessTokenFlagDescription, ) err := cmd.MarkPersistentFlagRequired(cliflags.AccessTokenFlag) if err != nil { @@ -92,7 +92,7 @@ func NewRootCommand( cmd.PersistentFlags().String( cliflags.BaseURIFlag, cliflags.BaseURIDefault, - "LaunchDarkly base URI", + cliflags.BaseURIFlagDescription, ) err = viper.BindPFlag(cliflags.BaseURIFlag, cmd.PersistentFlags().Lookup(cliflags.BaseURIFlag)) if err != nil { @@ -102,7 +102,7 @@ func NewRootCommand( cmd.PersistentFlags().Bool( cliflags.AnalyticsOptOut, false, - "Opt out of analytics tracking", + cliflags.AnalyticsOptOutDescription, ) err = viper.BindPFlag(cliflags.AnalyticsOptOut, cmd.PersistentFlags().Lookup(cliflags.AnalyticsOptOut)) if err != nil { @@ -113,7 +113,7 @@ func NewRootCommand( cliflags.OutputFlag, "o", "plaintext", - "Command response output format in either JSON or plain text", + cliflags.OutputFlagDescription, ) err = viper.BindPFlag(cliflags.OutputFlag, cmd.PersistentFlags().Lookup(cliflags.OutputFlag)) if err != nil { From 2a2b1c261914590ce470e5209e57705d17a434d0 Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Mon, 29 Apr 2024 16:20:42 -0700 Subject: [PATCH 2/3] Update text --- README.md | 2 +- cmd/config/config.go | 2 +- cmd/config/testdata/help.golden | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0d9dfbb3..c5a5f7ad 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ ldcli --help The LaunchDarkly CLI allows you to save preferred settings, either within a config file using the `config` commands, or set as environment variables. -Current settings: +Supported settings: * `access-token` A LaunchDarkly access token with write-level access * `analytics-optout` Opt out of analytics tracking (default false) diff --git a/cmd/config/config.go b/cmd/config/config.go index 75584fa2..5cb350ca 100644 --- a/cmd/config/config.go +++ b/cmd/config/config.go @@ -43,7 +43,7 @@ func NewConfigCmd(analyticsTracker analytics.Tracker) *cobra.Command { helpFun := cmd.HelpFunc() cmd.SetHelpFunc(func(cmd *cobra.Command, args []string) { var sb strings.Builder - sb.WriteString("\n\nCurrent settings:\n") + sb.WriteString("\n\nSupported settings:\n") for _, s := range []string{ cliflags.AccessTokenFlag, cliflags.AnalyticsOptOut, diff --git a/cmd/config/testdata/help.golden b/cmd/config/testdata/help.golden index aadfc37e..3b1300eb 100644 --- a/cmd/config/testdata/help.golden +++ b/cmd/config/testdata/help.golden @@ -1,6 +1,6 @@ View and modify specific configuration values -Current settings: +Supported settings: - `access-token`: LaunchDarkly access token with write-level access - `analytics-opt-out`: Opt out of analytics tracking - `base-uri`: LaunchDarkly base URI From 7ff34b212356292e45fc780eacbb9f6c6a43ddbc Mon Sep 17 00:00:00 2001 From: Danny Olson Date: Mon, 29 Apr 2024 16:22:05 -0700 Subject: [PATCH 3/3] Update text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c5a5f7ad..cf6ed787 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ The LaunchDarkly CLI allows you to save preferred settings, either within a conf Supported settings: * `access-token` A LaunchDarkly access token with write-level access -* `analytics-optout` Opt out of analytics tracking (default false) +* `analytics-opt-out` Opt out of analytics tracking (default false) * `base-uri` LaunchDarkly base URI (default "https://app.launchdarkly.com") * `output` Command response output format in either JSON or plain text