name: 'Package Pushed'

on:
    push:
        branches:
            - master
            - v3
        paths:
            - packages/**

jobs:
    build-pkg:
        name: Build package
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v3

            - name: Login to GitHub registry
              uses: docker/login-action@v2
              with:
                  username: ${{ github.actor }}
                  password: ${{ secrets.GITHUB_TOKEN }}
                  registry: docker.pkg.github.com

            - name: Get list of changed files
              uses: lots0logs/gh-action-get-changed-files@2.1.4
              with:
                  token: ${{ secrets.GITHUB_TOKEN }}

            - name: Build Packages
              run: |
                  PACKAGES=$(jq '.[]' -r ${HOME}/files*.json | awk -F/ '$1~/packages/ && $2 && $3{ print $2 "-" $3 }' | sort -u)
                  echo "Packages: $PACKAGES"
                  docker pull docker.pkg.github.com/engineer-man/piston/repo-builder:latest
                  docker build -t repo-builder repo
                  docker run -v "${{ github.workspace }}:/piston" repo-builder --no-server $PACKAGES
                  ls -la packages

            - name: Upload Packages
              uses: svenstaro/upload-release-action@v2
              with:
                  repo_token: ${{ secrets.GITHUB_TOKEN }}
                  file: packages/*.pkg.tar.gz
                  tag: pkgs
                  overwrite: true
                  file_glob: true
    create-index:
        name: Create Index
        runs-on: ubuntu-latest
        needs: build-pkg
        steps:
            - name: 'Download all release assets'
              run: curl -s https://api.github.com/repos/engineer-man/piston/releases/latest | jq '.assets[].browser_download_url' -r | xargs -L 1 curl -sLO
            - name: 'Generate index file'
              run: |
                  echo "" > index
                  BASEURL=https://github.com/engineer-man/piston/releases/download/pkgs/
                  for pkg in *.pkg.tar.gz
                  do
                    PKGFILE=$(basename $pkg)
                    PKGFILENAME=$(echo $PKGFILE | sed 's/\.pkg\.tar\.gz//g')

                    PKGNAME=$(echo $PKGFILENAME | grep -oP '^\K.+(?=-)')
                    PKGVERSION=$(echo $PKGFILENAME | grep -oP '^.+-\K.+')
                    PKGCHECKSUM=$(sha256sum $PKGFILE | awk '{print $1}')
                    echo "$PKGNAME,$PKGVERSION,$PKGCHECKSUM,$BASEURL$PKGFILE" >> index
                    echo "Adding package $PKGNAME-$PKGVERSION"
                  done
            - name: Upload index
              uses: svenstaro/upload-release-action@v2
              with:
                  repo_token: ${{ secrets.GITHUB_TOKEN }}
                  file: index
                  tag: pkgs
                  overwrite: true
                  file_glob: true