warren/cmd_build.go

52 lines
1.1 KiB
Go
Raw Normal View History

package main
2014-12-09 07:54:35 +00:00
import (
"fmt"
"log"
2014-12-09 16:07:27 +00:00
"os"
2014-12-09 07:54:35 +00:00
"os/exec"
2014-12-10 06:43:10 +00:00
"strings"
"time"
2014-12-09 07:54:35 +00:00
)
2014-12-10 06:43:10 +00:00
var buildUsage = `
warren build - Runs go build and populates the following variables:
Build.GitBranch
Build.GitHash
Build.Date
`
var buildCmd = &Command{
Name: "build",
Usage: "",
Summary: "build the go server in the current directory",
2014-12-10 06:43:10 +00:00
Help: buildUsage,
Run: buildRun,
}
func buildRun(cmd *Command, args ...string) {
2014-12-10 06:43:10 +00:00
if len(args) > 0 && args[0] == "help" {
fmt.Print(cmd.Help)
return
}
githash, err := exec.Command("git", "rev-parse", "HEAD").Output()
if err != nil {
log.Fatal(err)
}
gitbranchb, err := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD").Output()
if err != nil {
log.Fatal(err)
}
gitbranch := strings.TrimSpace(string(gitbranchb))
date := time.Now().Format(time.RFC3339)
gobuild := exec.Command("go", "build", "-ldflags", fmt.Sprintf("-X main.Build.Date %s -X main.Build.GitHash %s -X main.Build.GitBranch %s\"", date, githash, gitbranch))
gobuild.Stderr = os.Stderr
gobuild.Stdout = os.Stdout
err = gobuild.Run()
2014-12-09 07:54:35 +00:00
if err != nil {
log.Fatal(err)
}
}