name: Every single day

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch: 

permissions:
  id-token: write
  contents: write

jobs:
  update-publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '24'
          registry-url: 'https://registry.npmjs.org'
      
      - name: Ensure latest npm
        run: npm install -g npm@latest

      - name: Configure Git
        run: |
          git config --global user.name 'Daily Bot'
          git config --global user.email 'bot@to.day'

      - name: Run Update Day Script
        run: npm run update-day

      - name: Check for changes
        id: check_changes
        run: |
          if [[ -n $(git status -s) ]]; then
            echo "changes=true" >> $GITHUB_OUTPUT
          fi

      - name: Publish to NPM
        if: steps.check_changes.outputs.changes == 'true'
        run: npm publish

      - name: Commit and Push
        if: steps.check_changes.outputs.changes == 'true'
        run: |
          git add .
          git commit -m "chore(release): enterprise temporal update $(date +'%Y-%m-%d')"
          git push

      - name: Get Version
        if: steps.check_changes.outputs.changes == 'true'
        id: get_version
        run: |
          echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT

      - name: Create Tag
        if: steps.check_changes.outputs.changes == 'true'
        run: |
          git tag v${{ steps.get_version.outputs.version }}
          git push origin v${{ steps.get_version.outputs.version }}

      - name: Create GitHub Release
        if: steps.check_changes.outputs.changes == 'true'
        uses: softprops/action-gh-release@v1
        with:
          tag_name: v${{ steps.get_version.outputs.version }}
          body_path: RELEASE_NOTES.md
          name: Release v${{ steps.get_version.outputs.version }} - The "Today" Update
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
