name: pilotwings
on: [push]

jobs:
  python:
    runs-on: ubuntu-latest
    container: python:3.13.1-slim
    steps:
      - run: apt-get update
      - run: apt-get install -y git nodejs
      - uses: actions/checkout@v4
      - uses: Gr1N/setup-poetry@v9
      - run: poetry install
      - run: poetry run ruff check .
      - run: poetry run mypy .

  node:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: "^20"
      - run: npm ci
      - run: npm run type-check
      - run: npm run lint

  docker:
    runs-on: ubuntu-latest
    container: docker
    needs: [python, node]
    steps:
      - run: apk add git nodejs
      - uses: actions/checkout@v4
      - uses: docker/metadata-action@v5
        id: meta
        with:
          images: xefir/pilotwings
          tags: |
            type=schedule
            type=ref,event=tag
            type=ref,event=pr
            type=raw,value=latest,enable={{is_default_branch}}
      - uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - uses: docker/build-push-action@v6
        with:
          push: ${{ gitea.ref_name == gitea.event.repository.default_branch || gitea.ref_type == 'tag' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}