Makefile 3.7 KB
Newer Older
LinuxSuRen's avatar
LinuxSuRen 已提交
1 2 3 4
NAME := jcli
CGO_ENABLED = 0
GO := go
BUILD_TARGET = build
LinuxSuRen's avatar
LinuxSuRen 已提交
5
COMMIT := $(shell git rev-parse --short HEAD)
6
# CHANGE_LOG := $(shell echo -n "$(shell hub release show $(shell hub release --include-drafts -L 1))" | base64)
LinuxSuRen's avatar
LinuxSuRen 已提交
7
VERSION := dev-$(shell git describe --tags $(shell git rev-list --tags --max-count=1))
8
BUILDFLAGS = -ldflags "-X github.com/jenkins-zh/jenkins-cli/app.version=$(VERSION) -X github.com/jenkins-zh/jenkins-cli/app.commit=$(COMMIT)"
LinuxSuRen's avatar
LinuxSuRen 已提交
9
COVERED_MAIN_SRC_FILE=./main
LinuxSuRen's avatar
LinuxSuRen 已提交
10
PATH  := $(PATH):$(PWD)/bin
LinuxSuRen's avatar
LinuxSuRen 已提交
11

12 13 14 15 16 17 18
gen-mock:
	go get github.com/golang/mock/gomock
	go install github.com/golang/mock/mockgen
	mockgen -destination ./mock/mhttp/roundtripper.go -package mhttp net/http RoundTripper

init: gen-mock

19
darwin: gen-data
LinuxSuRen's avatar
LinuxSuRen 已提交
20
	GO111MODULE=on CGO_ENABLED=$(CGO_ENABLED) GOOS=darwin GOARCH=amd64 $(GO) $(BUILD_TARGET) $(BUILDFLAGS) -o bin/darwin/$(NAME) $(MAIN_SRC_FILE)
LinuxSuRen's avatar
LinuxSuRen 已提交
21
	chmod +x bin/darwin/$(NAME)
22
	rm -rf jcli && ln -s bin/darwin/$(NAME) jcli
LinuxSuRen's avatar
LinuxSuRen 已提交
23

24
linux: gen-data
LinuxSuRen's avatar
LinuxSuRen 已提交
25 26
	CGO_ENABLED=$(CGO_ENABLED) GOOS=linux GOARCH=amd64 $(GO) $(BUILD_TARGET) $(BUILDFLAGS) -o bin/linux/$(NAME) $(MAIN_SRC_FILE)
	chmod +x bin/linux/$(NAME)
LinuxSuRen's avatar
LinuxSuRen 已提交
27

28
win: gen-data
LinuxSuRen's avatar
LinuxSuRen 已提交
29 30 31 32 33 34
	go get github.com/inconshreveable/mousetrap
	go get github.com/mattn/go-isatty
	CGO_ENABLED=$(CGO_ENABLED) GOOS=windows GOARCH=386 $(GO) $(BUILD_TARGET) $(BUILDFLAGS) -o bin/windows/$(NAME).exe $(MAIN_SRC_FILE)

build-all: darwin linux win

35
release: build-all
LinuxSuRen's avatar
LinuxSuRen 已提交
36
	mkdir release
LinuxSuRen's avatar
LinuxSuRen 已提交
37 38 39
	cd ./bin/darwin; upx jcli; tar -zcvf ../../release/jcli-darwin-amd64.tar.gz jcli; cd ../../release/; shasum -a 256 jcli-darwin-amd64.tar.gz > jcli-darwin-amd64.txt
	cd ./bin/linux; upx jcli; tar -zcvf ../../release/jcli-linux-amd64.tar.gz jcli; cd ../../release/; shasum -a 256 jcli-linux-amd64.tar.gz > jcli-linux-amd64.txt
	cd ./bin/windows; upx jcli.exe; tar -zcvf ../../release/jcli-windows-386.tar.gz jcli.exe; cd ../../release/; shasum -a 256 jcli-windows-386.tar.gz > jcli-windows-386.txt
LinuxSuRen's avatar
LinuxSuRen 已提交
40 41

clean: ## Clean the generated artifacts
LinuxSuRen's avatar
LinuxSuRen 已提交
42
	rm -rf bin release
LinuxSuRen's avatar
LinuxSuRen 已提交
43 44 45 46
	rm -rf coverage.out
	rm -rf app/cmd/test-app.xml
	rm -rf app/test-app.xml
	rm -rf util/test-utils.xml
LinuxSuRen's avatar
LinuxSuRen 已提交
47

48 49 50
copy: darwin
	sudo cp bin/darwin/$(NAME) $(shell which jcli)

51 52 53
copy-linux: linux
	cp bin/linux/$(NAME) /usr/local/bin/jcli

54
tools: i18n-tools
LinuxSuRen's avatar
LinuxSuRen 已提交
55 56
	go get -u golang.org/x/lint/golint

57
i18n-tools:
58
	go get -u github.com/gosexy/gettext/go-xgettext
59 60 61 62 63 64 65
# 	go get -u github.com/go-bindata/go-bindata/...
# 	go get -u github.com/kevinburke/go-bindata/...

go-bindata-download-linux:
	mkdir -p bin
	curl -L https://github.com/kevinburke/go-bindata/releases/download/v3.11.0/go-bindata-linux-amd64 -o bin/go-bindata
	chmod u+x bin/go-bindata
66

67 68 69
gen-data-linux: go-bindata-download-linux
	cd app/i18n && ../../bin/go-bindata -o bindata.go -pkg i18n jcli/zh_CN/LC_MESSAGES/

LinuxSuRen's avatar
LinuxSuRen 已提交
70 71
verify:
	go vet ./...
72 73 74 75 76 77 78 79 80 81 82
	golint -set_exit_status app/cmd/...
	golint -set_exit_status app/helper/...
	golint -set_exit_status app/i18n/i18n.go
	golint -set_exit_status app/.
	golint -set_exit_status client/...
	golint -set_exit_status util/...

fmt:
	go fmt ./util/...
	go fmt ./client/...
	go fmt ./app/...
LinuxSuRen's avatar
LinuxSuRen 已提交
83

84
test: verify fmt
85
	mkdir -p bin
86
	go vet ./...
87
	go test ./... -v -coverprofile coverage.out
LinuxSuRen's avatar
LinuxSuRen 已提交
88

LinuxSuRen's avatar
LinuxSuRen 已提交
89 90
dep:
	go get github.com/AlecAivazis/survey/v2
LinuxSuRen's avatar
LinuxSuRen 已提交
91 92 93 94
	go get github.com/gosuri/uiprogress
	go get github.com/spf13/cobra
	go get github.com/spf13/viper
	go get gopkg.in/yaml.v2
LinuxSuRen's avatar
LinuxSuRen 已提交
95
	go get github.com/Pallinder/go-randomdata
96

97 98 99 100 101
JCLI_FILES="app/cmd/*.go"
gettext:
	go-xgettext -k=i18n.T "${JCLI_FILES}" > app/i18n/jcli.pot

gen-data:
LinuxSuRen's avatar
LinuxSuRen 已提交
102
	cd app/i18n && go-bindata -o bindata.go -pkg i18n jcli/zh_CN/LC_MESSAGES/
LinuxSuRen's avatar
LinuxSuRen 已提交
103 104 105

image:
	docker build . -t jenkinszh/jcli
106 107

image-win:
108
	docker build . -t jenkinszh/jcli:win -f Dockerfile-win
109 110

image-darwin:
111 112 113 114
	docker build . -t jenkinszh/jcli:darwin -f Dockerfile-darwin

image-dev:
	docker build . -t jenkinszh/jcli:dev -f Docker-dev