set dotenv-load := false

default:
  @just --list

install:
  python -m pip install --upgrade pip
  pip install flit
  flit install --deps develop

lint:
	isort . && black . && mypy fief/ && tryceratops fief/

test $UNIT_TESTS="1": start-db
  pytest --cov fief/ --cov-report=term-missing

update-translations:
  pybabel extract --mapping babel.cfg --output-file=fief/locale/messages.pot .
  pybabel update --domain=messages --input-file=fief/locale/messages.pot --output-dir=fief/locale

compile-translations:
  pybabel compile --domain=messages --directory=fief/locale

build-css:
  npm run build:css

create-db:
	docker volume create fief-dev-db
	docker run -p 5432:5432 --name fief-dev-db -e PGDATA=/var/lib/postgresql/data/pgdata -e POSTGRES_USER=fief -e POSTGRES_PASSWORD=fiefpassword -v fief-dev-db:/var/lib/postgresql/data -d postgres:alpine

start-db:
  docker start fief-dev-db

stop-db:
  docker rm -f fief-dev-db

create-redis:
  docker run -d -p 6379:6379 --name fief-dev-redis redis:alpine

start-redis:
  docker start fief-dev-redis

stop-redis:
  docker rm -f fief-dev-redis

revision-main message: start-db
  alembic -c fief/alembic.ini -n main revision --autogenerate -m "{{message}}"

migrate-main: start-db
  alembic -c fief/alembic.ini -n main upgrade head

revision-workspace message: start-db
  alembic -c fief/alembic.ini -n workspace revision --autogenerate -m "{{message}}"

migrate-workspace: start-db
  alembic -c fief/alembic.ini -n workspace upgrade head

start-server: start-db start-redis compile-translations build-css
  uvicorn --host 0.0.0.0 --port 8000 fief.app:app

start-server-watch:
  watchexec -r --exts po,py,html -- just start-server

start-worker: start-db start-redis
  dramatiq fief.worker -p 1 -t 1

bumpversion version:
  bumpversion {{version}}
