Files
pollux/justfile
T
2026-10-30 09:43:43 +01:00

108 lines
3.2 KiB
Makefile

set shell := ["bash", "-uc"]
# Keep files created by containers owned by the host user.
export UID := `id -u`
export GID := `id -g`
default:
@just --list
# First-time setup: build, install PHP deps, create .env, migrate and seed.
setup:
#!/usr/bin/env bash
set -euo pipefail
if [ ! -f .env ]; then
cp .env.docker.example .env
fi
docker compose build
docker compose run --rm --no-deps app composer install
if ! grep -q '^APP_KEY=base64:' .env; then
docker compose run --rm --no-deps app php artisan key:generate --force
fi
docker compose up -d --wait db
docker compose run --rm app php artisan migrate --force
# Only seed the demo data on a fresh database.
if [ "$(docker compose exec -T db mysql -N -B -upollux -psecret pollux -e 'SELECT COUNT(*) FROM scopes' 2>/dev/null || echo 0)" = "0" ]; then
docker compose run --rm app php artisan db:seed --class=ConstantsSeeder --force
docker compose run --rm app php artisan db:seed --class=TestDataSeeder --force
else
echo "Database already seeded; skipping demo data."
fi
docker compose run --rm app php artisan db:seed --class=DevUserSeeder --force
echo "Setup complete. Run 'just up', then open http://localhost:8000"
echo "Login: dev@pollux.local / password"
# Start the app and database in the foreground.
up *args:
docker compose up --build {{args}}
# Start the app and database in the background.
start:
docker compose up -d --build
# Stop the app and database.
down:
docker compose down
# Tail logs. Optionally pass a service name: just logs app
logs *args:
docker compose logs -f {{args}}
# Run an artisan command: just artisan route:list
artisan *args:
docker compose run --rm app php artisan {{args}}
# Run a composer command: just composer require foo/bar
composer *args:
docker compose run --rm app composer {{args}}
# Open a shell in the app container.
shell:
docker compose run --rm app bash
# Open a MySQL shell.
db:
docker compose up -d --wait db
docker compose exec db mysql -upollux -psecret pollux
# Run migrations.
migrate:
docker compose run --rm app php artisan migrate
# Add the demo/test dataset to an existing database.
seed:
docker compose run --rm app php artisan db:seed --class=TestDataSeeder
# Recreate the database and load the full dataset from database/seeds/data/real.
seed-real:
docker compose run --rm app php artisan migrate:fresh
docker compose run --rm app php artisan db:seed --force
docker compose run --rm app php artisan db:seed --class=DevUserSeeder --force
# Recreate the database and load test data.
fresh:
docker compose run --rm app php artisan migrate:fresh
docker compose run --rm app php artisan db:seed --class=ConstantsSeeder
docker compose run --rm app php artisan db:seed --class=TestDataSeeder
docker compose run --rm app php artisan db:seed --class=DevUserSeeder
# Run the test suite.
test *args:
docker compose run --rm --no-deps app vendor/bin/phpunit {{args}}
# Build frontend assets (uses the mise-pinned Node 10).
assets:
mise exec -- npm install
mise exec -- npm run dev
# Watch frontend assets.
watch:
mise exec -- npm run watch