on:
  pull_request:
  push:
    branches:
      - master
      - tiddlywiki-com
env:
  NODE_VERSION: "22"
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: "${{ env.NODE_VERSION }}"
      - run: "./bin/ci-test.sh"
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: playwright-report
          path: playwright-report/
          retention-days: 30
  build-prerelease:
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/master'
    needs: test
    env:
      TW5_BUILD_TIDDLYWIKI: "./tiddlywiki.js"
      TW5_BUILD_MAIN_EDITION: "./editions/prerelease"
      TW5_BUILD_OUTPUT: "./output/prerelease"
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: "${{ env.NODE_VERSION }}"
      - run: "./bin/ci-pre-build.sh"
      # There's another near-duplicate "Set dynamic environment variables" step in
      # the `build-tiddlywiki-com` job.
      # These _could_ be extracted as a script (or moved into `ci-pre-build.sh`) to do away with the
      # duplication, but, the visibility that comes from having these in the workflow file seems
      # valuable. Environment variables are global variables and setting them at the top-level
      # makes sense.
      # Time to reconsider this decision might be when this setup turns out to be mistake-prone.
      - name: "Set dynamic environment variables"
        run: |
          TW5_BUILD_BRANCH=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
          echo "TW5_BUILD_BRANCH=${TW5_BUILD_BRANCH}" >> $GITHUB_ENV
          echo "TW5_BUILD_VERSION=$(./bin/get-plugin-library-version-number)" >> $GITHUB_ENV
          echo "TW5_BUILD_DETAILS=Prerelease built from branch '$TW5_BUILD_BRANCH' at commit $(git rev-parse HEAD) of $(git remote get-url origin) at $(date +'%F %T %Z')" >> $GITHUB_ENV
      - run: "./bin/build-site.sh"
      - run: "./bin/ci-push.sh"
        env:
          GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
  build-tiddlywiki-com:
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/tiddlywiki-com'
    needs: test
    env:
      TW5_BUILD_TIDDLYWIKI: "./node_modules/tiddlywiki/tiddlywiki.js"
      TW5_BUILD_MAIN_EDITION: "./editions/tw5.com"
      TW5_BUILD_OUTPUT: "./output"
      TW5_BUILD_ARCHIVE: "./output"
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: "${{ env.NODE_VERSION }}"
      - run: "./bin/ci-pre-build.sh"
      # When making a change here, don't forget to see if it also applies to the step
      # with the same name in the `build-prerelease` job.
      - name: "Set dynamic environment variables"
        run: |
          TW5_BUILD_BRANCH=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
          echo "TW5_BUILD_BRANCH=${TW5_BUILD_BRANCH}" >> $GITHUB_ENV
          echo "TW5_BUILD_VERSION=$(./bin/get-plugin-library-version-number)" >> $GITHUB_ENV
          echo "TW5_BUILD_DETAILS=Built from branch '$TW5_BUILD_BRANCH' at commit $(git rev-parse HEAD) of $(git remote get-url origin) at $(date +'%F %T %Z')" >> $GITHUB_ENV
      - run: "./bin/build-site.sh"
      - run: "./bin/ci-push.sh"
        env:
          GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
      - run: "./bin/build-tw-org.sh"
        env:
          GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
