name: Deploy to Web Server

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: docker
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - 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

      - 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: 23
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install

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

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

      - name: Clear old backup
        if: success() || failure()
        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
        if: success() || failure()
        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 -rv ./dist ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }}:/var/www/Aria
      
      - 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"