airbnb/superset

View on GitHub
.github/workflows/prefer-typescript.yml

Summary

Maintainability
Test Coverage
name: Prefer TypeScript

on:
  push:
    branches:
      - "master"
      - "[0-9].[0-9]"
    paths:
      - "superset-frontend/src/**"
  pull_request:
    types: [synchronize, opened, reopened, ready_for_review]
    paths:
      - "superset-frontend/src/**"

# cancel previous workflow jobs for PRs
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
  cancel-in-progress: true

jobs:
  prefer_typescript:
    if: github.ref == 'ref/heads/master' && github.event_name == 'pull_request'
    name: Prefer TypeScript
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
        uses: actions/checkout@v4
        with:
          persist-credentials: false
          submodules: recursive
      - name: Get changed files
        id: changed
        uses: ./.github/actions/file-changes-action
        with:
          githubToken: ${{ github.token }}

      - name: Determine if a .js or .jsx file was added
        id: check
        run: |
          js_files_added() {
            jq -r '
              map(
                select(
                  endswith(".js") or endswith(".jsx")
                )
              ) | join("\n")
            ' ${HOME}/files_added.json
          }
          echo "js_files_added=$(js_files_added)" >> $GITHUB_OUTPUT

      - if: steps.check.outputs.js_files_added
        name: Add Comment to PR
        uses: ./.github/actions/comment-on-pr
        continue-on-error: true
        env:
          GITHUB_TOKEN: ${{ github.token }}
        with:
          msg: |
            ### WARNING: Prefer TypeScript

            Looks like your PR contains new `.js` or `.jsx` files:

            ```
            ${{steps.check.outputs.js_files_added}}
            ```

            As decided in [SIP-36](https://github.com/apache/superset/issues/9101), all new frontend code should be written in TypeScript. Please convert above files to TypeScript then re-request review.