108 lines
3.2 KiB
Makefile
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
|