name: Build

on:
  push:
    branches: "**"

jobs:
  build:
    strategy:
      matrix:
        os:
          [
            {
              name: windows-latest,
              build_path: out/Hydra-win32-x64,
              artifact: Hydra-win32-x64,
            },
            {
              name: ubuntu-latest,
              build_path: out/Hydra-linux-x64,
              artifact: Hydra-linux-x64,
            },
          ]

    runs-on: ${{ matrix.os.name }}

    steps:
      - name: Check out Git repository
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20.11.1

      - name: Install dependencies
        run: yarn

      - name: Lint
        run: yarn lint

      - name: Install Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.9

      - name: Install dependencies
        run: pip install -r requirements.txt

      - name: Build with cx_Freeze
        run: python torrent-client/setup.py build

      - name: Publish
        run: yarn run publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          STEAMGRIDDB_API_KEY: ${{ secrets.STEAMGRIDDB_API_KEY }}
          SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
          SENTRY_DSN: ${{ vars.SENTRY_DSN }}
          ONLINEFIX_USERNAME: ${{ secrets.ONLINEFIX_USERNAME }}
          ONLINEFIX_PASSWORD: ${{ secrets.ONLINEFIX_PASSWORD }}

      - name: Create artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.os.artifact }}
          path: ${{ matrix.os.build_path }}
