name: Deploy into deno deploy

on:
  push:
    branches:
      - master
    paths:
      - "client/web/**"
      - "client/shared/**"
      - "client/packages/design/**"
  workflow_dispatch:

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

    permissions:
      id-token: write # Needed for auth with Deno Deploy
      contents: read # Needed to clone the repository

    steps:
      - name: Clone repository
        uses: actions/checkout@v3

      - name: Install Deno
        uses: denoland/setup-deno@main
        with:
          deno-version: 1.18.2

      - name: Install Node.js
        uses: actions/setup-node@v3
        with:
          node-version: lts/*

      - name: Cache pnpm modules
        uses: actions/cache@v2
        with:
          path: ~/.pnpm-store
          key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-
      - uses: pnpm/action-setup@v2.0.1
        with:
          version: latest
          run_install: false
      - name: Install packages
        run: pnpm install --frozen-lockfile

      - name: Build step
        run: cd client/web && pnpm build
        env:
          SERVICE_URL: https://tailchat-nightly.moonrailgun.com

      - name: Copy Deno Entry
        run: cd client/web &&  cp ./scripts/deno-static-entry.ts ./dist/deno-static-entry.ts

      - name: Upload to Deno Deploy
        uses: denoland/deployctl@v1
        with:
          project: "tailchat-nightly"
          # entrypoint: https://deno.land/std@0.202.0/http/file_server.ts
          entrypoint: deno-static-entry.ts
          root: "./client/web/dist"
