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."); }