diff --git a/cmd/configure.go b/cmd/configure.go index b46debf9..21300a8a 100644 --- a/cmd/configure.go +++ b/cmd/configure.go @@ -1,6 +1,10 @@ package cmd import ( + "fmt" + "os" + "text/tabwriter" + "github.com/exercism/cli/config" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -26,22 +30,33 @@ You can also override certain default settings to suit your preferences. `, Run: func(cmd *cobra.Command, args []string) { usrCfg := config.NewEmptyUserConfig() - err := usrCfg.Load(viperUserConfig) BailOnError(err) - err = usrCfg.Write() + apiCfg := config.NewEmptyAPIConfig() + err = apiCfg.Load(viperAPIConfig) BailOnError(err) - apiCfg := config.NewEmptyAPIConfig() + show, err := cmd.Flags().GetBool("show") + BailOnError(err) - err = apiCfg.Load(viperAPIConfig) + if show { + w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) + defer w.Flush() + + fmt.Fprintln(w, "") + fmt.Fprintln(w, fmt.Sprintf("Config dir:\t%s", config.Dir())) + fmt.Fprintln(w, fmt.Sprintf("-t, --token\t%s", usrCfg.Token)) + fmt.Fprintln(w, fmt.Sprintf("-w, --workspace\t%s", usrCfg.Workspace)) + fmt.Fprintln(w, fmt.Sprintf("-a, --api\t%s", apiCfg.BaseURL)) + return + } + + err = usrCfg.Write() BailOnError(err) err = apiCfg.Write() BailOnError(err) - - return }, } @@ -49,6 +64,7 @@ func initConfigureCmd() { configureCmd.Flags().StringP("token", "t", "", "authentication token used to connect to exercism.io") configureCmd.Flags().StringP("workspace", "w", "", "directory for exercism exercises") configureCmd.Flags().StringP("api", "a", "", "API base url") + configureCmd.Flags().BoolP("show", "s", false, "show the current configuration") viperUserConfig = viper.New() viperUserConfig.BindPFlag("token", configureCmd.Flags().Lookup("token"))