mirror of
https://github.com/github/awesome-copilot.git
synced 2026-05-27 17:11:44 +00:00
2ca49df9d4
* Adding a new /rerun-intake command for when updates are required Reruns the intake process if feedback is given that will require the submitter to update something about the submittion. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Use rerun command constant in parser regex Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
80 lines
2.6 KiB
YAML
80 lines
2.6 KiB
YAML
name: External Plugin Intake
|
|
|
|
on:
|
|
issues:
|
|
types: [opened, edited, reopened]
|
|
|
|
concurrency:
|
|
group: external-plugin-intake-${{ github.event.issue.number }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
issues: write
|
|
|
|
jobs:
|
|
validate-submission:
|
|
runs-on: ubuntu-latest
|
|
if: >-
|
|
contains(github.event.issue.labels.*.name, 'external-plugin') ||
|
|
contains(github.event.issue.body, '<!-- external-plugin-submission -->')
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
|
|
|
|
- name: Evaluate submission
|
|
id: evaluation
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
result=$(node ./eng/external-plugin-intake.mjs "$GITHUB_EVENT_PATH")
|
|
{
|
|
echo 'result<<EOF'
|
|
echo "$result"
|
|
echo 'EOF'
|
|
} >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Sync labels and comment
|
|
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7.1.0
|
|
env:
|
|
RESULT_JSON: ${{ steps.evaluation.outputs.result }}
|
|
with:
|
|
script: |
|
|
const path = require('path');
|
|
const { pathToFileURL } = require('url');
|
|
|
|
const intakeState = await import(pathToFileURL(path.join(process.env.GITHUB_WORKSPACE, 'eng', 'external-plugin-intake-state.mjs')).href);
|
|
|
|
const result = JSON.parse(process.env.RESULT_JSON);
|
|
const issueNumber = context.issue.number;
|
|
const issueState = context.payload.issue.state;
|
|
const action = context.payload.action;
|
|
const existingLabelNames = (context.payload.issue.labels || []).map((label) => label.name);
|
|
|
|
if (existingLabelNames.includes('approved')) {
|
|
core.info('Issue is already approved; skipping intake synchronization.');
|
|
return;
|
|
}
|
|
|
|
if (issueState === 'closed' && action !== 'reopened') {
|
|
core.info('Issue is closed; waiting for reopen before rerunning intake synchronization.');
|
|
return;
|
|
}
|
|
|
|
await intakeState.applyExternalPluginIntakeEvaluation({
|
|
github,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issueNumber,
|
|
evaluation: result
|
|
});
|
|
|
|
if (!result.valid && issueState === 'open') {
|
|
await github.rest.issues.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: issueNumber,
|
|
state: 'closed'
|
|
});
|
|
}
|