name: Deploy

on:
  push:
    branches:
      - main
      - astra/ci

jobs:
  deploy:
    name: Deploy
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'

      - name: Setup Deno
        uses: https://github.com/denoland/setup-deno@v2

      - name: Install dependencies
        run: deno install

      - name: Build project
        run: deno task build

      - name: Setup SSH
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519
          cat > ~/.ssh/config << EOF
          Host deploy
            HostName ${{ vars.SERVER_HOST }}
            User ${{ vars.SERVER_USER }}
            IdentityFile ~/.ssh/id_ed25519
            StrictHostKeyChecking accept-new
            BatchMode yes
            PasswordAuthentication no
            PubkeyAuthentication yes
          EOF
          chmod 600 ~/.ssh/config
          ssh-keyscan -H ${{ vars.SERVER_HOST }} >> ~/.ssh/known_hosts
          echo "Deploying to ${{ vars.SERVER_HOST }} as ${{ vars.SERVER_USER }} to /var/www/pds/${{ github.ref_name }}"

      - name: Debug SSH Connection
        run: ssh -v deploy echo "SSH Connection Successful"

      - name: Create folder if not exists
        run: ssh deploy "mkdir -p /var/www/pds/${{ github.ref_name }}"

      - name: Deploy via SCP
        run: scp -r ./dist/* deploy:/var/www/pds/${{ github.ref_name }}