name: Publish

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Version number'
        required: true

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Extract version from file
        id: get_version
        run: |
          VERSION=$(cut -d "'" -f2 < pwnagotchi/_version.py)
          echo "VERSION=$VERSION" >> $GITHUB_ENV

      - name: Get latest tag
        uses: actions-ecosystem/action-get-latest-tag@v1
        id: get-latest-tag

      - name: Set LAST_VERSION as an environment variable
        run: echo "LAST_VERSION=${{ steps.get-latest-tag.outputs.tag }}" >> $GITHUB_ENV

      - name: Generate release notes
        id: generate_release_notes
        run: |
          COMMITS=$(git log --merges --pretty=format:"* %s" $LAST_VERSION--$VERSION | sed 's/$/\\n/g')
          CONTRIBUTORS=$(git shortlog -sn $LAST_VERSION--$VERSION | awk '{print "* @" $2}' | sed 's/$/\\n/g')
          RELEASE_BODY="**Full Changelog**: https://github.com/jayofelony/pwnagotchi/compare/$LAST_VERSION...$VERSION"
          echo "RELEASE_BODY=$RELEASE_BODY" >> $GITHUB_ENV

      - name: Install qemu dependencies
        run: sudo apt update && sudo apt install qemu-user-static qemu-utils xz-utils -y

      - name: Build img file
        run: ls -la .; pwd; make all

      - name: Transfer 32bit.img to docker and give permissions
        run: sudo chown runner:docker "pwnagotchi-32bit.img"

      - name: Transfer 64bit.img to docker and give permissions
        run: sudo chown runner:docker "pwnagotchi-64bit.img"

      - name: PiShrink
        run: |
          wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
          chmod +x pishrink.sh
          sudo mv pishrink.sh /usr/local/bin
          find /home/runner/work/ -type f -name "*.img" -exec sudo pishrink.sh -aZ {} \;

      - name: Change name of 32.img.xz to add version
        run: mv "pwnagotchi-32bit.img.xz" "pwnagotchi-$VERSION-32bit.img.xz"

      - name: Change name of 64.img.xz to add version
        run: mv "pwnagotchi-64bit.img.xz" "pwnagotchi-$VERSION-64bit.img.xz"

      - name: Release
        uses: softprops/action-gh-release@v2
        with:
          prerelease: true
          tag_name: v${{ env.VERSION }}
          name: Pwnagotchi v${{ env.VERSION }}
          files: |
              pwnagotchi-${{ env.VERSION }}-32bit.img.xz
              pwnagotchi-${{ env.VERSION }}-64bit.img.xz
          body: ${{ env.RELEASE_BODY }}