From ad21f3e0cbe544813853a55057ebc7b460b1f690 Mon Sep 17 00:00:00 2001 From: Camilo Aguilar Date: Sat, 12 Sep 2015 15:50:34 -0400 Subject: [PATCH] Adds infrastructure to release gowsdl binaries. --- .gitignore | 1 + Makefile | 10 ++++++++ cmd/{gowsdl/main.go => gowsdl.go} | 25 ++++++++++-------- common.mk | 42 +++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 Makefile rename cmd/{gowsdl/main.go => gowsdl.go} (85%) create mode 100644 common.mk diff --git a/.gitignore b/.gitignore index aecb190..b45b474 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ ./gowsdl myservice +build diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..82583e8 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +GHACCOUNT := hooklift +NAME := gowsdl +VERSION := v0.1.0 + +include common.mk + +deps: + go get github.com/c4milo/github-release + go get github.com/mitchellh/gox + go get github.com/hooklift/assert diff --git a/cmd/gowsdl/main.go b/cmd/gowsdl.go similarity index 85% rename from cmd/gowsdl/main.go rename to cmd/gowsdl.go index 3a7b2ce..b3e167d 100644 --- a/cmd/gowsdl/main.go +++ b/cmd/gowsdl.go @@ -49,21 +49,24 @@ package main import ( "bytes" "flag" + "fmt" "go/format" "log" "os" - "fmt" gen "github.com/hooklift/gowsdl" ) -const version = "v0.0.1" +// Version is initialized in compilation time by go build. +var Version string + +// Name is initialized in compilation time by go build. +var Name string var vers = flag.Bool("v", false, "Shows gowsdl version") var pkg = flag.String("p", "myservice", "Package under which code will be generated") var outFile = flag.String("o", "myservice.go", "File where the generated code will be saved") - func init() { log.SetFlags(0) log.SetOutput(os.Stdout) @@ -72,15 +75,15 @@ func init() { func main() { flag.Usage = func() { - fmt.Fprintf(os.Stderr, "Usage: %s [options] myservice.wsdl\n", os.Args[0]) - flag.PrintDefaults() + fmt.Fprintf(os.Stderr, "Usage: %s [options] myservice.wsdl\n", os.Args[0]) + flag.PrintDefaults() } flag.Parse() // Show app version if *vers { - log.Println(version) + log.Println(Version) os.Exit(0) } @@ -96,7 +99,7 @@ func main() { } // load wsdl - gowsdl, err := gen.NewGoWsdl(wsdlPath, *pkg, false) + gowsdl, err := gen.NewGoWSDL(wsdlPath, *pkg, false) if err != nil { log.Fatalln(err) } @@ -110,11 +113,11 @@ func main() { pkg := "./" + *pkg err = os.Mkdir(pkg, 0744) - fd, err := os.Create(pkg + "/" + *outFile) + file, err := os.Create(pkg + "/" + *outFile) if err != nil { log.Fatalln(err) } - defer fd.Close() + defer file.Close() data := new(bytes.Buffer) data.Write(gocode["header"]) @@ -125,11 +128,11 @@ func main() { // go fmt the generated code source, err := format.Source(data.Bytes()) if err != nil { - fd.Write(data.Bytes()) + file.Write(data.Bytes()) log.Fatalln(err) } - fd.Write(source) + file.Write(source) log.Println("Done 💩") } diff --git a/common.mk b/common.mk new file mode 100644 index 0000000..95671c1 --- /dev/null +++ b/common.mk @@ -0,0 +1,42 @@ +PLATFORM := $(shell go env | grep GOHOSTOS | cut -d '"' -f 2) +ARCH := $(shell go env | grep GOARCH | cut -d '"' -f 2) +BRANCH := $(shell git rev-parse --abbrev-ref HEAD) +LDFLAGS := -ldflags "-X main.Version=$(VERSION) -X main.Name=$(NAME)" + +test: + go test ./... + +build: + go build -o build/$(NAME) $(LDFLAGS) cmd/$(NAME).go + +install: + go install $(LDFLAGS) + +compile: + @rm -rf build/ + @gox $(LDFLAGS) \ + -os="darwin" \ + -os="linux" \ + -os="solaris" \ + -os="freebsd" \ + -output "build/$(NAME)_$(VERSION)_{{.OS}}_{{.Arch}}/$(NAME)" \ + ./... + +dist: compile + $(eval FILES := $(shell ls build)) + @rm -rf dist && mkdir dist + @for f in $(FILES); do \ + (cd $(shell pwd)/build/$$f && tar -cvzf ../../dist/$$f.tar.gz *); \ + (cd $(shell pwd)/dist && shasum -a 512 $$f.tar.gz > $$f.sha512); \ + echo $$f; \ + done + +release: dist + @latest_tag=$$(git describe --tags `git rev-list --tags --max-count=1`); \ + comparison="$$latest_tag..HEAD"; \ + if [ -z "$$latest_tag" ]; then comparison=""; fi; \ + changelog=$$(git log $$comparison --oneline --no-merges --reverse); \ + github-release $(GHACCOUNT)/$(NAME) $(VERSION) $(BRANCH) "**Changelog**
$$changelog" 'dist/*'; \ + git pull + +.PHONY: test build install compile deps dist release