66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
SHELL := /bin/bash
 | 
						|
 | 
						|
VERSION=$(shell git describe --tags --abbrev=0)
 | 
						|
BUILD=$(shell git rev-parse --short HEAD)
 | 
						|
PROJ := $(shell basename "$(PWD)")
 | 
						|
HUB=hub.kumoly.io
 | 
						|
HUB_PROJECT=tools
 | 
						|
 | 
						|
LDFLAGS=-ldflags "-X main.Version=${VERSION} -X main.Build=${BUILD} -w"
 | 
						|
PLATFORMS=darwin linux
 | 
						|
ARCHITECTURES=amd64
 | 
						|
 | 
						|
default: build
 | 
						|
 | 
						|
install:
 | 
						|
	go mod tidy
 | 
						|
	go mod download
 | 
						|
 | 
						|
clean:
 | 
						|
	rm -rf dist
 | 
						|
 | 
						|
.PHONY: basic
 | 
						|
basic:
 | 
						|
	go build ${LDFLAGS} -o dist/myip-basic basic/main.go
 | 
						|
 | 
						|
build:
 | 
						|
	go build ${LDFLAGS} -o dist/myip
 | 
						|
 | 
						|
build-unix:
 | 
						|
	$(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), \
 | 
						|
	$(shell export GOOS=$(GOOS); export GOARCH=$(GOARCH); go build ${LDFLAGS} -o dist/$(PROJ)_$(VERSION)_$(GOOS)_$(GOARCH)/$(PROJ))))
 | 
						|
 | 
						|
	$(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), \
 | 
						|
	$(shell export GOOS=$(GOOS); export GOARCH=$(GOARCH); go build ${LDFLAGS} -o dist/$(PROJ)-basic_$(VERSION)_$(GOOS)_$(GOARCH)/$(PROJ)-basic basic/main.go)))
 | 
						|
 | 
						|
build-win:
 | 
						|
	$(shell export GOOS=windows; export GOARCH=amd64; go build ${LDFLAGS} -o dist/$(PROJ)_$(VERSION)_windows_amd64/$(PROJ).exe)
 | 
						|
	$(shell export GOOS=windows; export GOARCH=amd64; go build ${LDFLAGS} -o dist/$(PROJ)-basic_$(VERSION)_windows_amd64/$(PROJ)-basic.exe basic/main.go)
 | 
						|
 | 
						|
build-mac-m1:
 | 
						|
	$(shell export GOOS=darwin; export GOARCH=arm64; go build ${LDFLAGS} -o dist/$(PROJ)_$(VERSION)_darwin_arm64/$(PROJ))
 | 
						|
	$(shell export GOOS=darwin; export GOARCH=arm64; go build ${LDFLAGS} -o dist/$(PROJ)-basic_$(VERSION)_darwin_arm64/$(PROJ)-basic basic/main.go)
 | 
						|
 | 
						|
build-zip:
 | 
						|
	cd dist; for f in * ;do if ! [[ $$f =~ "gz" ]] ; then tar -czf $${f}.tar.gz $${f}; fi done
 | 
						|
 | 
						|
binary: build-unix build-win build-mac-m1
 | 
						|
 | 
						|
docker:
 | 
						|
	docker build --target builder -t $(HUB)/$(HUB_PROJECT)/$(PROJ):builder .
 | 
						|
	docker build \
 | 
						|
	-t $(HUB)/$(HUB_PROJECT)/$(PROJ):$(VERSION) \
 | 
						|
	.
 | 
						|
 | 
						|
docker-push:
 | 
						|
	docker tag $(HUB)/$(HUB_PROJECT)/$(PROJ):$(VERSION) $(HUB)/$(HUB_PROJECT)/$(PROJ):latest
 | 
						|
	docker push $(HUB)/$(HUB_PROJECT)/$(PROJ):$(VERSION)
 | 
						|
	docker push $(HUB)/$(HUB_PROJECT)/$(PROJ):latest
 | 
						|
 | 
						|
docker-save:
 | 
						|
	docker save $(HUB)/$(HUB_PROJECT)/$(PROJ):$(VERSION) | gzip > dist/$(PROJ)-image-$(VERSION)-${BUILD}.tar.gz
 | 
						|
 | 
						|
 | 
						|
release: clean binary build-zip docker docker-save docker-push
 | 
						|
 | 
						|
.PHONY: build docker release clean all binary install |