diff options
Diffstat (limited to 'client/go/cmd/version.go')
-rw-r--r-- | client/go/cmd/version.go | 72 |
1 files changed, 26 insertions, 46 deletions
diff --git a/client/go/cmd/version.go b/client/go/cmd/version.go index 875fc0cc3c1..0a47039a37d 100644 --- a/client/go/cmd/version.go +++ b/client/go/cmd/version.go @@ -6,7 +6,6 @@ import ( "log" "net/http" "os" - "os/exec" "path/filepath" "runtime" "sort" @@ -16,61 +15,42 @@ import ( "github.com/fatih/color" "github.com/spf13/cobra" "github.com/vespa-engine/vespa/client/go/build" - "github.com/vespa-engine/vespa/client/go/util" "github.com/vespa-engine/vespa/client/go/version" ) -var skipVersionCheck bool - -var sp subprocess = &execSubprocess{} - -type subprocess interface { - pathOf(name string) (string, error) - outputOf(name string, args ...string) ([]byte, error) - isTerminal() bool -} - -type execSubprocess struct{} - -func (c *execSubprocess) pathOf(name string) (string, error) { return exec.LookPath(name) } -func (c *execSubprocess) isTerminal() bool { return isTerminal() } -func (c *execSubprocess) outputOf(name string, args ...string) ([]byte, error) { - return exec.Command(name, args...).Output() -} - -func init() { - rootCmd.AddCommand(versionCmd) - versionCmd.Flags().BoolVarP(&skipVersionCheck, "no-check", "n", false, "Do not check if a new version is available") -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Show current version and check for updates", - DisableAutoGenTag: true, - SilenceUsage: true, - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - log.Printf("vespa version %s compiled with %v on %v/%v", build.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH) - if !skipVersionCheck && sp.isTerminal() { - return checkVersion() - } - return nil - }, +func newVersionCmd(cli *CLI) *cobra.Command { + var skipVersionCheck bool + cmd := &cobra.Command{ + Use: "version", + Short: "Show current version and check for updates", + DisableAutoGenTag: true, + SilenceUsage: true, + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + log.Printf("vespa version %s compiled with %v on %v/%v", build.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH) + if !skipVersionCheck && cli.isTerminal() { + return checkVersion(cli) + } + return nil + }, + } + cmd.Flags().BoolVarP(&skipVersionCheck, "no-check", "n", false, "Do not check if a new version is available") + return cmd } -func checkVersion() error { +func checkVersion(cli *CLI) error { current, err := version.Parse(build.Version) if err != nil { return err } - latest, err := latestRelease() + latest, err := latestRelease(cli) if err != nil { return err } if !current.Less(latest.Version) { return nil } - usingHomebrew := usingHomebrew() + usingHomebrew := usingHomebrew(cli) if usingHomebrew && latest.isRecent() { return nil // Allow some time for new release to appear in Homebrew repo } @@ -82,12 +62,12 @@ func checkVersion() error { return nil } -func latestRelease() (release, error) { +func latestRelease(cli *CLI) (release, error) { req, err := http.NewRequest("GET", "https://api.github.com/repos/vespa-engine/vespa/releases", nil) if err != nil { return release{}, err } - response, err := util.HttpDo(req, time.Minute, "GitHub") + response, err := cli.httpClient.Do(req, time.Minute) if err != nil { return release{}, err } @@ -118,12 +98,12 @@ func latestRelease() (release, error) { return releases[len(releases)-1], nil } -func usingHomebrew() bool { - selfPath, err := sp.pathOf("vespa") +func usingHomebrew(cli *CLI) bool { + selfPath, err := cli.exec.LookPath("vespa") if err != nil { return false } - brewPrefix, err := sp.outputOf("brew", "--prefix") + brewPrefix, err := cli.exec.Run("brew", "--prefix") if err != nil { return false } |