# Sample workflow for building and deploying an Astro site to GitHub Pages
#
# To get started with Astro see: https://docs.astro.build/en/getting-started/
#
name: Deploy Astro site to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ["main"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

env:
  BUILD_PATH: "." # default value when not using subfolders
  # BUILD_PATH: subfolder

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      # - name: Detect package manager
      #   id: detect-package-manager
      #   run: |
      #     if [ -f "${{ github.workspace }}/yarn.lock" ]; then
      #       echo "manager=yarn" >> $GITHUB_OUTPUT
      #       echo "command=install" >> $GITHUB_OUTPUT
      #       echo "runner=yarn" >> $GITHUB_OUTPUT
      #       echo "lockfile=yarn.lock" >> $GITHUB_OUTPUT
      #       exit 0
      #     elif [ -f "${{ github.workspace }}/package.json" ]; then
      #       echo "manager=npm" >> $GITHUB_OUTPUT
      #       echo "command=ci" >> $GITHUB_OUTPUT
      #       echo "runner=npx --no-install" >> $GITHUB_OUTPUT
      #       echo "lockfile=package-lock.json" >> $GITHUB_OUTPUT
      #       exit 0
      #     else
      #       echo "Unable to determine package manager"
      #       exit 1
      #     fi
      # - name: Setup Node
      #   uses: actions/setup-node@v4
      #   with:
      #     node-version: "20"
      #     cache: ${{ steps.detect-package-manager.outputs.manager }}
      #     cache-dependency-path: ${{ env.BUILD_PATH }}/${{ steps.detect-package-manager.outputs.lockfile }}
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      # - name: Install dependencies
      #   run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
      #   working-directory: ${{ env.BUILD_PATH }}
      - name: install jpegoptim
        run: sudo apt-get update -y && sudo apt-get install -y jpegoptim
      - name: install oxipng
        run: wget https://github.com/shssoichiro/oxipng/releases/download/v9.1.3/oxipng_9.1.3-1_amd64.deb && sudo apt-get install -y ./oxipng_9.1.3-1_amd64.deb && rm ./oxipng_9.1.3-1_amd64.deb
      - name: Install, build, and upload your site
        uses: withastro/action@v2
        with:
          # path: . # The root location of your Astro project inside the repository. (optional)
          # node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional)
          package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)

      # - name: Build with Astro
      #   run: |
      #     ${{ steps.detect-package-manager.outputs.runner }} astro build \
      #       --site "${{ steps.pages.outputs.origin }}" \
      #       --base "${{ steps.pages.outputs.base_path }}"
      #   working-directory: ${{ env.BUILD_PATH }}
      # - name: Upload artifact
      #   uses: actions/upload-pages-artifact@v3
      #   with:
      #     path: ${{ env.BUILD_PATH }}/dist

  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    needs: build
    runs-on: ubuntu-latest
    name: Deploy
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4