110 lines
3.9 KiB
TOML
110 lines
3.9 KiB
TOML
[tools]
|
|
rust = "latest"
|
|
|
|
# ─── Core Development ──────────────────────────────────────────────
|
|
|
|
[tasks.develop]
|
|
description = "Start the forage development server"
|
|
run = "cargo run -p forage-server"
|
|
|
|
[tasks.build]
|
|
description = "Build release binary"
|
|
run = "cargo build --release -p forage-server"
|
|
|
|
[tasks.compile]
|
|
description = "Build entire workspace in release mode"
|
|
run = "cargo build --release"
|
|
|
|
[tasks.test]
|
|
description = "Run all tests"
|
|
run = "cargo test --workspace"
|
|
|
|
[tasks.check]
|
|
description = "Run cargo check and clippy"
|
|
run = ["cargo check --workspace", "cargo clippy --workspace -- -D warnings"]
|
|
|
|
[tasks.fmt]
|
|
description = "Format all code"
|
|
run = "cargo fmt"
|
|
|
|
[tasks."fmt:check"]
|
|
description = "Check formatting"
|
|
run = "cargo fmt -- --check"
|
|
|
|
# ─── CI Pipelines ──────────────────────────────────────────────────
|
|
|
|
[tasks."ci:pr"]
|
|
description = "Run PR pipeline (check, test, build)"
|
|
run = "cargo run -p ci -- pr"
|
|
|
|
[tasks."ci:main"]
|
|
description = "Run main pipeline (check, test, build, publish)"
|
|
run = "cargo run -p ci -- main"
|
|
|
|
# ─── Docker ────────────────────────────────────────────────────────
|
|
|
|
[tasks."docker:build"]
|
|
description = "Build forage-server Docker image"
|
|
run = "docker build -f templates/forage-server.Dockerfile -t forage/forage-server:dev ."
|
|
|
|
[tasks."docker:publish"]
|
|
description = "Build and publish Docker image with tags"
|
|
run = """
|
|
COMMIT=$(git rev-parse --short HEAD)
|
|
TIMESTAMP=$(date +%Y%m%d%H%M%S)
|
|
REGISTRY=${CI_REGISTRY:-registry.forage.sh}
|
|
IMAGE=${CI_IMAGE_NAME:-forage/forage-server}
|
|
docker build -f templates/forage-server.Dockerfile \
|
|
-t $REGISTRY/$IMAGE:latest \
|
|
-t $REGISTRY/$IMAGE:$COMMIT \
|
|
-t $REGISTRY/$IMAGE:$TIMESTAMP \
|
|
.
|
|
docker push $REGISTRY/$IMAGE:latest
|
|
docker push $REGISTRY/$IMAGE:$COMMIT
|
|
docker push $REGISTRY/$IMAGE:$TIMESTAMP
|
|
"""
|
|
|
|
# ─── Local Infrastructure ──────────────────────────────────────────
|
|
|
|
[tasks."local:up"]
|
|
description = "Start local services (postgres)"
|
|
run = "docker compose -f templates/docker-compose.yaml up -d --wait"
|
|
|
|
[tasks."local:down"]
|
|
description = "Stop and remove local services"
|
|
run = "docker compose -f templates/docker-compose.yaml down -v"
|
|
|
|
[tasks."local:logs"]
|
|
description = "Tail local service logs"
|
|
run = "docker compose -f templates/docker-compose.yaml logs -f"
|
|
|
|
# ─── Database ──────────────────────────────────────────────────────
|
|
|
|
[tasks."db:shell"]
|
|
description = "Connect to local postgres"
|
|
run = "psql postgresql://forageuser:foragepassword@localhost:5432/forage"
|
|
|
|
[tasks."db:migrate"]
|
|
description = "Run database migrations"
|
|
run = "cargo sqlx migrate run --source crates/forage-db/src/migrations"
|
|
|
|
[tasks."db:prepare"]
|
|
description = "Prepare sqlx offline query cache"
|
|
run = "cargo sqlx prepare --workspace"
|
|
|
|
# ─── Tailwind CSS ──────────────────────────────────────────────────
|
|
|
|
[tasks."tailwind:build"]
|
|
description = "Build tailwind CSS"
|
|
run = "npx @tailwindcss/cli -i static/css/input.css -o static/css/style.css --minify"
|
|
|
|
[tasks."tailwind:watch"]
|
|
description = "Watch and rebuild tailwind CSS"
|
|
run = "npx @tailwindcss/cli -i static/css/input.css -o static/css/style.css --watch"
|
|
|
|
# ─── Forest Commands ───────────────────────────────────────────────
|
|
|
|
[tasks."forest:run"]
|
|
description = "Run a forest command"
|
|
run = "forest run {{arg(name='cmd')}}"
|