From 9b5238af59cbec893e8dd876b2940d179de28035 Mon Sep 17 00:00:00 2001 From: Sebastian Hugentobler Date: Wed, 29 May 2019 18:35:50 +0200 Subject: [PATCH] update build process --- .gitignore | 1 + Makefile | 65 ++++++++++++++++++++++++++++-------------- cmd/ecload-tui/main.go | 3 ++ cmd/ecload/main.go | 5 +++- go.mod | 5 ++++ go.sum | 18 ++++++++++++ 6 files changed, 74 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index 03cd335..0fe40db 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ **/.idea/tasks.xml *.pdf bin/ +dist/ diff --git a/Makefile b/Makefile index 4f38d38..4a8d332 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,46 @@ -.PHONY: all -all: bin/ecload bin/ecload.exe bin/ecload-mac bin/ecload-tui bin/ecload-tui.exe bin/ecload-tui-mac +BINARIES=ecload ecload-tui + +VERSION=0.1.0 +BUILD:=`git rev-parse HEAD` + +PLATFORMS=linux darwin windows +ARCHITECTURES=386 amd64 + +LDFLAGS=-ldflags "-s -X main.Version=${VERSION} -X main.Build=${BUILD}" + +define BUILDER +bin/%/$(TARGET): cmd/$(TARGET)/*.go pkg/ecload/*.go + GOOS=$$(patsubst %/,%,$$(dir $$*)) GOARCH=$$(notdir $$*) go build $(LDFLAGS) -v -o $$@ cmd/$(TARGET)/main.go +endef + +$(foreach TARGET,$(BINARIES),$(eval $(BUILDER))) + +dist/%.tar.gz: + @mkdir -p ./dist + + $(eval TMP := $(shell mktemp -d)) + + $(eval SANE=$(subst -,/,$*)) + $(eval INPUT=bin/$(SANE)/) + $(eval PLATFORM=$(patsubst %/,%,$(dir $(SANE)))) + + @cp -r $(INPUT)* $(TMP) + + @if [ "$(PLATFORM)" == "windows" ]; then \ + for FILE in $(TMP)/*; do mv $$FILE $$FILE.exe; done \ + fi + + tar -zcf $@ -C $(TMP) . + + @rm -rf $(TMP) + +dist: binaries $(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), dist/$(GOOS)-$(GOARCH).tar.gz)) +binaries: $(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), $(foreach BINARY, $(BINARIES), bin/$(GOOS)/$(GOARCH)/$(BINARY)))) + +all: dist -.PHONY: clean clean: - rm -r bin/ - go clean ./cmd/ecload/ ./cmd/ecload-tui/ ./pkg/ecload/ + rm -rf bin/ dist/ + go clean ./cmd/ecload ./cmd/ecload-tui ./pkg/ecload -bin/ecload: cmd/ecload/*.go pkg/ecload/*.go - GOOS=linux GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go - -bin/ecload.exe: cmd/ecload/*.go pkg/ecload/*.go - GOOS=windows GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go - -bin/ecload-mac: cmd/ecload/*.go pkg/ecload/*.go - GOOS=darwin GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload/main.go - -bin/ecload-tui: cmd/ecload-tui/*.go pkg/ecload/*.go - GOOS=linux GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go - -bin/ecload-tui.exe: cmd/ecload-tui/*.go pkg/ecload/*.go - GOOS=windows GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go - -bin/ecload-tui-mac: cmd/ecload-tui/*.go pkg/ecload/*.go - GOOS=darwin GOARCH=amd64 go build -ldflags '-s' -v -o $@ cmd/ecload-tui/main.go +.PHONY: all clean binaries dist diff --git a/cmd/ecload-tui/main.go b/cmd/ecload-tui/main.go index 8712bd2..9dd593d 100644 --- a/cmd/ecload-tui/main.go +++ b/cmd/ecload-tui/main.go @@ -16,6 +16,9 @@ import ( "ecload/pkg/ecload" ) +var Version string +var Build string + const THEME = "//----------------- Theme properties -----------------" + "//----------------- Colors -----------------" + "// View colors - internal area and border" + diff --git a/cmd/ecload/main.go b/cmd/ecload/main.go index e991e9b..66c9e7a 100644 --- a/cmd/ecload/main.go +++ b/cmd/ecload/main.go @@ -13,11 +13,14 @@ import ( "ecload/pkg/ecload" ) +var Version string +var Build string + func main() { logger := ecload.InitLogger(ioutil.Discard, os.Stdout, os.Stdout, os.Stderr) app := cli.App("ecload", "Download books from https://www.e-codices.unifr.ch") - app.Version("v version", "0.1.0") + app.Version("v version", Version) app.Spec = "[-o=] [-s=] ID" diff --git a/go.mod b/go.mod index 0c6035f..41d5b33 100644 --- a/go.mod +++ b/go.mod @@ -7,11 +7,16 @@ require ( github.com/VladimirMarkelov/clui v1.2.0 github.com/atotto/clipboard v0.1.2 // indirect github.com/gizak/termui/v3 v3.0.0 // indirect + github.com/google/pprof v0.0.0-20190515194954-54271f7e092f // indirect github.com/huandu/xstrings v1.2.0 // indirect + github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 // indirect github.com/jawher/mow.cli v1.1.0 github.com/jroimartin/gocui v0.4.0 // indirect github.com/jung-kurt/gofpdf v1.4.2 github.com/mattn/go-runewidth v0.0.4 // indirect github.com/nsf/termbox-go v0.0.0-20190325093121-288510b9734e // indirect github.com/shibukawa/configdir v0.0.0-20170330084843-e180dbdc8da0 + golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f // indirect + golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 // indirect + golang.org/x/tools v0.0.0-20190529010454-aa71c3f32488 // indirect ) diff --git a/go.sum b/go.sum index defaf36..d8f9cd2 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,12 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/gizak/termui/v3 v3.0.0 h1:NYTUG6ig/sJK05O5FyhWemwlVPO8ilNpvS/PgRtrKAE= github.com/gizak/termui/v3 v3.0.0/go.mod h1:uinu2dMdtMI+FTIdEFUJQT5y+KShnhQRshvPblXq3lY= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/jawher/mow.cli v1.1.0 h1:NdtHXRc0CwZQ507wMvQ/IS+Q3W3x2fycn973/b8Zuk8= github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg= github.com/jroimartin/gocui v0.4.0 h1:52jnalstgmc25FmtGcWqa0tcbMEWS6RpFLsOIO+I+E8= @@ -38,9 +42,23 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045 h1:Pn8fQdvx+z1avAi7fdM2kRYWQNxGlavNDSyzrQg2SsU= golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f h1:R423Cnkcp5JABoeemiGEPlt9tHXFfw5kvc0yqlxRPWo= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/image v0.0.0-20190507092727-e4e5bf290fec/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a h1:gOpx8G595UYyvj8UK4+OFyY4rx037g3fmfhe5SasG3U= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 h1:2WjIC11WRITGlVWmyLXKjzIVj1ZwoWZ//tadeUUV6/o= +golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190529010454-aa71c3f32488 h1:vBgi/AgEje1rNScpWGJqe+RPHHZvBqrk9UH+LOXWN6Q= +golang.org/x/tools v0.0.0-20190529010454-aa71c3f32488/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=