# This workflow will create a release and store builds to it when an x.y.z tag is pushed

name: Release

on:
  push:
    tags:
      - '*.*.*'

env:
  ENEMIZER_VERSION: 7.1
  APPIMAGETOOL_VERSION: 13

jobs:
  create-release:
    runs-on: ubuntu-latest
    steps:
      - name: Set env
        run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV  # tag x.y.z will become "Archipelago x.y.z"
      - name: Create Release
        uses: softprops/action-gh-release@b7e450da2a4b4cb4bfbae528f788167786cfcedf
        with:
          draft: true  # don't publish right away, especially since windows build is added by hand
          prerelease: false
          name: Archipelago ${{ env.RELEASE_VERSION }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  # build-release-windows: # this is done by hand because of signing
  # build-release-macos: # LF volunteer

  build-release-ubuntu2004:
    runs-on: ubuntu-20.04
    steps:
      - name: Set env
        run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
      # - code below copied from build.yml -
      - uses: actions/checkout@v3
      - name: Install base dependencies
        run: |
          sudo apt update
          sudo apt -y install build-essential p7zip xz-utils wget libglib2.0-0
          sudo apt -y install python3-gi libgirepository1.0-dev  # should pull dependencies for gi installation below
      - name: Get a recent python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - name: Install build-time dependencies
        run: |
          echo "PYTHON=python3.11" >> $GITHUB_ENV
          wget -nv https://github.com/AppImage/AppImageKit/releases/download/$APPIMAGETOOL_VERSION/appimagetool-x86_64.AppImage
          chmod a+rx appimagetool-x86_64.AppImage
          ./appimagetool-x86_64.AppImage --appimage-extract
          echo -e '#/bin/sh\n./squashfs-root/AppRun "$@"' > appimagetool
          chmod a+rx appimagetool
      - name: Download run-time dependencies
        run: |
          wget -nv https://github.com/Ijwu/Enemizer/releases/download/$ENEMIZER_VERSION/ubuntu.16.04-x64.7z
          7za x -oEnemizerCLI/ ubuntu.16.04-x64.7z
      - name: Build
        run: |
          # pygobject is an optional dependency for kivy that's not in requirements
          # charset-normalizer was somehow incomplete in the github runner
          "${{ env.PYTHON }}" -m venv venv
          source venv/bin/activate
          "${{ env.PYTHON }}" -m pip install --upgrade pip PyGObject charset-normalizer
          python setup.py build_exe --yes bdist_appimage --yes
          echo -e "setup.py build output:\n `ls build`"
          echo -e "setup.py dist output:\n `ls dist`"
          cd dist && export APPIMAGE_NAME="`ls *.AppImage`" && cd ..
          export TAR_NAME="${APPIMAGE_NAME%.AppImage}.tar.gz"
          (cd build && DIR_NAME="`ls | grep exe`" && mv "$DIR_NAME" Archipelago && tar -czvf ../dist/$TAR_NAME Archipelago && mv Archipelago "$DIR_NAME")
          echo "APPIMAGE_NAME=$APPIMAGE_NAME" >> $GITHUB_ENV
          echo "TAR_NAME=$TAR_NAME" >> $GITHUB_ENV
      # - code above copied from build.yml -
      - name: Add to Release
        uses: softprops/action-gh-release@b7e450da2a4b4cb4bfbae528f788167786cfcedf
        with:
          draft: true  # see above
          prerelease: false
          name: Archipelago ${{ env.RELEASE_VERSION }}
          files: |
            dist/*
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
