|
| 1 | +on: |
| 2 | + pull_request: |
| 3 | + paths: |
| 4 | + - '**.js' |
| 5 | + - '**.cjs' |
| 6 | + - '**.mjs' |
| 7 | + - '**.ts' |
| 8 | + - '**.mts' |
| 9 | + - '**.cts' |
| 10 | +name: TypeScript conversion nudge |
| 11 | +jobs: |
| 12 | + Nudge-to-convert-to-TypeScript-if-JavaScript-found: |
| 13 | + runs-on: ubuntu-latest |
| 14 | + steps: |
| 15 | + - uses: actions/checkout@v3 |
| 16 | + with: |
| 17 | + fetch-depth: 0 |
| 18 | + |
| 19 | + - name: 🔎 Get changed JavaScript files |
| 20 | + id: changed-javascript-files |
| 21 | + uses: tj-actions/changed-files@v32 |
| 22 | + with: |
| 23 | + base_sha: ${{ github.event.pull_request.base.sha }} |
| 24 | + files: | |
| 25 | + **/*.js |
| 26 | + **/*.cjs |
| 27 | + **/*.mjs |
| 28 | + - name: 📃 List added files |
| 29 | + run: | |
| 30 | + for file in ${{ steps.changed-javascript-files.outputs.added_files }}; do |
| 31 | + echo "$file was added" |
| 32 | + done |
| 33 | +
|
| 34 | + - name: 📃 List modified files |
| 35 | + run: | |
| 36 | + for file in ${{ steps.changed-javascript-files.outputs.modified_files }}; do |
| 37 | + echo "$file was modified" |
| 38 | + done |
| 39 | +
|
| 40 | + - name: 💬 Post comment to nudge contributor(s) to consider converting files to TypeScript |
| 41 | + if: |
| 42 | + steps.changed-javascript-files.outputs.modified_files != '' || |
| 43 | + steps.changed-javascript-files.outputs.added_files != '' |
| 44 | + uses: thollander/actions-comment-pull-request@v1 |
| 45 | + with: |
| 46 | + message: | |
| 47 | + This pull request adds or modifies JavaScript (`.js`, `.cjs`, `.mjs`) files. |
| 48 | + Consider converting them to TypeScript. |
| 49 | + comment_includes: 'Consider converting them to TypeScript' |
| 50 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 51 | + |
| 52 | + - name: 🏷️ Add a label to the PR to help track how many pull requests adds or modifies JavaScript files |
| 53 | + if: |
| 54 | + steps.changed-javascript-files.outputs.modified_files != '' || |
| 55 | + steps.changed-javascript-files.outputs.added_files != '' |
| 56 | + uses: actions-ecosystem/action-add-labels@v1 |
| 57 | + with: |
| 58 | + labels: 'Adds or modifies js files' |
| 59 | + |
| 60 | + - name: 💬 Update the comment if JavaScript files were deleted or renamed to .ts / .tsx |
| 61 | + if: |
| 62 | + contains(github.event.pull_request.labels.*.name, 'Adds or modifies js files') && |
| 63 | + steps.changed-javascript-files.outputs.modified_files == '' && |
| 64 | + steps.changed-javascript-files.outputs.added_files == '' |
| 65 | + uses: thollander/actions-comment-pull-request@v1 |
| 66 | + with: |
| 67 | + message: | |
| 68 | + ~This pull request adds or modifies JavaScript (`.js`, `.cjs`, `.mjs`) files. Consider converting them to TypeScript.~ |
| 69 | + Thank you for converting JavaScript files to TypeScript 🎉" |
| 70 | + comment_includes: 'Consider converting them to TypeScript' |
| 71 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 72 | + |
| 73 | + - name: 🏷️ Remove the label if JavaScript was converted |
| 74 | + if: |
| 75 | + contains(github.event.pull_request.labels.*.name, 'Adds or modifies js files') && |
| 76 | + steps.changed-javascript-files.outputs.modified_files == '' && |
| 77 | + steps.changed-javascript-files.outputs.added_files == '' |
| 78 | + uses: actions-ecosystem/action-remove-labels@v1 |
| 79 | + with: |
| 80 | + labels: 'Adds or modifies js files' |
0 commit comments