Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": "<my-token>"
Expand Down
4 changes: 4 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
7 changes: 6 additions & 1 deletion config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
19 changes: 16 additions & 3 deletions internal/cli/common/listRemote.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,30 @@ 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)")
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")
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")
if err := viper.BindPFlag(fmt.Sprintf("%s.list-remote.force", tool), listRemoteCmd.Flags().Lookup("force")); err != nil {
listRemoteCmd.PrintErr(err)
panic(err)
}
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,
Expand Down