name: Generate bootstrap archives

on:
  schedule:
    - cron: "0 0 * * 0"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        arch:
          - aarch64
          - arm
          - i686
          - x86_64
    steps:
      - name: Git clone
        uses: actions/checkout@v2
      - name: Create bootstrap archive
        run: ./scripts/generate-bootstraps.sh --architectures ${{ matrix.arch }}
      - name: Store artifacts
        uses: actions/upload-artifact@v2
        with:
          name: bootstrap-archives-${{ github.sha }}
          path: "*.zip"
  publish:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Git clone
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch bootstrap archives
        uses: actions/download-artifact@v2
        with:
          name: bootstrap-archives-${{ github.sha }}
          path: ./
      - name: Get checksums
        id: get_checksums
        run: |
          checksums=$(printf 'SHA-256:\n```\n%s\n```\n' "$(sha256sum *.zip)")
          checksums="${checksums//'%'/'%25'}"
          checksums="${checksums//$'\n'/'%0A'}"
          checksums="${checksums//$'\r'/'%0D'}"
          echo "::set-output name=checksums::$checksums"
      - name: Create new tag
        id: get_tag
        run: |
          new_tag="bootstrap-$(date "+%Y.%m.%d")"
          existing_tag_revision=$(git tag | grep "$new_tag" | sort -r | head -n 1 | cut -d- -f3 | cut -dr -f2)
          if [ -n "$existing_tag_revision" ]; then
            tag_rev=$((existing_tag_revision + 1))
          else
            tag_rev=1
          fi
          new_tag="${new_tag}-r${tag_rev}"
          git tag "$new_tag"
          git push --tags
          echo "::set-output name=tag_name::$new_tag"
      - name: Publish GitHub release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: "*.zip"
          file_glob: true
          release_name: "Bootstrap archives for Termux application"
          tag: ${{ steps.get_tag.outputs.tag_name }}
          body: ${{ steps.get_checksums.outputs.checksums }}
