mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 11:09:18 +02:00
- Merge deploy-* recipes into a single deploy-script recipe - Remove rarely used recipes (show id, setup-dirs) - Simplify test-* recipes - Remove redundant default recipe - Preserve all critical functionality
127 lines
4.0 KiB
Makefile
127 lines
4.0 KiB
Makefile
# XAMXAM Justfile
|
|
|
|
# ============================================================================
|
|
# Development
|
|
# ============================================================================
|
|
|
|
[group('dev')]
|
|
setup:
|
|
@bash scripts/setup-dev.sh
|
|
|
|
[group('dev')]
|
|
serve: migrate
|
|
@php \
|
|
-d upload_max_filesize=512M \
|
|
-d post_max_size=520M \
|
|
-d memory_limit=256M \
|
|
-d max_execution_time=300 \
|
|
-d max_input_time=300 \
|
|
-S 127.0.0.1:8000 -t app/public/ app/router.php 2>&1 \
|
|
| stdbuf -oL grep -Ev '(Accepted|Closing|live-reload\.php|assets/|favicon)' || true
|
|
|
|
[group('dev')]
|
|
stop:
|
|
@pkill -f "php -S 127.0.0.1:8000" 2>/dev/null && echo "stopped" || echo "no server running"
|
|
|
|
[group('dev')]
|
|
logs:
|
|
@tail -n 20 error.log 2>/dev/null || echo "no error log"
|
|
|
|
# ============================================================================
|
|
# Deploy
|
|
# ============================================================================
|
|
|
|
[group('deploy')]
|
|
deploy:
|
|
# Main deploy (code + assets)
|
|
rsync -vur --progress --delete \
|
|
--chown="www-data:xamxam" \
|
|
--exclude 'vendor' \
|
|
--exclude 'tests' \
|
|
--exclude '*.md' \
|
|
--exclude '.git*' \
|
|
--exclude '.jj' \
|
|
--exclude '.claude' \
|
|
--exclude '.pi' \
|
|
--exclude '.DS_Store' \
|
|
--exclude 'storage/xamxam.db' \
|
|
--exclude 'storage/theses' \
|
|
--exclude 'storage/covers' \
|
|
--exclude 'storage/backup_*' \
|
|
--exclude 'storage/cache/*' \
|
|
--exclude 'storage/fixtures' \
|
|
--exclude 'storage/docs' \
|
|
--exclude 'var/cache/*' \
|
|
--exclude 'var/logs/*' \
|
|
app/ xamxam:/var/www/xamxam/
|
|
ssh xamxam "mkdir -p /var/www/xamxam/var/{cache,logs,tmp}"
|
|
|
|
[group('deploy')]
|
|
deploy-db:
|
|
@ssh xamxam '[ ! -f /var/www/xamxam/storage/xamxam.db ]' || (echo "ERROR: remote database already exists. Remove it manually if you intend to overwrite." && exit 1)
|
|
rsync -v --progress app/storage/xamxam.db xamxam:/var/www/xamxam/storage/xamxam.db
|
|
ssh xamxam "chown www-data:xamxam /var/www/xamxam/storage/xamxam.db && chmod 660 /var/www/xamxam/storage/xamxam.db"
|
|
|
|
[group('deploy')]
|
|
deploy-script script_name:
|
|
# Generic script deployer (e.g., just deploy-script setup-server)
|
|
rsync -v scripts/{{script_name}}.sh xamxam:/tmp/{{script_name}}.sh
|
|
@echo ""
|
|
@echo "Script uploaded. SSH into the server and run:"
|
|
@echo ""
|
|
@echo " sudo DEPLOY_USER=\$USER bash /tmp/{{script_name}}.sh"
|
|
@echo ""
|
|
|
|
# ============================================================================
|
|
# Testing
|
|
# ============================================================================
|
|
|
|
[group('test')]
|
|
test:
|
|
# Run all tests. To run a subset, use:
|
|
# php app/tests/Unit/DatabaseTest.php
|
|
# php app/tests/Integration/SearchTest.php
|
|
@php app/tests/run-tests.php
|
|
|
|
[group('test')]
|
|
syntax:
|
|
@find app/ -name '*.php' -exec php -l {} \; 2>/dev/null | grep -v 'No syntax errors' || true
|
|
@echo '✅ Syntax OK'
|
|
|
|
# ============================================================================
|
|
# Database
|
|
# ============================================================================
|
|
|
|
[group('database')]
|
|
migrate:
|
|
@echo "Running migrations…"
|
|
@bash scripts/migrate.sh
|
|
|
|
[group('database')]
|
|
init-db:
|
|
@sqlite3 app/storage/xamxam.db < app/storage/schema.sql
|
|
@sqlite3 app/storage/xamxam.db "SELECT COUNT(*) || ' tables' FROM sqlite_master WHERE type='table';"
|
|
|
|
[group('database')]
|
|
reset-db:
|
|
@rm -f app/storage/xamxam.db
|
|
@just init-db
|
|
|
|
[group('database')]
|
|
query:
|
|
@sqlite3 app/storage/xamxam.db
|
|
|
|
[group('database')]
|
|
backup:
|
|
@sqlite3 app/storage/xamxam.db .dump > app/storage/backup_$(date +%Y%m%d_%H%M%S).sql
|
|
|
|
# ============================================================================
|
|
# Utils
|
|
# ============================================================================
|
|
|
|
[group('utils')]
|
|
clean:
|
|
@rm -f app/error.log
|
|
@rm -rf app/storage/cache/rate_limit/*
|
|
@rm -f /tmp/xamxam-*.log /tmp/xamxam-*.pid
|