name: Deploy to Web Server

on:
  push:
    branches:
      - main  # Matches all branches

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.ref_name }}
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Setup SCP
        run: |
          mkdir -p ~/.ssh
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          chmod -R go-rwx ~/.ssh
          ssh-keyscan -H ${{ vars.SERVER_HOST }} >> ~/.ssh/known_hosts
          echo "Deploying to ${{ vars.SERVER_HOST }} as ${{ vars.SERVER_USER }} to /var/www/${{ github.ref_name }}"
      
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'
      
      - name: Install Deno
        uses: https://github.com/denoland/setup-deno@v2

      - name: build site
        run: |
          deno task build
      - name: create folder if not exists
        run: |
          ssh -i ~/.ssh/id_ed25519 ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "mkdir -p /var/www/ariexpress/"

      - name: Deploy via SCP
        run: |
          scp -i ~/.ssh/id_ed25519 -rv ./_site/* ${{ vars.SERVER_USER }}@\[${{ vars.SERVER_HOST }}\]:/var/www/ariexpress/
      - name: Set permissions on the deployed files
        run: |
          ssh -i ~/.ssh/id_ed25519 ${{ vars.SERVER_USER }}@${{ vars.SERVER_HOST }} "chmod -R 755 /var/www/ariexpress/*"