From d3c42d58dad62c5f28745a5c7e92006a7ae6aef3 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Tue, 15 Dec 2020 16:00:08 -0800 Subject: [PATCH] feat(generated-files-bot): configurable list of PR authors to ignore (#1254) Fixes #1096 --- packages/generated-files-bot/README.md | 1 + .../src/generated-files-bot.ts | 7 +++++++ .../test/fixtures/config/ignore-authors.yml | 11 +++++++++++ .../test/generated-files-bot.ts | 17 +++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 packages/generated-files-bot/test/fixtures/config/ignore-authors.yml diff --git a/packages/generated-files-bot/README.md b/packages/generated-files-bot/README.md index 836c6177e5a..b1c615cc1b4 100644 --- a/packages/generated-files-bot/README.md +++ b/packages/generated-files-bot/README.md @@ -24,6 +24,7 @@ options: | ---- | ----------- | ---- | ------- | | `generatedFiles` | An explicit list of files which are considered templates. | `string[]` | `[]` | | `externalManifests` | List of external manifest files to parse. | `ExternalManifest[]` | `[]` | +| `ignoreAuthors` | List of PR authors to ignore. | `string[]` | `[]` | External Manifest: diff --git a/packages/generated-files-bot/src/generated-files-bot.ts b/packages/generated-files-bot/src/generated-files-bot.ts index e9079017d9d..72b4157021b 100644 --- a/packages/generated-files-bot/src/generated-files-bot.ts +++ b/packages/generated-files-bot/src/generated-files-bot.ts @@ -31,6 +31,7 @@ interface ExternalManifest { export interface Configuration { generatedFiles?: string[]; externalManifests?: ExternalManifest[]; + ignoreAuthors?: string[]; } /** @@ -165,6 +166,12 @@ export function handler(app: Application) { const owner = context.payload.repository.owner.login; const repo = context.payload.repository.name; const pullNumber = context.payload.pull_request.number; + const prAuthor = context.payload.pull_request.user.login; + + // ignore PRs from a configurable list of authors + if (config.ignoreAuthors?.includes(prAuthor)) { + return; + } // Read the list of templated files const templatedFiles = new Set( diff --git a/packages/generated-files-bot/test/fixtures/config/ignore-authors.yml b/packages/generated-files-bot/test/fixtures/config/ignore-authors.yml new file mode 100644 index 00000000000..30c0eda9248 --- /dev/null +++ b/packages/generated-files-bot/test/fixtures/config/ignore-authors.yml @@ -0,0 +1,11 @@ +generatedFiles: +- 'file1.txt' +externalManifests: +- type: json + file: 'manifest.json' + jsonpath: '$.key1[*]' +- type: 'yaml' + file: 'manifest.yaml' + jsonpath: '$.key2.key3[*]' +ignoreAuthors: +- testuser2 \ No newline at end of file diff --git a/packages/generated-files-bot/test/generated-files-bot.ts b/packages/generated-files-bot/test/generated-files-bot.ts index 74e042880b0..22ce38c7999 100644 --- a/packages/generated-files-bot/test/generated-files-bot.ts +++ b/packages/generated-files-bot/test/generated-files-bot.ts @@ -404,6 +404,23 @@ describe('generated-files-bot', () => { }); requests.done(); }); + + it('ignores PRs from configured autors', async () => { + const validConfig = fs.readFileSync( + resolve(fixturesPath, 'config', 'ignore-authors.yml') + ); + requests = requests + .get( + '/repos/testOwner/testRepo/contents/.github%2Fgenerated-files-bot.yml' + ) + .reply(200, validConfig); + await probot.receive({ + name: 'pull_request', + payload: payload, + id: 'abc123', + }); + requests.done(); + }); }); }); });