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 APPS=configui default: build install: npm install clean: rm -rf dist run: build $(shell cd dist; ./${PROJ} -log configui.log) .PHONY: web web: npm run build # npm run js-dev .PHONY: build build: web go build ${LDFLAGS} -o dist/${PROJ} cmd/$(PROJ)/main.go build-unix: $(foreach GOOS, $(PLATFORMS), $(foreach GOARCH, $(ARCHITECTURES), $(foreach APP, $(APPS),\ $(shell export GOOS=$(GOOS); export GOARCH=$(GOARCH); go build ${LDFLAGS} -o dist/$(APP) cmd/$(APP)/main.go) \ $(shell cd dist; tar -czf ${APP}_$(VERSION)_$(GOOS)_$(GOARCH).tar.gz ${APP}) \ $(shell rm dist/${APP}) \ ))) build-win: $(foreach APP, $(APPS), \ $(shell export GOOS=windows; export GOARCH=amd64; go build ${LDFLAGS} -o dist/${APP}.exe cmd/$(APP)/main.go) \ $(shell cd dist; tar -czf ${APP}_$(VERSION)_windows_amd64.tar.gz ${APP}.exe) \ $(shell rm dist/${APP}.exe) \ ) build-mac-m1: $(foreach APP, $(APPS),\ $(shell export GOOS=darwin; export GOARCH=arm64; go build ${LDFLAGS} -o dist/$(APP) cmd/$(APP)/main.go) \ $(shell cd dist; tar -czf ${APP}_$(VERSION)_darwin_arm64.tar.gz ${APP}) \ $(shell rm dist/${APP}) \ ) .PHONY: binary binary: build-unix build-win build-mac-m1 .PHONY: docker 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 .PHONY: release release: clean web binary docker docker-save