From 3d3156f8640ec420a9b33c2d2734e49622cd9c17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Ciarci=C3=A0?= Date: Sat, 17 Jan 2026 18:29:04 +0100 Subject: [PATCH 1/2] fix: flags resolution --- .vscode/launch.json | 8 +++++--- cmd/root.go | 4 ++++ config.yaml | 7 ++++++- internal/cli/common/listRemote.go | 10 +++++++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 23087b1..cc37eb5 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,9 +11,11 @@ "mode": "debug", "program": "${workspaceFolder}/main.go", "args": [ - "krew", - "install", - "v0.4.5" + "kubectl", + "list-remote", + // "--force", + // "--limit", + // "10" ], "env": { "GITHUB_TOKEN": "" diff --git a/cmd/root.go b/cmd/root.go index 719caa6..0499d3e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -40,12 +40,16 @@ func Execute() { func init() { // global flags + // config file + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.vrsr/config.yaml)") + // bin path defaultBinPath, err := utils.GetDefaultBinPath() if err != nil { fmt.Fprintln(os.Stderr, "Error determining default bin path:", err) os.Exit(1) } rootCmd.PersistentFlags().StringP("bin-path", "b", defaultBinPath, "Absolute path to folder storing in-use tools binaries") + // vrs path defaultVrsPath, err := utils.GetDefaultVrsPath() if err != nil { fmt.Fprintln(os.Stderr, "Error determining default vrs path:", err) diff --git a/config.yaml b/config.yaml index aa41ea1..a3ff76e 100644 --- a/config.yaml +++ b/config.yaml @@ -9,10 +9,15 @@ # kubectl: # list-remote: # devel: true -# limit: 10 +# limit: 21 # force: true # kind: # list-remote: # devel: true # limit: 10 # force: true +# helm: +# list-remote: +# devel: true +# limit: 10 +# force: true diff --git a/internal/cli/common/listRemote.go b/internal/cli/common/listRemote.go index 3b3fcd7..8995488 100644 --- a/internal/cli/common/listRemote.go +++ b/internal/cli/common/listRemote.go @@ -30,17 +30,21 @@ func newGithubListRemoteCommand(tool string, repoConf github.RepoConfDef) *cobra return listRemoteGithub(cmd, tool, repoConf) }, } + // Bind flags to Viper keys so config file / env / flags work together. listRemoteCmd.Flags().BoolVar(&includeDevel, "devel", false, "Include pre-release versions (alpha, beta, rc)") + viper.BindPFlag(fmt.Sprintf("%s.list-remote.devel", tool), listRemoteCmd.Flags().Lookup("devel")) listRemoteCmd.Flags().IntVarP(&limit, "limit", "l", 0, "Limit number of versions displayed") + viper.BindPFlag(fmt.Sprintf("%s.list-remote.limit", tool), listRemoteCmd.Flags().Lookup("limit")) listRemoteCmd.Flags().BoolVarP(&forceRefresh, "force", "f", false, "Force refresh of remote versions cache") + viper.BindPFlag(fmt.Sprintf("%s.list-remote.force", tool), listRemoteCmd.Flags().Lookup("force")) return listRemoteCmd } // listRemoteGithub lists all remote versions of the specified tool available as GitHub releases (sorted by semver) func listRemoteGithub(cmd *cobra.Command, tool string, repoConf github.RepoConfDef) error { - includeDevel = viper.GetBool(tool + "list-remote.devel") - limit = viper.GetInt(tool + "list-remote.limit") - forceRefresh = viper.GetBool(tool + "list-remote.force") + includeDevel = viper.GetBool(tool + ".list-remote.devel") + limit = viper.GetInt(tool + ".list-remote.limit") + forceRefresh = viper.GetBool(tool + ".list-remote.force") ghc := github.New(nil) releasesData, err := ghc.FetchAllReleases(tool, github.FetchOptions{ IncludeDevel: includeDevel, From a431281e909012b0550273caff38293765d45a79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Ciarci=C3=A0?= Date: Sat, 17 Jan 2026 18:39:15 +0100 Subject: [PATCH 2/2] fix: lint --- internal/cli/common/listRemote.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/internal/cli/common/listRemote.go b/internal/cli/common/listRemote.go index 8995488..9a38013 100644 --- a/internal/cli/common/listRemote.go +++ b/internal/cli/common/listRemote.go @@ -32,11 +32,20 @@ func newGithubListRemoteCommand(tool string, repoConf github.RepoConfDef) *cobra } // Bind flags to Viper keys so config file / env / flags work together. listRemoteCmd.Flags().BoolVar(&includeDevel, "devel", false, "Include pre-release versions (alpha, beta, rc)") - viper.BindPFlag(fmt.Sprintf("%s.list-remote.devel", tool), listRemoteCmd.Flags().Lookup("devel")) + if err := viper.BindPFlag(fmt.Sprintf("%s.list-remote.devel", tool), listRemoteCmd.Flags().Lookup("devel")); err != nil { + listRemoteCmd.PrintErr(err) + panic(err) + } listRemoteCmd.Flags().IntVarP(&limit, "limit", "l", 0, "Limit number of versions displayed") - viper.BindPFlag(fmt.Sprintf("%s.list-remote.limit", tool), listRemoteCmd.Flags().Lookup("limit")) + if err := viper.BindPFlag(fmt.Sprintf("%s.list-remote.limit", tool), listRemoteCmd.Flags().Lookup("limit")); err != nil { + listRemoteCmd.PrintErr(err) + panic(err) + } listRemoteCmd.Flags().BoolVarP(&forceRefresh, "force", "f", false, "Force refresh of remote versions cache") - viper.BindPFlag(fmt.Sprintf("%s.list-remote.force", tool), listRemoteCmd.Flags().Lookup("force")) + if err := viper.BindPFlag(fmt.Sprintf("%s.list-remote.force", tool), listRemoteCmd.Flags().Lookup("force")); err != nil { + listRemoteCmd.PrintErr(err) + panic(err) + } return listRemoteCmd }