name: Master Commits CI

on:
  pull_request:
    branches: 
      - master
  push:
    branches: 
      - master

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: 18
    - run: |
        npm ci
        npm run lint
    - run: |
        npm test

  # pre-build: 
  #   runs-on: ubuntu-latest
  #   needs: lint

  #   steps:
  #     # - name: check need to release 
  #     #   id: release
  #     #   uses: phish108/release-check@1.0.11
  #     #   with: 
  #     #     protected-paths: |
  #     #       README.md
  #     #       .eslintrc
  #     #       .gitattributes

  #     - name: No Building
  #       run: exit 1
  #       if: ${{ steps.release.outputs.proceed != 'true' }}

  build:
    # needs: pre-build
    needs: lint

    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        node-version: 
        # - 8.x
        # - 10.x
        - 16.x
        - 18.x
        - 19.x
        os:
        - ubuntu-latest
        - macos-latest
        - windows-latest

    steps:
    - uses: actions/checkout@v3
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm test
      env:
        CI: "true"

  # release: 
  #   runs-on: ubuntu-latest
  #   needs: build
  #   if: github.actor == 'phish108' 

  #   steps:
  #     - name: check need to release 
  #       id: release
  #       uses: phish108/release-check@1.0.9
  #       with: 
  #         protected-paths: |
  #           README.md
  #           .eslintrc
  #           .gitattributes

  #     - name: trigger release activity
  #       uses: actions/github-script@v3
  #       if: ${{ steps.release.outputs.proceed == 'true' }}
  #       with:
  #         github-token: ${{ secrets.TRIGGER_TOKEN }}
  #         script: |
  #           core.info("release via release activity")
  #           await github.actions.createWorkflowDispatch({
  #               owner: context.repo.owner,
  #               repo: context.repo.repo,
  #               ref: context.ref,
  #               workflow_id: "release.yml"
  #             })

  #     - name: No Release required
  #       run: echo 1
  #       if: ${{ steps.release.outputs.proceed != 'true' }}

