Cybersecurity-Projects/PROJECTS/beginner/c2-beacon/justfile

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"