forked from wts/wts
128 lines
3.0 KiB
Makefile
128 lines
3.0 KiB
Makefile
|
|
SHELL := /bin/bash
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
BACK_DIR := back
|
|
FRONT_DIR := front
|
|
|
|
.PHONY: help
|
|
help:
|
|
@printf '%s\n' \
|
|
'Usage:' \
|
|
' make <target>' \
|
|
'' \
|
|
'Common targets:' \
|
|
' dev Run front+back dev servers' \
|
|
' build Build front+back' \
|
|
' test Run front+back tests' \
|
|
' clean Remove build artifacts' \
|
|
'' \
|
|
'Backend targets:' \
|
|
' back-build Build server+tool binaries' \
|
|
' back-dev Build and run server (dev config)' \
|
|
' back-run Run server (dev config)' \
|
|
' back-tool Build tool binary' \
|
|
' back-run-tool Run tool (dev config)' \
|
|
' back-test go test ./... (in back/src)' \
|
|
' back-fmt gofmt ./... (in back/src)' \
|
|
'' \
|
|
'Frontend targets:' \
|
|
' front-install npm ci (in front)' \
|
|
' front-dev npm run dev (in front)' \
|
|
' front-build npm run build (in front)' \
|
|
' front-preview npm run preview (in front)' \
|
|
' front-check npm run check (in front)' \
|
|
' front-lint npm run lint (in front)' \
|
|
' front-format npm run format (in front)' \
|
|
' front-test npm test (in front)'
|
|
|
|
.PHONY: dev build test clean install doctor
|
|
|
|
dev:
|
|
@bash -c 'set -euo pipefail; \
|
|
$(MAKE) dev-front & pf=$$!; \
|
|
$(MAKE) dev-back & pb=$$!; \
|
|
trap "kill $$pf $$pb 2>/dev/null || true" INT TERM EXIT; \
|
|
wait $$pf $$pb'
|
|
|
|
build: back-build front-build
|
|
|
|
test: back-test front-test
|
|
|
|
clean: back-clean front-clean
|
|
|
|
install: back-install front-install
|
|
|
|
doctor:
|
|
@command -v go >/dev/null 2>&1 && go version || echo 'go: not found'
|
|
@command -v node >/dev/null 2>&1 && node --version || echo 'node: not found'
|
|
@command -v npm >/dev/null 2>&1 && npm --version || echo 'npm: not found'
|
|
|
|
## Backend
|
|
.PHONY: dev-back back-dev back-build back-server back-tool back-run back-run-tool back-test back-fmt back-clean back-install
|
|
|
|
dev-back: back-dev
|
|
|
|
back-dev:
|
|
@$(MAKE) -C $(BACK_DIR) dev
|
|
|
|
back-build:
|
|
@$(MAKE) -C $(BACK_DIR) build-all
|
|
|
|
back-server:
|
|
@$(MAKE) -C $(BACK_DIR) server
|
|
|
|
back-tool:
|
|
@$(MAKE) -C $(BACK_DIR) tool
|
|
|
|
back-run:
|
|
@$(MAKE) -C $(BACK_DIR) start-server
|
|
|
|
back-run-tool:
|
|
@$(MAKE) -C $(BACK_DIR) start-tool
|
|
|
|
back-test:
|
|
@cd $(BACK_DIR)/src && go test ./...
|
|
|
|
back-fmt:
|
|
@cd $(BACK_DIR)/src && gofmt -w ./
|
|
|
|
back-clean:
|
|
@rm -f $(BACK_DIR)/build/wts $(BACK_DIR)/build/wtstool
|
|
|
|
back-install:
|
|
@cd $(BACK_DIR)/src && go mod download
|
|
|
|
## Frontend
|
|
.PHONY: dev-front front-install front-dev front-build front-preview front-check front-lint front-format front-test front-clean
|
|
|
|
dev-front: front-dev
|
|
|
|
front-install:
|
|
@npm --prefix $(FRONT_DIR) ci
|
|
|
|
front-dev:
|
|
@npm --prefix $(FRONT_DIR) run dev
|
|
|
|
front-build:
|
|
@npm --prefix $(FRONT_DIR) run build
|
|
|
|
front-preview:
|
|
@npm --prefix $(FRONT_DIR) run preview
|
|
|
|
front-check:
|
|
@npm --prefix $(FRONT_DIR) run check
|
|
|
|
front-lint:
|
|
@npm --prefix $(FRONT_DIR) run lint
|
|
|
|
front-format:
|
|
@npm --prefix $(FRONT_DIR) run format
|
|
|
|
front-test:
|
|
@npm --prefix $(FRONT_DIR) test
|
|
|
|
front-clean:
|
|
@rm -rf $(FRONT_DIR)/build $(FRONT_DIR)/.svelte-kit $(FRONT_DIR)/.vite
|