184 lines
3.7 KiB
YAML
184 lines
3.7 KiB
YAML
version: '3'
|
|
|
|
dotenv: [".env", ".env.example"]
|
|
|
|
vars:
|
|
VERSION: '{{.v | default "latest"}}'
|
|
RUST_LOG: "warn,siren=info"
|
|
|
|
tasks:
|
|
default:
|
|
desc: "List available tasks"
|
|
cmds:
|
|
- task --list
|
|
silent: true
|
|
|
|
setup:
|
|
desc: "Copy .env.example to .env if .env does not exist"
|
|
cmds:
|
|
- test -f .env || cp .env.example .env
|
|
silent: true
|
|
|
|
format:
|
|
desc: "Format code"
|
|
cmds:
|
|
- task: format:app
|
|
- task: format:ui
|
|
silent: true
|
|
|
|
lint:
|
|
desc: "Run linters"
|
|
cmds:
|
|
- task: lint:app
|
|
- task: lint:ui
|
|
silent: true
|
|
|
|
# -----------------------------------------------------------
|
|
# Cargo
|
|
# -----------------------------------------------------------
|
|
build:
|
|
desc: "Compile a debug build"
|
|
deps: [ setup ]
|
|
cmds:
|
|
- cargo build
|
|
silent: true
|
|
|
|
release:
|
|
desc: "Compile an optimised release build"
|
|
deps: [ setup ]
|
|
cmds:
|
|
- cargo build --release
|
|
silent: true
|
|
|
|
run:
|
|
desc: "Run the project"
|
|
deps: [ setup ]
|
|
env:
|
|
RUST_LOG: "warn,siren=trace"
|
|
cmds:
|
|
- cargo run
|
|
silent: true
|
|
|
|
format:app:
|
|
desc: "Format code"
|
|
cmds:
|
|
- cargo fmt
|
|
silent: true
|
|
|
|
clean:
|
|
desc: "Clean the project"
|
|
deps: [ setup ]
|
|
cmds:
|
|
- cargo clean
|
|
silent: true
|
|
|
|
lint:app:
|
|
desc: "Run Clippy linter"
|
|
deps: [ setup ]
|
|
cmds:
|
|
- cargo clippy -- -D warnings
|
|
silent: true
|
|
|
|
check:
|
|
desc: "Fast type-check without producing a binary"
|
|
deps: [ setup ]
|
|
cmds:
|
|
- cargo check
|
|
silent: true
|
|
|
|
# -----------------------------------------------------------
|
|
# Docker
|
|
# -----------------------------------------------------------
|
|
docker:build:
|
|
desc: "Build the Docker image (use v=x.x.x to set version, default is \"latest\")"
|
|
cmds:
|
|
- docker build -f Dockerfile -t siren:{{.VERSION}} .
|
|
silent: true
|
|
|
|
docker:up:
|
|
desc: "Start backend containers"
|
|
cmds:
|
|
- docker compose up -d
|
|
silent: true
|
|
|
|
docker:up:all:
|
|
desc: "Start all containers"
|
|
cmds:
|
|
- docker compose --profile app up -d
|
|
silent: true
|
|
|
|
docker:down:
|
|
desc: "Stop all containers"
|
|
cmds:
|
|
- docker compose --profile app down
|
|
silent: true
|
|
|
|
docker:clean:
|
|
desc: "Stop all containers and remove volumes"
|
|
prompt: "This will remove all docker containers, networks, volumes, and images. Are you sure?"
|
|
cmds:
|
|
- docker compose --profile app down -v
|
|
silent: true
|
|
|
|
docker:refresh:
|
|
desc: "Clean and restart containers"
|
|
cmds:
|
|
- task: docker:clean
|
|
- task: docker:up
|
|
silent: true
|
|
|
|
# -----------------------------------------------------------
|
|
# UI
|
|
# -----------------------------------------------------------
|
|
install:ui:
|
|
desc: "Install UI npm dependencies"
|
|
dir: ui
|
|
cmds:
|
|
- npm install
|
|
silent: true
|
|
|
|
run:ui:
|
|
desc: "Run Vite dev server"
|
|
dir: ui
|
|
cmds:
|
|
- npm run dev
|
|
silent: true
|
|
|
|
build:ui:
|
|
desc: "Build the React UI into ui/dist"
|
|
dir: ui
|
|
cmds:
|
|
- npm run build
|
|
silent: true
|
|
|
|
format:ui:
|
|
desc: "Format UI code with prettier"
|
|
dir: ui
|
|
cmds:
|
|
- npm run format
|
|
silent: true
|
|
|
|
lint:ui:
|
|
desc: "Lint UI code with eslint"
|
|
dir: ui
|
|
cmds:
|
|
- npm run lint
|
|
silent: true
|
|
|
|
# -----------------------------------------------------------
|
|
# Utilities
|
|
# -----------------------------------------------------------
|
|
psql:
|
|
desc: Connect to the database
|
|
cmds:
|
|
- docker exec -it siren-postgres psql -U $DATABASE_USER -P pager=off
|
|
silent: true
|
|
|
|
ngrok:
|
|
desc: Start ngrok tunnel
|
|
vars:
|
|
UI_PORT: '{{.UI_PORT | default "8080"}}'
|
|
cmds:
|
|
- ngrok http {{.UI_PORT}}
|
|
silent: true
|