]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add workflow for automatic issue headers (#108054)
authorAdam Turner <9087854+AA-Turner@users.noreply.github.com>
Thu, 17 Aug 2023 15:37:07 +0000 (16:37 +0100)
committerGitHub <noreply@github.com>
Thu, 17 Aug 2023 15:37:07 +0000 (16:37 +0100)
We don't get the "Bug report" and "Feature or enhancement" titles anymore, with the new issue forms. This brings them back!

.github/workflows/add-issue-header.yml [new file with mode: 0644]

diff --git a/.github/workflows/add-issue-header.yml b/.github/workflows/add-issue-header.yml
new file mode 100644 (file)
index 0000000..1ef9178
--- /dev/null
@@ -0,0 +1,53 @@
+name: Add issue header
+# Automatically edits an issue's descriptions with a header,
+# one of:
+#
+# - Bug report
+# - Crash report
+# - Feature or enhancement
+
+on:
+  issues:
+    types:
+      # Only ever run once
+      - opened
+
+
+jobs:
+  add-header:
+    runs-on: ubuntu-latest
+    permissions:
+      issues: write
+    steps:
+      - uses: actions/github-script@v6
+        with:
+          # language=JavaScript
+          script: |
+            // https://devguide.python.org/triage/labels/#type-labels
+            const HEADERS = new Map([
+              ['type-bug', 'Bug report'],
+              ['type-crash', 'Crash report'],
+              ['type-feature', 'Feature or enhancement'],
+            ]);
+            let issue_data = await github.rest.issues.get({
+              issue_number: context.issue.number,
+              owner: context.repo.owner,
+              repo: context.repo.repo
+            }).then(issue => issue.data);
+            let header = '';
+            for (const label_data of issue_data.labels) {
+                const label_name = (typeof label_data === 'string') ? label_data : label_data.name;
+                if (HEADERS.has(label_name)) {
+                    header = HEADERS.get(label_name);
+                    break;
+                }
+            }
+            if (header !== '') {
+              console.log(`Setting new header: ${header}`);
+              await github.rest.issues.update({
+                  issue_number: context.issue.number,
+                  owner: context.repo.owner,
+                  repo: context.repo.repo,
+                  body: `# ${header}\n\n${issue_data.body.replaceAll('\r', '')}`
+              });
+            }