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  }