Ctrl K
ComunidadGuías…

Makefile

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
GOLANGCI_LINT_VERSION := v2.12.2
GOLANGCI_LINT := $(CURDIR)/.bin/golangci-lint
GOLANGCI_LINT_CACHE := $(CURDIR)/.cache/golangci-lint
export GOLANGCI_LINT_CACHE

SHFMT_VERSION := v3.14.1
SHFMT := $(CURDIR)/.bin/shfmt
SHFMT_FLAGS := -ln posix -i 2 -ci
SHELL_SOURCES := $(wildcard web/client/*.sh web/scripts/*.sh)

.PHONY: dependencies dependencies-backend dependencies-frontend screenshots screenshots-docker \
	build build-backend build-frontend test test-backend test-frontend test-e2e test-e2e-docker \
	format format-backend format-frontend format-shell format-check \
	format-check-backend format-check-frontend format-check-shell lint lint-backend lint-frontend \
	vet check check-app tools clean docker config-check dev \
	docs-install docs-dev docs-check docs-build docs-preview format-shared format-check-shared format-check-docs

DEV_DIR := $(CURDIR)/.cache/dev
DEV_CONFIG := $(CURDIR)/config/config.dev.yaml
DEV_MASTER_KEY := $(DEV_DIR)/master-key
DEV_ADMIN_TOKEN := $(DEV_DIR)/admin-token

build: build-backend build-frontend

dependencies: dependencies-backend dependencies-frontend
	pnpm --dir e2e install --frozen-lockfile

dependencies-backend:
	cd backend && go mod download

dependencies-frontend:
	cd web && pnpm install --frozen-lockfile

build-backend:
	cd backend && go build -buildvcs=false -o ../certvault .

build-frontend:
	cd web && pnpm run build

test: test-backend test-frontend

test-backend:
	cd backend && go test ./...

test-frontend:
	cd web && pnpm run test

format: format-backend format-frontend format-shared format-shell

format-shared:
	cd web && pnpm exec prettier --write '../*.{md,yaml,yml}' '../.github/**/*.{yml,yaml}' '../config/*.{yml,yaml}' '../{docs,e2e}/**/*.{md,mdx,mjs,ts,css,json,yaml,yml}' --ignore-path ../.prettierignore

format-backend:
	gofmt -w backend

format-frontend:
	cd web && pnpm run format

format-shell: $(SHFMT)
	$(SHFMT) $(SHFMT_FLAGS) -w $(SHELL_SOURCES)

format-check: format-check-backend format-check-frontend format-check-shared format-check-docs format-check-shell

format-check-shared:
	cd web && pnpm exec prettier --check '../*.{yaml,yml}' '../.github/**/*.{yml,yaml}' '../config/*.{yml,yaml}' '../e2e/**/*.{md,mdx,mjs,ts,css,json,yaml,yml}' --ignore-path ../.prettierignore

format-check-docs:
	cd web && pnpm exec prettier --check '../*.md' '../docs/**/*.{md,mdx,mjs,ts,css,json,yaml,yml}' --ignore-path ../.prettierignore

format-check-backend:
	test -z "$$(gofmt -l backend)"

format-check-frontend:
	cd web && pnpm run format:check

format-check-shell: $(SHFMT)
	$(SHFMT) $(SHFMT_FLAGS) -d $(SHELL_SOURCES)

lint: lint-backend lint-frontend

lint-backend: $(GOLANGCI_LINT)
	cd backend && $(GOLANGCI_LINT) run ./...

lint-frontend:
	cd web && pnpm run lint

vet:
	cd backend && go vet ./...

check: check-app format-check-docs

check-app: format-check-backend format-check-frontend format-check-shared format-check-shell vet lint test build

tools: $(GOLANGCI_LINT) $(SHFMT)

$(GOLANGCI_LINT):
	mkdir -p $(dir $(GOLANGCI_LINT))
	curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(dir $(GOLANGCI_LINT)) $(GOLANGCI_LINT_VERSION)

$(SHFMT):
	mkdir -p $(dir $(SHFMT))
	GOBIN=$(dir $(SHFMT)) go install mvdan.cc/sh/v3/cmd/shfmt@$(SHFMT_VERSION)

clean:
	cd backend && go clean
	rm -f certvault
	rm -rf web/dist
	rm -rf .cache

screenshots:
	pnpm --dir e2e screenshots

screenshots-docker:
	pnpm --dir e2e screenshots

docker:
	docker compose build

docs-install:
	pnpm --dir docs install --frozen-lockfile

docs-dev:
	@echo "CertVault docs: http://localhost:4321/CertVault/"
	pnpm --dir docs dev

docs-check:
	pnpm --dir docs check

docs-build:
	pnpm --dir docs build

docs-preview:
	pnpm --dir docs preview

config-check:
	cd backend && go run . check-config --config ../config/config.yaml

dev: dependencies
	mkdir -p $(DEV_DIR)/data
	test -f $(DEV_MASTER_KEY) || openssl rand -base64 32 > $(DEV_MASTER_KEY)
	test -f $(DEV_ADMIN_TOKEN) || printf '%s\n' 'certvault-dev-admin' > $(DEV_ADMIN_TOKEN)
	@echo "CertVault UI: http://localhost:8081"
	@echo "Bootstrap token: certvault-dev-admin"
	@set -eu; \
		cd backend; \
		CERTVAULT_MASTER_KEY_FILE=$(DEV_MASTER_KEY) \
		CERTVAULT_BOOTSTRAP_ADMIN_TOKEN_FILE=$(DEV_ADMIN_TOKEN) \
		go run . -config $(DEV_CONFIG) & \
		backend_pid=$$!; \
		trap 'kill $$backend_pid 2>/dev/null || true' EXIT INT TERM; \
		cd ../web; \
		pnpm run dev

test-e2e:
	pnpm --dir e2e check
	pnpm --dir e2e test

test-e2e-docker:
	sh e2e/scripts/docker.sh