name: Auto-update kernel

on:
  schedule:
    # daily, hour and minute chosen arbitrarily
    - cron: "32 14 * * *"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.18

      - name: Check latest kernel version from https://archive.raspberrypi.org/debian/
        id: check
        run: |
          # split lines to fail on exit != 0
          sha="$(go run ./cmd/check-update/main.go)"
          echo "::set-output name=sha::$sha"

      - name: Fetch latest kernel
        if: steps.check.outputs.sha != ''
        id: fetch
        run: |
          git submodule update --init --depth=1 linux-sources
          cd linux-sources
          git fetch --depth=1 origin ${{steps.check.outputs.sha}}
          git checkout ${{steps.check.outputs.sha}}

          # split lines to fail on exit != 0
          version="$(make kernelversion)"
          echo "::set-output name=version::$version"
          cd ..
          git diff --no-ext-diff

      - name: Compile latest kernel
        if: steps.check.outputs.sha != ''
        run: go run cmd/compile/main.go

      - name: Commit the new kernel
        if: steps.check.outputs.sha != ''
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          commit_message: kernel ${{steps.fetch.outputs.version}}
          tagging_message: v1.0.0-${{steps.fetch.outputs.version}}
