name: Build changed plugins

on:
#   push:
#     branches: ["main"]
#     paths: ["plugins/**"]
#   pull_request:
#     paths: ["plugins/**"]
  workflow_dispatch:

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:  
            fetch-depth: 2
      - uses: actions/setup-node@v4
        with:
          node-version: 18

      - name: Set up base packages
        run: ./npm-install.sh

      - name: Build changed plugins
        run: |
            # Get the list of changed directories in /plugins
            changed_dirs=$(git diff --name-only HEAD^ HEAD ./plugins | awk -F/ '{print $2}' | uniq)
            
            # Loop through each changed directory
            for dir in $changed_dirs; do
                pushd "./plugins/$dir"

                if [[ "$dir" == "core" ]]; then
                  # core plugin requires ui to be built
                  pushd "./ui"
                  echo "plugins/$dir/ui > npm install"
                  npm install
                  echo "plugins/$dir/ui > npm run build"
                  npm run build
                  popd
                fi

                echo "plugins/$dir > npm install"
                npm install
                echo "plugins/$dir > npm run build"
                npm run build
                popd
            done
