@@ -3,16 +3,14 @@ package cmd
33
44import (
55 "fmt"
6+ "runtime/debug"
67
78 "github.com/urfave/cli/v2"
89)
910
10- var versionTmpl = `commitlint version %s - built from %s on %s
11- `
12-
1311// New returns commitlint cli.App
1412func New (versionNo , commitHash , builtTime string ) * cli.App {
15- versionInfo := fmt . Sprintf ( versionTmpl , versionNo , commitHash , builtTime )
13+ versionInfo := formVersionInfo ( versionNo , commitHash , builtTime )
1614
1715 cmds := []* cli.Command {
1816 createCmd (),
@@ -121,3 +119,32 @@ func verifyCmd() *cli.Command {
121119 Action : verifyCallback ,
122120 }
123121}
122+
123+ func formVersionInfo (versionInfo , commitInfo , buildTime string ) string {
124+ versionTmpl := `commitlint version %s - built from %s on %s
125+ `
126+ versionInfo , commitInfo , buildTime = getVersionInfo (versionInfo , commitInfo , buildTime )
127+ return fmt .Sprintf (versionTmpl , versionInfo , commitInfo , buildTime )
128+ }
129+
130+ func getVersionInfo (version , commit , build string ) (versionInfo , commitInfo , buildTime string ) {
131+ if build != "" {
132+ return version , commit , build
133+ }
134+
135+ info , ok := debug .ReadBuildInfo ()
136+ if ! ok {
137+ return "master" , "unknown" , "unknown"
138+ }
139+
140+ checkSum := "unknown"
141+ if info .Main .Sum != "" {
142+ checkSum = info .Main .Sum
143+ }
144+
145+ versionInfo = info .Main .Version
146+ commitInfo = "(" + "checksum: " + checkSum + ")"
147+ buildTime = "unknown"
148+
149+ return versionInfo , commitInfo , buildTime
150+ }
0 commit comments