|
| 1 | +SHELL := /bin/bash |
| 2 | +.DEFAULT_GOAL = help |
| 3 | + |
| 4 | +##@ Repo Initialization |
| 5 | + |
| 6 | +prerequisite: ## Install prerequisite tools |
| 7 | + @echo "Checking and installing required plugins." |
| 8 | + @plugins=( \ |
| 9 | + "terraform https://github.com/asdf-community/asdf-hashicorp.git" \ |
| 10 | + "pnpm https://github.com/jonathanmorley/asdf-pnpm.git" \ |
| 11 | + "nodejs https://github.com/asdf-vm/asdf-nodejs.git" \ |
| 12 | + "pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git" \ |
| 13 | + ); \ |
| 14 | + for info in "$${plugins[@]}"; do \ |
| 15 | + read plugin url <<< "$$info"; \ |
| 16 | + if asdf plugin-list | grep -q $$plugin; then \ |
| 17 | + echo "Plugin '$$plugin' is already installed."; \ |
| 18 | + else \ |
| 19 | + echo "Adding plugin '$$plugin'."; \ |
| 20 | + asdf plugin-add $$plugin $$url; \ |
| 21 | + fi; \ |
| 22 | + done; |
| 23 | + @echo "Installing specified versions." |
| 24 | + asdf install |
| 25 | + @echo "Currently installed versions:" |
| 26 | + asdf current |
| 27 | +.PHONY: prerequisite |
| 28 | + |
| 29 | +deps: ## Install repo dependencies |
| 30 | + @echo "Installing dependencies." |
| 31 | + pnpm install |
| 32 | +.PHONY: deps |
| 33 | + |
| 34 | +pre-commit: ## Install pre-commit hooks |
| 35 | + @echo "Installing pre-commit hooks." |
| 36 | + pre-commit install -t pre-commit -t commit-msg |
| 37 | + |
| 38 | +local-init: prerequisite deps pre-commit ## Initialize local environment for development |
| 39 | +.PHONY: local-init |
| 40 | + |
| 41 | +##@ Scripts |
| 42 | + |
| 43 | +build: ## Build project |
| 44 | + @echo "Building project." |
| 45 | + pnpm run build |
| 46 | +.PHONY: build |
| 47 | + |
| 48 | +run-dev: ## Run development server |
| 49 | + @echo "Running development server." |
| 50 | + pnpm run dev |
| 51 | +.PHONY: run-dev |
| 52 | + |
| 53 | +run: build ## Run production server |
| 54 | + @echo "Starting server." |
| 55 | + pnpm run start |
| 56 | +.PHONY: run |
| 57 | + |
| 58 | +lint: ## Lint project |
| 59 | + @echo "Linting project." |
| 60 | + pnpm run lint |
| 61 | +.PHONY: lint |
| 62 | + |
| 63 | +format: ## Format project |
| 64 | + @echo "Formatting project." |
| 65 | + pnpm run format |
| 66 | +.PHONY: format |
| 67 | + |
| 68 | +##@ Miscullaneous |
| 69 | + |
| 70 | +create-secrets-baseline: ## Create secrets baseline file |
| 71 | + detect-secrets scan > .secrets.baseline |
| 72 | +.PHONY: create-secrets-baseline |
| 73 | + |
| 74 | +audit-secrets-baseline: ## Check updated .secrets.baseline file |
| 75 | + detect-secrets audit .secrets.baseline |
| 76 | + git commit .secrets.baseline --no-verify -m "build(security): update secrets.baseline" |
| 77 | +.PHONY: audit-secrets-baseline |
| 78 | + |
| 79 | +clean: ## Clean project |
| 80 | + @echo "Cleaning project." |
| 81 | + rm -rf node_modules build |
| 82 | +.PHONY: clean |
| 83 | + |
| 84 | +##@ Helper |
| 85 | + |
| 86 | +help: ## Display help |
| 87 | + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage: \033[36m\033[0m\n"} /^[a-zA-Z\.\%-]+:.*?##/ { printf " \033[36m%-24s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) |
| 88 | +.PHONY: help |
0 commit comments