@@ -33,9 +33,20 @@ func boolToIntString(b bool) string {
3333 return map [bool ]string {true : "1" , false : "0" }[b ]
3434}
3535
36- func (g * Go ) Build (target , output string ) error {
36+ func (g * Go ) Build () error {
3737 envs := map [string ]string {"GOOS" : g .OS , "GOARCH" : g .Arch , "CGO_ENABLED" : g .CGoEnabled , "MAGEFILE_VERBOSE" : g .Verbose }
38- return sh .RunWithV (envs , "go" , "build" , "-a" , "-o" , output , "--ldflags=" + g .versionFlag (), target )
38+ return sh .RunWithV (envs , "go" , "build" , "-a" , "-o" , g .output (), "--ldflags=" + g .versionFlag (), "main.go" )
39+ }
40+
41+ func (g * Go ) output () string {
42+ version := strings .Split (g .Version , "+" )[0 ]
43+ prefix := fmt .Sprintf ("dist/corral-%s" , version )
44+ if g .OS == "windows" {
45+ return prefix + ".exe"
46+ } else if g .OS == "linux" {
47+ return prefix + "-" + g .Arch
48+ }
49+ return prefix + "-" + g .OS + "-" + g .Arch
3950}
4051
4152func (g * Go ) Test (coverpkg string , targets ... string ) error {
@@ -80,14 +91,22 @@ func (g *Go) Lint(targets ...string) error {
8091}
8192
8293func (g * Go ) versionFlag () string {
83- return fmt .Sprintf (`-X 'github.com/rancherlabs/corral/pkg/versionFlag .Version=%s'` , g .Version )
94+ return fmt .Sprintf (`-X 'github.com/rancherlabs/corral/pkg/version .Version=%s'` , g .Version )
8495}
8596
97+ var ErrDirtyRepo = errors .New ("encountered dirty repo" )
98+
8699func GetCommit () (string , error ) {
87100 result , err := sh .Output ("git" , "rev-parse" , "--short" , "HEAD" )
88101 if err != nil {
89102 return "" , err
90103 }
104+ if err = IsGitClean (); err != nil {
105+ if ! errors .Is (err , ErrDirtyRepo ) {
106+ return "" , err
107+ }
108+ result += "-dirty"
109+ }
91110 return strings .TrimSpace (result ), nil
92111}
93112
@@ -97,7 +116,7 @@ func IsGitClean() error {
97116 return err
98117 }
99118 if result != "" {
100- return errors . New ( "encountered dirty repo" )
119+ return ErrDirtyRepo
101120 }
102121 return nil
103122}
0 commit comments