Files
SigHej/Makefile
Henrik Jess Nielsen 99e9b509a0
Some checks failed
Backend CI / test (push) Has been cancelled
Flutter CI / analyze-and-test (push) Has been cancelled
eksplicit mapping af envs
2026-05-12 18:21:25 +02:00

142 lines
5.0 KiB
Makefile

# SigHej — Makefile
# Shortcuts for backend (Python/FastAPI), admin (Next.js) og app (Flutter)
# Kræver: docker, docker compose, python 3.11+, node 20+, flutter
.DEFAULT_GOAL := help
# ─── Colours ───────────────────────────────────────────────────────────────────
CYAN := \033[0;36m
RESET := \033[0m
# ─── Hjælp ─────────────────────────────────────────────────────────────────────
.PHONY: help
help:
@echo ""
@echo " $(CYAN)SigHej — build targets$(RESET)"
@echo ""
@echo " $(CYAN)Dev environment$(RESET)"
@echo " make up Start alle services (docker compose)"
@echo " make down Stop og fjern containers"
@echo " make logs Tail logs fra alle services"
@echo " make ps Vis kørende services"
@echo ""
@echo " $(CYAN)Backend (FastAPI)$(RESET)"
@echo " make be-install Installer Python deps (venv)"
@echo " make be-dev Kør backend lokalt (uvicorn --reload)"
@echo " make be-test Kør pytest"
@echo " make be-lint Ruff check + format"
@echo " make be-fmt Auto-fix med ruff"
@echo ""
@echo " $(CYAN)Admin (Next.js)$(RESET)"
@echo " make adm-install npm install"
@echo " make adm-dev Kør admin lokalt (next dev)"
@echo " make adm-build Production build"
@echo " make adm-lint ESLint"
@echo ""
@echo " $(CYAN)App (Flutter)$(RESET)"
@echo " make app-get flutter pub get"
@echo " make app-analyze flutter analyze"
@echo " make app-test flutter test"
@echo " make app-android Build APK (debug)"
@echo " make app-ios Build iOS (debug, kræver macOS + Xcode)"
@echo " make app-setup Første gang: flutter create platform-dirs"
@echo ""
@echo " $(CYAN)CI / Full check$(RESET)"
@echo " make check be-lint + be-test + adm-lint + app-analyze"
@echo " make build Docker build af alle services"
@echo ""
# ─── Docker compose ────────────────────────────────────────────────────────────
.PHONY: up down logs ps build
up:
docker compose up -d
down:
docker compose down
logs:
docker compose logs -f
ps:
docker compose ps
build:
docker compose build
# ─── Backend ───────────────────────────────────────────────────────────────────
VENV := backend/.venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
PYTEST := $(VENV)/bin/pytest
RUFF := $(VENV)/bin/ruff
$(VENV)/bin/activate: backend/requirements-dev.txt
python3 -m venv $(VENV)
$(PIP) install --upgrade pip
$(PIP) install -r backend/requirements-dev.txt
.PHONY: be-install be-dev be-test be-lint be-fmt
be-install: $(VENV)/bin/activate
be-dev: be-install
cd backend && $(abspath $(PYTHON)) -m uvicorn app.main:app --reload --port 8000
be-test: be-install
cd backend && $(abspath $(PYTEST)) -v
be-lint: be-install
$(RUFF) check backend/app backend/tests
be-fmt: be-install
$(RUFF) check --fix backend/app backend/tests
$(RUFF) format backend/app backend/tests
# ─── Admin (Next.js) ───────────────────────────────────────────────────────────
.PHONY: adm-install adm-dev adm-build adm-lint
adm-install:
cd admin && npm install
adm-dev: adm-install
cd admin && npm run dev
adm-build: adm-install
cd admin && npm run build
adm-lint: adm-install
cd admin && npm run lint
# ─── App (Flutter) ─────────────────────────────────────────────────────────────
.PHONY: app-setup app-get app-analyze app-test app-android app-ios
app-setup:
@echo "Kører flutter create for at generere platform-dirs..."
cd app && flutter create --platforms=android,ios --project-name sighej .
@echo "Genskaber vores platform-filer..."
cd app && git checkout android/app/src/main/AndroidManifest.xml ios/Runner/Info.plist 2>/dev/null || true
app-get:
cd app && flutter pub get
app-analyze: app-get
cd app && flutter analyze --no-fatal-infos
app-test: app-get
cd app && flutter test
app-android: app-get
cd app && flutter build apk --debug
app-ios: app-get
cd app && flutter build ios --debug --no-codesign
# ─── CI: fuld check ────────────────────────────────────────────────────────────
.PHONY: check
check: be-lint be-test adm-lint app-analyze
@echo ""
@echo " ✓ Alle checks bestået"
@echo ""