name: Deploy to Web Server

on:
  push:
    branches:
      - main

jobs:
  deploy:
    # runs-on: WebDeployment
    runs-on: 3900x
    container:
      image: docker.io/node:24-bookworm
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install pnpm
        uses: https://github.com/pnpm/action-setup@v4
        with:
          version: 10

      - name: Install Node.js
        uses: https://github.com/actions/setup-node@v4
        with:
          node-version: 24
          cache: 'pnpm'

      - name: Install SSH key
        uses: https://github.com/shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_KEY }}
          name: aria-coffee-deploy # optional
          known_hosts: ${{ secrets.KNOWN_HOSTS }}
          if_key_exists: fail

      - run: pnpm install

      - name: Build website
        run: pnpm run build-action

      - name: Create folder if not exists
        continue-on-error: true
        run: |
          ssh -i ~/.ssh/aria-coffee-deploy ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "mkdir -p /var/www/Aria/"

      - name: Clear old backup
        continue-on-error: true
        run: |
          ssh -i ~/.ssh/aria-coffee-deploy ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "[ -d "/var/www/Aria/dist-old" ] && rm -r /var/www/Aria/dist-old"

      - name: Backup current install
        continue-on-error: true
        run: |
          ssh -i ~/.ssh/aria-coffee-deploy ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "[ -d "/var/www/Aria/dist" ] && mv /var/www/Aria/dist /var/www/Aria/dist-old"

      # - name: Copy over new build-action
      #   run: |
      #     scp -i ~/.ssh/aria-coffee-deploy -rC ./dist ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }}:/var/www/Aria

      - name: install rsync
        run: |
          apt-get update -y && apt-get install rsync -y

      - name: rsync deployments
        uses: https://github.com/Burnett01/rsync-deployments@7.0.2
        with:
          switches: -avzrP
          path: dist/
          remote_path: /var/www/Aria/dist
          remote_host: ${{ vars.SERVER_HOST }}
          remote_user: ${{ vars.SERVER_USER }}
          remote_key: ${{ secrets.SSH_KEY }}

      - name: Set permissions on the deployed files
        run: |
          ssh -i ~/.ssh/aria-coffee-deploy ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "chmod -R 755 /var/www/Aria/dist"