VERSION := 1.1.5-beta-claude
BUILD := $(shell git rev-parse --short HEAD)

GO := go

BUILD_FLAGS := -buildmode=pie -trimpath
LDFLAGS := -linkmode=external -extldflags="-Wl,-z,relro,-z,now" -X git.nevets.tech/Keys/certman/common.Version=$(VERSION) -X git.nevets.tech/Keys/certman/common.Build=$(BUILD)

.PHONY: proto bundle client server executor build debug stage

proto:
	@protoc --go_out=./proto --go-grpc_out=./proto proto/hook.proto
	@protoc --go_out=./proto --go-grpc_out=./proto proto/symlink.proto

bundle: proto
	@echo "Building Bundled Certman"
	$(GO) build $(BUILD_FLAGS) -ldflags="-s -w $(LDFLAGS)" -o ./bin/certman-$(VERSION)-amd64 ./app/bundle

client: proto
	@echo "Building Certman Client"
	$(GO) build $(BUILD_FLAGS) -ldflags="-s -w $(LDFLAGS)" -o ./bin/certman-client-$(VERSION)-amd64 ./app/client

server: proto
	@echo "Building Certman Server"
	$(GO) build $(BUILD_FLAGS) -ldflags="-s -w $(LDFLAGS)" -o ./bin/certman-server-$(VERSION)-amd64 ./app/server

executor: proto
	@echo "Building Certman Executor"
	$(GO) build $(BUILD_FLAGS) -ldflags="-s -w $(LDFLAGS)" -o ./bin/certman-executor-$(VERSION)-amd64 ./app/executor

build: proto bundle client server executor
	@echo "All binaries successfully built"

debug: proto
	$(GO) build $(BUILD_FLAGS) -ldflags="$(LDFLAGS)" -o ./certman .
	@cp ./certman ./certman-$(VERSION)-amd64

stage: build
	@sudo cp ./certman /srv/vm-passthru/certman
	@ssh steven@192.168.122.44 updateCertman.sh