name: cooker-selfhosted

on:
  push:
    branches:
     - cooker*
  pull_request: 
    branches:
     - cooker*

  workflow_dispatch:


jobs:

  Building_flatpak:
    runs-on: self-hosted
    steps:

      - name: Get date for artifacts
        id: date
        run: echo "::set-output name=date::$(date +'%Y%m%d_%H%M%S')"

      - name: Extract branch name
        shell: bash
        run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
        id: extract_branch

      - name: Generate build ID
        id: generating_buildid
        run: echo "##[set-output name=build-id;]$(echo "${{ steps.extract_branch.outputs.branch }}-${{ steps.date.outputs.date }}")"
      
      - uses: actions/checkout@v3

      - name: Initialize enviornment
        run: |
          git pull
          git submodule init
          git submodule update
          sudo apt install -y flatpak flatpak-builder p7zip-full
          flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
          flatpak install --user -y org.kde.Sdk//5.15-21.08 org.kde.Platform//5.15-21.08 io.qt.qtwebengine.BaseApp/x86_64/5.15-21.08 org.freedesktop.Sdk.Extension.llvm13 org.freedesktop.Platform.ffmpeg-full/x86_64/21.08

      - name: Build flatpak
        run: |
          flatpak-builder --user --force-clean --install-deps-from=flathub --install-deps-from=flathub-beta --repo=${GITHUB_WORKSPACE}/local ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml

      - name: Create Bundle
        run: |
          flatpak-builder --user --force-clean --repo=${GITHUB_WORKSPACE}/local ${GITHUB_WORKSPACE}/retrodeck-flatpak-cooker net.retrodeck.retrodeck.yml
          flatpak build-bundle $GITHUB_WORKSPACE/local RetroDECK.flatpak net.retrodeck.retrodeck

      - name: Read version from version file
        id: version
        run: echo "##[set-output name=version;]$(cat $(find . -name version))"

      - name: Publish the flatpak in a new cooker release
        uses: ncipollo/release-action@v1
        with:
          #tag: "${{ steps.version.outputs.version }}"
          tag: "${{ steps.generating_buildid.outputs.build-id }}"
          body: |
            # Release Notes (Cooker)
            This is a cooker snapshot based on the commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
      
            Cooker channel is provided for the community to test fixes and explore new functionality.
            Please DO NOT open issues or ask support on this build.

          artifacts: "RetroDECK.flatpak"
          allowUpdates: true
          prerelease: true
          draft: false
          token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
          repo: RetroDECK-cooker
        continue-on-error: true

      # In case it cannot publish the release at least it's providing the flatpak file for creating a manual release
      - name: Upload RetroDECK.flatpak
        uses: actions/upload-artifact@v3
        with:
          name: retrodeck-flatpak
          path: RetroDECK.flatpak
        continue-on-error: true