diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000000..34ff31f3fa --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,41 @@ +Documentation: +- changed-files: + - any-glob-to-any-file: docs/** + +NuGet: +- changed-files: + - any-glob-to-any-file: '**/*.nuspec' + +Scripts: # Add the 'Scripts' label +- changed-files: + - any-glob-to-any-file: '**/*.ps1' # Windows + - any-glob-to-any-file: '**/*.sh' # Linux + +regarding-events: # Add the 'Events' label +- changed-files: + - any-glob-to-any-file: Exiled.Events/** # Any Modifications to events + +regarding-api: # Add the 'API' label +- changed-files: + - any-glob-to-any-file: Exiled.API/** # Any modifications to the API + +regarding-transpiler: # Add the 'transpiler' label +- changed-files: + - any-glob-to-any-file: Exiled.Events/Patches/**/* # Any modifications to transpiler files + +CustomModules: # Add the 'CustomModules' label +- changed-files: + - any-glob-to-any-file: Exiled.CustomModules/** # Any modifications to CustomModules + +Installer: # Add the 'Installer' label +- changed-files: + - any-glob-to-any-file: Exiled.Installer/** # Any modifications to the Installer + +Localization: # Add the 'Localization' label +- changed-files: + - any-glob-to-any-file: Localization/** # Any modifications to Localization + +GitHub_Actions: # Add the 'GitHub' label +- changed-files: + - any-glob-to-any-file: .github/** # Any modifications to github related files + diff --git a/.github/workflows/pull_request_opened.yml b/.github/workflows/pull_request_opened.yml new file mode 100644 index 0000000000..0431ef959b --- /dev/null +++ b/.github/workflows/pull_request_opened.yml @@ -0,0 +1,75 @@ +name: Pull Request Opened + +on: + pull_request: + types: + - opened + - labeled + - unlabeled + workflow_dispatch: + +jobs: + set-labels: + runs-on: ubuntu-latest + steps: + - name: Labeler + uses: actions/labeler@v5.0.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/labeler.yml + sync-labels: true + + update-pr-title: + runs-on: ubuntu-latest + needs: set-labels + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Get PR Info + id: get_pr + uses: octokit/request-action@v2.x + with: + route: GET /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update PR Title + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_TITLE=$(jq -r '.title' <<<"${{ steps.get_pr.outputs.data }}") + PR_LABELS=$(jq -r '.labels | map(.name) | join(",")' <<<"${{ steps.get_pr.outputs.data }}") + PREFIX="" + + if [[ "$PR_LABELS" == *"Documentation"* ]]; then + PREFIX="[Docs]" + elif [[ "$PR_LABELS" == *"NuGet"* ]]; then + PREFIX="[NuGet]" + elif [[ "$PR_LABELS" == *"Scripts"* ]]; then + PREFIX="[Scripts]" + elif [[ "$PR_LABELS" == *"regarding-events"* ]]; then + PREFIX="[Events]" + elif [[ "$PR_LABELS" == *"regarding-api"* ]]; then + PREFIX="[API]" + elif [[ "$PR_LABELS" == *"regarding-transpiler"* ]]; then + PREFIX="[Transpiler]" + elif [[ "$PR_LABELS" == *"CustomModules"* ]]; then + PREFIX="[CustomModules]" + elif [[ "$PR_LABELS" == *"Installer"* ]]; then + PREFIX="[Installer]" + elif [[ "$PR_LABELS" == *"Localization"* ]]; then + PREFIX="[Localization]" + elif [[ "$PR_LABELS" == *"GitHub_Actions"* ]]; then + PREFIX="[GitHub]" + fi + + NEW_TITLE="$PREFIX $PR_TITLE" + + if [[ "$NEW_TITLE" != "$PR_TITLE" ]]; then + curl -X PATCH \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }} \ + -d "{\"title\":\"$NEW_TITLE\"}" + fi