mirror of
https://github.com/d3ward/toolz.git
synced 2025-02-24 07:44:02 +08:00
59 lines
2.1 KiB
YAML
59 lines
2.1 KiB
YAML
name: Issue Template Checks
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
check-required-fields:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Comment on Issues Missing Required Fields
|
|
uses: actions/github-script@v6
|
|
with:
|
|
script: |
|
|
const issue = context.payload.issue;
|
|
const issueLabels = issue.labels.map(label => label.name);
|
|
const hasRelevantLabel = issueLabels.includes('failed-test') || issueLabels.includes('verified-test');
|
|
|
|
// Proceed only if the issue has a relevant label
|
|
if (!hasRelevantLabel) {
|
|
console.log("Issue does not have relevant labels. Skipping.");
|
|
return;
|
|
}
|
|
|
|
const requiredFields = [
|
|
"Browser:",
|
|
"OS:",
|
|
"Adblock Solution",
|
|
"Description of Issue:",
|
|
"Test Result:",
|
|
];
|
|
|
|
// Helper function to check if a required field is actually filled
|
|
const isFieldMissing = (field) => {
|
|
// Regex to find the field and any subsequent text
|
|
const fieldRegex = new RegExp(`${field}\\s*:\\s*(.+)`);
|
|
const match = issue.body.match(fieldRegex);
|
|
|
|
// Check if the field is present and has content after the colon
|
|
return !match || match[1].trim().length === 0;
|
|
};
|
|
|
|
// Find all missing fields
|
|
const missingFields = requiredFields.filter(isFieldMissing);
|
|
|
|
// If there are missing fields, post a comment
|
|
if (missingFields.length > 0) {
|
|
const commentBody = `Hello @${issue.user.login}, it looks like your issue is missing some required information: \n- ${missingFields.join("\n- ")}\nPlease update your issue to include this information.`;
|
|
await github.rest.issues.createComment({
|
|
issue_number: issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: commentBody
|
|
});
|
|
} else {
|
|
console.log("Issue contains all required fields.");
|
|
}
|