on:
  release
jobs:
  ls:
    runs-on: docker
    container:
      image: git.php.fail/lubiana/container/php:8.4.1-ci
    steps:
      - name: Manually checkout
        env:
          REPO: '${{ github.repository }}'
          TOKEN: '${{ secrets.GITHUB_TOKEN }}'
          BRANCH: '${{ env.GITHUB_REF_NAME }}'
          GIT_SERVER: 'hannover.ccc.de/gitlab'
        run: |
          git clone --branch $GITHUB_REF_NAME https://${TOKEN}@${GIT_SERVER}/${REPO}.git .
          git fetch
          git checkout ${{ github.head_ref }}
      - name: prepare deploy
        run: sh ./deploy/prepare-deploy.sh
      - name: deploy
        env:
          HOST: 'web.server.c3h'
          USERNAME: 'c3h-futtern'
          TARGETDIR: '/home/c3h-futtern/futtern'
          HOMEDIR: '/home/c3h-futtern'
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
        run: |
          mkdir -p ~/.ssh/
          # Print the SSH key, replacing newline characters with actual new lines
          echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
          # Set appropriate permissions for the SSH key
          chmod 600 ~/.ssh/id_rsa
          # Add the remote host's key to the known_hosts file to avoid authenticity confirmation
          ssh-keyscan -H $HOST >> ~/.ssh/known_hosts
          # stop services
          ssh ${USERNAME}@${HOST} systemctl --user stop pod-futtern
          # backup database
          ssh ${USERNAME}@${HOST} "cp ${HOMEDIR}/futtern/app/var/data.db ${HOMEDIR}/backup/data.db-$(date +\"%Y%m%d%H%M%S\")"
          # only keep last 10 backupts
          ssh ${USERNAME}@${HOST} "find ${HOMEDIR}/backup/ -type f | sort | head -n -10 | xargs rm -f"
          # SCP files to the remote host
          rsync -avz --delete deploy/ ${USERNAME}@${HOST}:${TARGETDIR} --exclude=var
          # run update script
          ssh ${USERNAME}@${HOST} /home/c3h-futtern/futtern/update.sh