# GitLab CI configuration for ffsend builds, tests and releases
#
# To add a new release:
# - configure a new 'build-*' job with the proper target
# - export a build artifact from the new job
# - manually upload artifact to GitHub in the 'github-release' job

stages:
  - package

# AUR packages release
package-aur:
  image: archlinux/base
  stage: package
  # needs:
  #   - release-github
  dependencies: []
  only:
    - /^v(\d+\.)*\d+$/
  before_script: []
  script:
    - cd ./pkg/aur

    # Determine the version number we're releasing for
    - VERSION=$(echo $CI_COMMIT_REF_NAME | cut -c 2-)
    - echo "Determined binary version number 'v$VERSION'"

    # Determine remote URLs and SHA checksums
    - echo "Determining SHA checksums for remote files..."
    - URL_SOURCE=https://git.auteiy.me/dmitry/cursorsPosy/-/archive/v$VERSION/cursorsPosy-v$VERSION.tar.gz?path=themes
    - 'echo "Selected source URL: $URL_SOURCE"'
    - echo "Determining sha256sum for remote source..."
    - 'SHA_SOURCE=$(curl -sSL "$URL_SOURCE" | sha256sum | cut -d" " -f1)'
    - 'echo "Got sha256sum: $SHA_SOURCE"'

    # Update PKGBUILD parameters: version, source URL and SHA sum
    - echo "Updating PKGBUILDS with release information..."
    - sed "s/^pkgver=.*\$/pkgver=$VERSION/" -i posy-cursors/PKGBUILD
    - sed "s/^source=(\"\(.*\)::.*\").*\$/source=(\"\1::$(echo $URL_SOURCE | sed 's/\//\\\//g')\")/" -i posy-cursors/PKGBUILD
    - sed "s/^sha256sums=.*\$/sha256sums=('$SHA_SOURCE')/" -i posy-cursors/PKGBUILD

    # Get SHA hash for local and remote file w/o version, update if it has changed
    # - 'SHA_STRIP_LOCAL=$(cat ffsend-git/PKGBUILD | sed /^pkgver=.\*/d | sha256sum | cut -d" " -f1)'
    # - 'SHA_STRIP_REMOTE=$(curl -sSL "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=ffsend-git" | sed /^pkgver=.\*/d | sha256sum | cut -d" " -f1)'

    # Install dependencies
    - echo "Installing required build packages..."
    - pacman -Syu --noconfirm sudo base-devel openssh git openssl

    # Make AUR package
    - mkdir -p /.cargo
    - chmod -R 777 /.cargo
    - cd posy-cursors/
    - echo "Making main source package..."
    - sudo -u nobody makepkg -c
    - sudo -u nobody makepkg --printsrcinfo > .SRCINFO
    # Make git package if different than the remote
    # - |
    #   if [ ! "$SHA_STRIP_LOCAL" == "$SHA_STRIP_REMOTE" ]; then
    #     cd ../ffsend-git
    #     echo "Making git source package..."
    #     sudo -u nobody makepkg -c
    #     sudo -u nobody makepkg --printsrcinfo > .SRCINFO
    #   else
    #     echo "Not making git source package, it has not changed"
    #   fi
    # - cd ..

    # Set up SSH for publishing
    - mkdir -p /root/.ssh
    - cp ./aur.pub /root/.ssh/id_rsa.pub
    - cat "$AUR_SSH_PRIVATE" | base64 -d > /root/.ssh/id_rsa
    - echo "Host aur.archlinux.org" >> /root/.ssh/config
    - echo "  IdentityFile /root/.ssh/aur" >> /root/.ssh/config
    - echo "  User aur" >> /root/.ssh/config
    - chmod 600 /root/.ssh/{id_rsa*,config}
    - eval `ssh-agent -s`
    - ssh-add /root/.ssh/id_rsa
    - ssh-keyscan -H aur.archlinux.org >> /root/.ssh/known_hosts
    - git config --global user.name "Dmitry Porunov"
    - git config --global user.email "dmitry@auteiy.me"

    # Publish main package: clone AUR repo, commit update and push
    - git clone ssh://aur@aur.archlinux.org/posy-cursors.git aur-posy-cursors
    - cd aur-posy-cursors
    - cp ../posy-cursors/{PKGBUILD,.SRCINFO} ./
    - git add PKGBUILD .SRCINFO
    - git commit -m "Release v$VERSION"
    - git push
    - cd ..

    # Publish binary package: clone AUR repo, commit update and push
    # - git clone ssh://aur@aur.archlinux.org/ffsend-bin.git aur-ffsend-bin
    # - cd aur-ffsend-bin
    # - cp ../ffsend-bin/{PKGBUILD,.SRCINFO} ./
    # - git add PKGBUILD .SRCINFO
    # - git commit -m "Release v$VERSION"
    # - git push
    # - cd ..

    # Publish git package: clone AUR repo, commit update and push
    # Only publish it if it is different than the remote
    # - |
    #   if [ ! "$SHA_STRIP_LOCAL" == "$SHA_STRIP_REMOTE" ]; then
    #     git clone ssh://aur@aur.archlinux.org/ffsend-git.git aur-ffsend-git
    #     cd aur-ffsend-git
    #     cp ../ffsend-git/{PKGBUILD,.SRCINFO} ./
    #     git add PKGBUILD .SRCINFO
    #     git commit -m "Update PKGBUILD for release v$VERSION"
    #     git push
    #     cd ..
    #   else
    #     echo "Not pushing git package, it has not changed"
    #   fi

# TODO: add job to test ffsend{-git} AUR packages
