212 lines
5.2 KiB
Makefile
212 lines
5.2 KiB
Makefile
# =============================================================================
|
|
# AngelaMos | 2026
|
|
# justfile
|
|
# =============================================================================
|
|
|
|
set dotenv-filename := ".env"
|
|
set dotenv-load
|
|
set export
|
|
set shell := ["bash", "-uc"]
|
|
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
|
|
|
|
project := file_name(justfile_directory())
|
|
version := `git describe --tags --always 2>/dev/null || echo "dev"`
|
|
|
|
# =============================================================================
|
|
# Default
|
|
# =============================================================================
|
|
|
|
default:
|
|
@just --list --unsorted
|
|
|
|
# =============================================================================
|
|
# Backend Linting
|
|
# =============================================================================
|
|
|
|
[group('lint')]
|
|
ruff *ARGS:
|
|
ruff check backend/ {{ARGS}}
|
|
|
|
[group('lint')]
|
|
ruff-fix:
|
|
ruff check backend/ --fix
|
|
ruff format backend/
|
|
|
|
[group('lint')]
|
|
ruff-format:
|
|
ruff format backend/
|
|
|
|
[group('lint')]
|
|
pylint *ARGS:
|
|
pylint backend/app {{ARGS}}
|
|
|
|
[group('lint')]
|
|
lint: ruff
|
|
|
|
# =============================================================================
|
|
# Frontend Linting
|
|
# =============================================================================
|
|
|
|
[group('frontend')]
|
|
biome *ARGS:
|
|
cd frontend && pnpm biome check . {{ARGS}}
|
|
|
|
[group('frontend')]
|
|
biome-fix:
|
|
cd frontend && pnpm biome check --write .
|
|
|
|
[group('frontend')]
|
|
stylelint *ARGS:
|
|
cd frontend && pnpm stylelint '**/*.scss' {{ARGS}}
|
|
|
|
[group('frontend')]
|
|
stylelint-fix:
|
|
cd frontend && pnpm stylelint '**/*.scss' --fix
|
|
|
|
[group('frontend')]
|
|
tsc *ARGS:
|
|
cd frontend && pnpm tsc --noEmit {{ARGS}}
|
|
|
|
# =============================================================================
|
|
# Type Checking
|
|
# =============================================================================
|
|
|
|
[group('types')]
|
|
mypy *ARGS:
|
|
mypy backend/app {{ARGS}}
|
|
|
|
[group('types')]
|
|
typecheck: mypy
|
|
|
|
# =============================================================================
|
|
# Testing
|
|
# =============================================================================
|
|
|
|
[group('test')]
|
|
pytest *ARGS:
|
|
pytest backend/tests {{ARGS}}
|
|
|
|
[group('test')]
|
|
test: pytest
|
|
|
|
[group('test')]
|
|
test-cov:
|
|
pytest backend/tests --cov=backend/app --cov-report=term-missing --cov-report=html
|
|
|
|
# =============================================================================
|
|
# CI / Quality
|
|
# =============================================================================
|
|
|
|
[group('ci')]
|
|
ci: lint typecheck test
|
|
|
|
[group('ci')]
|
|
check: ruff mypy
|
|
|
|
# =============================================================================
|
|
# Docker Compose (Production)
|
|
# =============================================================================
|
|
|
|
[group('prod')]
|
|
up *ARGS:
|
|
docker compose --env-file .env up {{ARGS}}
|
|
|
|
[group('prod')]
|
|
start *ARGS:
|
|
docker compose --env-file .env up -d {{ARGS}}
|
|
|
|
[group('prod')]
|
|
down *ARGS:
|
|
docker compose --env-file .env down {{ARGS}}
|
|
|
|
[group('prod')]
|
|
stop:
|
|
docker compose --env-file .env stop
|
|
|
|
[group('prod')]
|
|
build *ARGS:
|
|
docker compose --env-file .env build {{ARGS}}
|
|
|
|
[group('prod')]
|
|
rebuild:
|
|
docker compose --env-file .env build --no-cache
|
|
|
|
[group('prod')]
|
|
logs *SERVICE:
|
|
docker compose --env-file .env logs -f {{SERVICE}}
|
|
|
|
[group('prod')]
|
|
ps:
|
|
docker compose --env-file .env ps
|
|
|
|
[group('prod')]
|
|
shell service='backend':
|
|
docker compose --env-file .env exec -it {{service}} /bin/bash
|
|
|
|
# =============================================================================
|
|
# Docker Compose (Development)
|
|
# =============================================================================
|
|
|
|
[group('dev')]
|
|
dev-up *ARGS:
|
|
docker compose -f dev.compose.yml up {{ARGS}}
|
|
|
|
[group('dev')]
|
|
dev-start *ARGS:
|
|
docker compose -f dev.compose.yml up -d {{ARGS}}
|
|
|
|
[group('dev')]
|
|
dev-down *ARGS:
|
|
docker compose -f dev.compose.yml down {{ARGS}}
|
|
|
|
[group('dev')]
|
|
dev-stop:
|
|
docker compose -f dev.compose.yml stop
|
|
|
|
[group('dev')]
|
|
dev-build *ARGS:
|
|
docker compose -f dev.compose.yml build {{ARGS}}
|
|
|
|
[group('dev')]
|
|
dev-rebuild:
|
|
docker compose -f dev.compose.yml build --no-cache
|
|
|
|
[group('dev')]
|
|
dev-logs *SERVICE:
|
|
docker compose -f dev.compose.yml logs -f {{SERVICE}}
|
|
|
|
[group('dev')]
|
|
dev-ps:
|
|
docker compose -f dev.compose.yml ps
|
|
|
|
[group('dev')]
|
|
dev-shell service='backend':
|
|
docker compose -f dev.compose.yml exec -it {{service}} /bin/bash
|
|
|
|
# =============================================================================
|
|
# Beacon
|
|
# =============================================================================
|
|
|
|
[group('beacon')]
|
|
beacon *ARGS:
|
|
cd beacon && C2_SERVER_URL="ws://localhost:${NGINX_HOST_PORT}/api/ws/beacon" C2_XOR_KEY="${XOR_KEY}" uv run python beacon.py {{ARGS}}
|
|
|
|
# =============================================================================
|
|
# Utilities
|
|
# =============================================================================
|
|
|
|
[group('util')]
|
|
info:
|
|
@echo "Project: {{project}}"
|
|
@echo "Version: {{version}}"
|
|
@echo "OS: {{os()}} ({{arch()}})"
|
|
|
|
[group('util')]
|
|
clean:
|
|
-rm -rf backend/.mypy_cache
|
|
-rm -rf backend/.pytest_cache
|
|
-rm -rf backend/.ruff_cache
|
|
-rm -rf backend/htmlcov
|
|
-rm -rf backend/.coverage
|
|
@echo "Cache directories cleaned"
|