# Go specific stuff CGO_ENABLED := 0 GOOS := $(shell go env GOOS) GOARCH := $(shell go env GOARCH) # Build out TAG_NAME := $(shell git describe --abbrev=0 --exact-match 2> /dev/null || echo "main") COMMIT_HASH := $(shell git rev-parse HEAD) BUILD_TIMESTAMP := $(shell date '+%Y-%m-%dT%H:%M:%S') BIN_NAME := tinyauth-$(GOARCH) # Development vars DEV_COMPOSE := $(shell test -f "docker-compose.test.yml" && echo "docker-compose.test.yml" || echo "docker-compose.yml" ) PROD_COMPOSE := $(shell test -f "docker-compose.test.prod.yml" && echo "docker-compose.test.prod.yml" || echo "docker-compose.example.yml" ) # Deps deps: bun install --cwd frontend go mod download # Clean web UI build clean-webui: rm -rf internal/assets/dist rm -rf frontend/dist # Build the web UI webui: clean-webui bun run --cwd frontend build cp -r frontend/dist internal/assets # Build the binary binary: webui CGO_ENABLED=$(CGO_ENABLED) go build -ldflags "-s -w \ -X tinyauth/internal/config.Version=${TAG_NAME} \ -X tinyauth/internal/config.CommitHash=${COMMIT_HASH} \ -X tinyauth/internal/config.BuildTimestamp=${BUILD_TIMESTAMP}" \ -o ${BIN_NAME} ./cmd/tinyauth # Build for amd64 binary-linux-amd64: export BIN_NAME=tinyauth-amd64 export GOARCH=amd64 export GOOS=linux $(MAKE) binary # Build for arm64 binary-linux-arm64: export BIN_NAME=tinyauth-arm64 export GOARCH=arm64 export GOOS=linux $(MAKE) binary # Go test .PHONY: test test: go test -v ./... # Development develop: docker compose -f $(DEV_COMPOSE) up --force-recreate --pull=always --remove-orphans # Production prod: docker compose -f $(PROD_COMPOSE) up --force-recreate --pull=always --remove-orphans