1.PHONY: all deps osxkeychain secretservice test validate wincred pass deb
2
3TRAVIS_OS_NAME ?= linux
4VERSION := $(shell grep 'const Version' credentials/version.go | awk -F'"' '{ print $$2 }')
5
6all: test
7
8deps:
9	go get -u golang.org/x/lint/golint
10
11clean:
12	rm -rf bin
13	rm -rf release
14
15osxkeychain:
16	mkdir -p bin
17	go build -ldflags -s -o bin/docker-credential-osxkeychain osxkeychain/cmd/main_darwin.go
18
19osxcodesign: osxkeychain
20	$(eval SIGNINGHASH = $(shell security find-identity -v -p codesigning | grep "Developer ID Application: Docker Inc" | cut -d ' ' -f 4))
21	xcrun -log codesign -s $(SIGNINGHASH) --force --verbose bin/docker-credential-osxkeychain
22	xcrun codesign --verify --deep --strict --verbose=2 --display bin/docker-credential-osxkeychain
23
24osxrelease: clean vet_osx lint fmt test osxcodesign
25	mkdir -p release
26	@echo "\nPackaging version ${VERSION}\n"
27	cd bin && tar cvfz ../release/docker-credential-osxkeychain-v$(VERSION)-amd64.tar.gz docker-credential-osxkeychain
28
29secretservice:
30	mkdir -p bin
31	go build -o bin/docker-credential-secretservice secretservice/cmd/main_linux.go
32
33pass:
34	mkdir -p bin
35	go build -o bin/docker-credential-pass pass/cmd/main_linux.go
36
37wincred:
38	mkdir -p bin
39	go build -o bin/docker-credential-wincred.exe wincred/cmd/main_windows.go
40
41winrelease: clean vet_win lint fmt test wincred
42	mkdir -p release
43	@echo "\nPackaging version ${VERSION}\n"
44	cd bin && zip ../release/docker-credential-wincred-v$(VERSION)-amd64.zip docker-credential-wincred.exe
45
46test:
47	# tests all packages except vendor
48	go test -v `go list ./... | grep -v /vendor/`
49
50vet: vet_$(TRAVIS_OS_NAME)
51	go vet ./credentials
52
53vet_win:
54	go vet ./wincred
55
56vet_osx:
57	go vet ./osxkeychain
58
59vet_linux:
60	go vet ./secretservice
61
62lint:
63	for p in `go list ./... | grep -v /vendor/`; do \
64		golint $$p ; \
65	done
66
67fmt:
68	gofmt -s -l `ls **/*.go | grep -v vendor`
69
70validate: vet lint fmt
71
72
73BUILDIMG:=docker-credential-secretservice-$(VERSION)
74deb:
75	mkdir -p release
76	docker build -f deb/Dockerfile \
77		--build-arg VERSION=$(VERSION) \
78		--build-arg DISTRO=xenial \
79		--tag $(BUILDIMG) \
80		.
81	docker run --rm --net=none $(BUILDIMG) tar cf - /release | tar xf -
82	docker rmi $(BUILDIMG)
83