image: alpine/3.17
packages:
  - rust
  - cargo
  - openssl-dev
  - postgresql
  - sudo
  - rust-clippy
sources:
  - https://git.e3t.cc/~core/trifid
tasks:
  - setup: |
      sudo mkdir /run/postgresql
      sudo chown postgres:postgres /run/postgresql
      sudo -u postgres mkdir /var/lib/postgresql/data
      sudo -u postgres chmod 0700 /var/lib/postgresql/data
      sudo -u postgres initdb -D /var/lib/postgresql/data
      sudo -u postgres pg_ctl start -D /var/lib/postgresql/data
      cd /home/build/trifid/trifid-api
      cargo install sqlx-cli
      /home/build/.cargo/bin/sqlx database create
      /home/build/.cargo/bin/sqlx mig run
      sudo -u postgres pg_ctl stop -D /var/lib/postgresql/data
  - check: |
      sudo -u postgres pg_ctl start -D /var/lib/postgresql/data
      cd /home/build/trifid
      cargo check --locked
      cargo clippy --locked
      sudo -u postgres pg_ctl stop -D /var/lib/postgresql/data
  - build: |
      sudo -u postgres pg_ctl start -D /var/lib/postgresql/data
      cd /home/build/trifid
      cargo build --locked
      sudo -u postgres pg_ctl stop -D /var/lib/postgresql/data