name: Workflows
on:
  push:
    branches:
      - master

jobs:
  update:
    name: Update from AUR
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Configure Git
        run: |
          git config user.email "sebastiaan.de.schaetzen+archlinux@gmail.com"
          git config user.name "Sebastiaan de Schaetzen (automated)"
      
      - name: Add AUR repository
        run: git remote add aur https://aur.archlinux.org/yay.git

      - name: Fetch AUR
        run: |
          git fetch aur
          git log --all --oneline --graph
      
      - name: Merge latest changes
        run: |
          git merge aur/master --allow-unrelated-histories
          git status
      
      - name: Push changes (if any)
        run: git push origin master
  
  wake:
    name: Wake Runner
    runs-on: ubuntu-latest
    needs: update
    steps:
      - name: Wakeup Runner
        run: |
          curl https://idlesleep.wolproxy.seeseepuff.be/status

  check:
    name: Check if rebuild is necessary
    runs-on: ubuntu-amd64
    needs: wake
    outputs:
      up-to-date: ${{ steps.up-to-date.outputs.up-to-date }}
    container:
      image: gitea.seeseepuff.be/archlinux/archlinux:latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      
      - name: Ensure image is up-to-date
        run: |
          sudo pacman -Sy --noconfirm
      
      - name: Check if rebuild is necessary
        id: up-to-date
        run: |
          set +e
          .gitea/workflows/up-to-date.sh
          echo "exit_code=$?" >> "$GITHUB_OUTPUT"
          set -e

  build:
    name: Build and Push
    runs-on: ubuntu-amd64
    needs: check
    container:
      image: gitea.seeseepuff.be/archlinux/archlinux:latest
    if: needs.check.outputs.up-to-date == '1'
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Ensure image is up-to-date
        run: |
          sudo pacman -Syu --noconfirm
      
      - name: Check if rebuild is necessary
        run: |
          .gitea/workflows/up-to-date.sh

      - name: Build package
        run: |
          makepkg -s --noconfirm -
      
      - name: Push to repository
        run: |
          makepkg --packagelist | while read -r file; do
            curl --user ${{ secrets.USERNAME }}:${{ secrets.PASSWORD }} \
              --upload-file $file \
              https://gitea.seeseepuff.be/api/packages/archlinux/arch/personal
          done