Files
scratchbox/Makefile
T
s1d3sw1ped 34fd1a5a4d
CI / Go Tests (push) Failing after 26s
CI / Build (push) Successful in 15s
Format / gofmt (push) Successful in 5s
Add Docker support with Dockerfile, entrypoint script, and CI workflows
- Introduced a Dockerfile for building the application with Go and Node.js dependencies.
- Added a docker-entrypoint.sh script to manage container execution.
- Created a .dockerignore file to exclude unnecessary files from the Docker context.
- Updated Makefile to include a new target for building the Docker image.
- Added CI workflows for testing, formatting, and releasing artifacts in Gitea.
2026-06-01 02:03:17 -05:00

53 lines
1.4 KiB
Makefile

APP_NAME := scratchbox
CMD_DIR := ./cmd/scratchbox
BIN_DIR := ./bin
BIN := $(BIN_DIR)/$(APP_NAME)
CONFIG ?= config.yaml
DOCKER_IMAGE ?= scratchbox:dev
.PHONY: help run dev config build docker test test-race fmt clean
help:
@echo "Targets:"
@echo " make run - Alias for make dev"
@echo " make dev - Build and run server (CONFIG=$(CONFIG))"
@echo " make config - Write default config to $(CONFIG) and generate sibling config.key if missing"
@echo " make build - Build Svelte UI and binary to $(BIN)"
@echo " make docker - Build Docker image (DOCKER_IMAGE=$(DOCKER_IMAGE))"
@echo " make test - Run all Go tests with timeout and shuffle"
@echo " make test-race - Run all Go tests with race detector and timeout"
@echo " make fmt - Format Go code"
@echo " make clean - Remove built artifacts"
run: dev
dev: build
$(BIN) server --config $(CONFIG)
config:
mkdir -p "$(dir $(CONFIG))"
go run $(CMD_DIR) generate-config > "$(CONFIG)"
@if [ ! -f "$(dir $(CONFIG))config.key" ]; then \
go run $(CMD_DIR) generate-key > "$(dir $(CONFIG))config.key"; \
fi
build: clean
npm --prefix ./web/ui run build
mkdir -p $(BIN_DIR)
CGO_ENABLED=0 go build -o $(BIN) $(CMD_DIR)
docker:
docker build -t $(DOCKER_IMAGE) .
test:
go test -timeout 30s -shuffle=on ./...
test-race:
go test -race -timeout 30s -shuffle=on ./...
fmt:
go fmt ./...
clean:
rm -rf $(BIN_DIR)