github.com/secman-team/gh-api@v1.8.2/pkg/cmd/version/version.go (about) 1 package version 2 3 import ( 4 "fmt" 5 "regexp" 6 "strings" 7 8 "github.com/secman-team/gh-api/pkg/cmdutil" 9 "github.com/spf13/cobra" 10 ) 11 12 func NewCmdVersion(f *cmdutil.Factory, version, buildDate string) *cobra.Command { 13 cmd := &cobra.Command{ 14 Use: "version", 15 Hidden: true, 16 Run: func(cmd *cobra.Command, args []string) { 17 fmt.Fprint(f.IOStreams.Out, Format(version, buildDate)) 18 }, 19 } 20 21 cmdutil.DisableAuthCheck(cmd) 22 23 return cmd 24 } 25 26 func Format(version, buildDate string) string { 27 version = strings.TrimPrefix(version, "v") 28 29 var dateStr string 30 if buildDate != "" { 31 dateStr = fmt.Sprintf(" (%s)", buildDate) 32 } 33 34 return fmt.Sprintf("gh version %s%s\n%s\n", version, dateStr, changelogURL(version)) 35 } 36 37 func changelogURL(version string) string { 38 path := "https://github.com/secman-team/gh-api" 39 r := regexp.MustCompile(`^v?\d+\.\d+\.\d+(-[\w.]+)?$`) 40 if !r.MatchString(version) { 41 return fmt.Sprintf("%s/releases/latest", path) 42 } 43 44 url := fmt.Sprintf("%s/releases/tag/v%s", path, strings.TrimPrefix(version, "v")) 45 return url 46 }