name: Update JS Bundle

# Controls when the action will run. 
on:
  repository_dispatch:
    types: [update]
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  update:
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          repository: Fuukei/Sakurairo_Scripts
          path: ./script

      - name: Setup Node.js environment
        uses: actions/setup-node@v4  
        
      - name: Cache node modules
        uses: actions/cache@v4
        env:
          cache-name: cache-node-modules
        with:
          # npm cache files are stored in `~/.npm` on Linux/macOS
          path: ~/.npm
          key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-build-${{ env.cache-name }}-
            ${{ runner.os }}-build-
            ${{ runner.os }}-   
          
      - name: Install dependencies
        run: |
          cd $GITHUB_WORKSPACE/script
          yarn
        
      - name: Build bundle
        run: |
          cd $GITHUB_WORKSPACE/script
          yarn build
        
      - name: Checkout self
        uses: actions/checkout@v4
        with:
          path: ./theme
        
      - name: Copy files
        run:  cp -r $GITHUB_WORKSPACE/script/dist/* $GITHUB_WORKSPACE/theme/js/
             
      
      - name: Make Commit Message (Last Commit)
        id: generate_commit_message
        run:  |
          cd $GITHUB_WORKSPACE/script
          # Store the commit message directly into a temporary file or an environment variable
          # for easier access. Using 'echo' and then 'cat' is fine too, but this is a direct approach.
          COMMIT_MSG=$(git show -s --format=format:"last commit: %h by %aN,%n%B | %ci")
          echo "::set-output name=message::${COMMIT_MSG}" # Set as an output for the step
          
      - name: Commit and Push changes
        uses: stefanzweifel/git-auto-commit-action@v6
        with:
          # Use the output from the previous step as the commit message
          commit_message: ${{ steps.generate_commit_message.outputs.message }}
          branch: preview
          repository: ./theme
          # The 'push' input defaults to true, so explicit setting is not strictly needed,
          # but it's good for clarity if you want to be explicit.
          commit_user_name: GitHub Actions Bot
          commit_user_email: github-actions[bot]@users.noreply.github.com
