Makefile
raw ยท 1522 bytes
include build.env
-include build.env.work
export
OUT_DIR := out
BIN_DIR := bin
IMAGE_NAME ?= penguinade/flatgit
IMAGE_TAG ?= dev
VERSION ?= dev
GIT_REV := $(shell git rev-parse HEAD)
BUILDINFO_FILE := internal/buildinfo/buildinfo_gen.go
BUILDX_BUILDER ?= container-builder
all: test build
ensure-buildx:
@if ! docker buildx inspect $(BUILDX_BUILDER) >/dev/null 2>&1; then \
echo "Creating buildx builder $(BUILDX_BUILDER)..."; \
docker buildx create \
--name $(BUILDX_BUILDER) \
--driver docker-container \
--driver-opt network=host \
--bootstrap --use; \
else \
echo "Using existing buildx builder $(BUILDX_BUILDER)"; \
docker buildx use $(BUILDX_BUILDER); \
fi
.buildinfo:
@mkdir -p $(dir $(BUILDINFO_FILE))
@printf '%s\n' \
'package buildinfo' \
'' \
'const (' \
' Version = "$(VERSION)"' \
' GitRevision = "$(GIT_REV)"' \
' Timestamp = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \
')' \
> $(BUILDINFO_FILE)
build: .buildinfo
mkdir -p "$(OUT_DIR)" "$(BIN_DIR)"
go build -o "$(BIN_DIR)/flatgit" ./cmd/flatgit
push: .buildinfo
docker buildx build \
--platform linux/amd64,linux/arm64 \
--build-arg APT_PROXY=$(APT_PROXY) \
-f dockerfiles/runtime.Dockerfile \
-t $(IMAGE_NAME):$(IMAGE_TAG) \
--push .
test:
go test ./...
fmt:
gofmt -w ./cmd ./internal
run: build
$(BIN_DIR)/flatgit daemon -c examples/tinyproxy.json
vet:
go vet ./...
clean:
rm -f "$(BIN_DIR)/flatgit"
rm -rf dist
.PHONY: all build test fmt vet clean run push ensure-buildx