on:
  push:
    tags:
      - '[0-9]+\.[0-9]+\.[0-9]+-pre\.[0-9]+'

jobs:
  check-tag:
    runs-on: docker
    steps:
      - name: Checking Out Repository Code
        uses: https://code.forgejo.org/actions/checkout@v3
      - name: Check if Version in package.json matches Tag
        run: |
          VERSION=$(npm pkg get version --workspaces=false | tr -d \")
          if test $VERSION != "${{ github.ref_name }}"; then 
            echo "Expected Version is: '${{  github.ref_name }}' actual Version is: '$VERSION'"; 
            exit 1
          else 
            echo "Version is: '$VERSION'"; 
          fi 

  checking:
    needs: [ check-tag ]
    runs-on: docker
    container: forgejo.neshweb.net/ci-docker-images/node-alpine-git:latest
    steps:
      - name: Checkout source code
        uses: https://code.forgejo.org/actions/checkout@v3
      - name: Install packages
        run: npm i
      - name: Run astro check (linting +  static analysis)
        run: npm run astro check

  build-site:
    needs: [ checking ]
    if: success()
    runs-on: dind
    steps:
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Log into Docker Package Registry
        uses: docker/login-action@v3
        with:
          registry: forgejo.neshweb.net
          username: ${{ secrets.FORGEJO_USERNAME }}
          password: ${{ secrets.FORGEJO_TOKEN }}
      - name: Build and push to Docker Package Registry
        uses: docker/build-push-action@v5
        with:
          push: true
          tags: forgejo.neshweb.net/firq/fgo-ta-com-website:${{ github.ref_name }}, forgejo.neshweb.net/firq/fgo-ta-com-website:preview

  create-release:
    needs: [ build-site ]
    if: success()
    runs-on: docker
    steps:
      - name: Release New Version
        uses: https://code.forgejo.org/actions/forgejo-release@v1
        with:
          direction: upload
          url: https://forgejo.neshweb.net
          release-dir: release
          token: ${{ secrets.FORGEJO_TOKEN }}
          tag: ${{  github.ref_name }}
          prerelease: true

  auto-deploy-dockge:
    needs: [ build-site ]
    if: success()
    runs-on: docker
    container: forgejo.neshweb.net/firq/dockge-cli:0.1.1-c.2
    steps:
      - name: Configure Dockge CLI
        run: |
          dockge host '${{ vars.DOCKGE_HOST }}'
          dockge login --user '${{ secrets.DOCKGE_USER }}' --password '${{ secrets.DOCKGE_CREDENTIAL }}'
      - name: Check status and redeploy
        run: |
          dockge status fgo-ta-com-preview
          dockge update fgo-ta-com-preview
          dockge status fgo-ta-com-preview
