From 11cc148dcbfb2f2784f0f98e9acc3701f6ab61e0 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Thu, 24 Aug 2023 13:56:55 +1200 Subject: [PATCH 1/3] custom domain support --- action.yml | 7 ++++++- index.js | 25 ++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/action.yml b/action.yml index 77d7ba21..55179821 100644 --- a/action.yml +++ b/action.yml @@ -5,4 +5,9 @@ branding: color: orange runs: using: 'node16' - main: 'index.js' \ No newline at end of file + main: 'index.js' +inputs: + custom-domains: + description: 'Define custom domains other than "github.com"' + required: false + default: [] \ No newline at end of file diff --git a/index.js b/index.js index 8d3d626a..db33c380 100644 --- a/index.js +++ b/index.js @@ -1,13 +1,28 @@ -const core = require('@actions/core'); -const github = require('@actions/github'); +// const core = require('@actions/core'); +// const github = require('@actions/github'); const keyPhrases = 'depends on|blocked by'; -const issueTypes = 'issues|pull' +const issueTypes = 'issues|pull'; +const domainsList = ['github.com', 'custom-domain.edu']; // add others from parameter +const domainsString = combineDomains(domainsList); + const quickLinkRegex = new RegExp(`(${keyPhrases}) #(\\d+)`, 'gmi'); const partialLinkRegex = new RegExp(`(${keyPhrases}) ([-_\\w]+)\\/([-._a-z0-9]+)(#)(\\d+)`, 'gmi'); const partialUrlRegex = new RegExp(`(${keyPhrases}) ([-_\\w]+)\\/([-._a-z0-9]+)\\/(${issueTypes})\\/(\\d+)`, 'gmi'); -const fullUrlRegex = new RegExp(`(${keyPhrases}) https:\\/\\/github\\.com\\/([-_\\w]+)\\/([-._a-z0-9]+)\\/(${issueTypes})\\/(\\d+)`, 'gmi'); -const markdownRegex = new RegExp(`(${keyPhrases}) \\[.*\\]\\(https:\\/\\/github\\.com\\/([-_\\w]+)\\/([-._a-z0-9]+)\\/(${issueTypes})\\/(\\d+)\\)`, 'gmi'); +const fullUrlRegex = new RegExp(`(${keyPhrases}) https?:\\/\\/(?:${domainsString})\\/([-_\\w]+)\\/([-._a-z0-9]+)\\/(${issueTypes})\\/(\\d+)`, 'gmi'); +const markdownRegex = new RegExp(`(${keyPhrases}) \\[.*\\]\\(https?:\\/\\/(?:${domainsString})\\/([-_\\w]+)\\/([-._a-z0-9]+)\\/(${issueTypes})\\/(\\d+)\\)`, 'gmi'); + +function escapeDomainForRegex(domain) { + return domain.replace('.', '\\.'); +} + +function combineDomains(domains) { + return domains.map(x => escapeDomainForRegex(x)).join("|"); +} + +console.log(fullUrlRegex); + +return; function extractFromMatch(match) { return { From f64002d7c9d73d03d3c72b34bba1bd07316ab7c7 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Thu, 24 Aug 2023 14:06:09 +1200 Subject: [PATCH 2/3] get input; update readme --- README.md | 9 +++++++-- index.js | 8 +++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 39e7c2ab..6cb0b2f4 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,13 @@ The action can detect links in the following styles: - Quick Link: `#5` - Partial Link: `gregsdennis/dependencies-action#5` - Partial URL: `gregsdennis/dependencies-action/pull/5` -- Full URL: `http://github.com/gregsdennis/dependencies-action/pull/5` -- Markdown: `[markdown link](http://github.com/gregsdennis/dependencies-action/pull/5)` +- Full URL: `https://github.com/gregsdennis/dependencies-action/pull/5` +- Markdown: `[markdown link](https://github.com/gregsdennis/dependencies-action/pull/5)` Works for both issues and PRs! +Also supports custom domains for use with GitHub Enterprise! + ## See it in action: - [PR to be landed first](http://github.com/gregsdennis/dependencies-action/pull/4) @@ -34,6 +36,9 @@ jobs: name: Check Dependencies steps: - uses: gregsdennis/dependencies-action@main + with: + custom-domains: + - my-custom-domain.io env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` diff --git a/index.js b/index.js index db33c380..4cca82c4 100644 --- a/index.js +++ b/index.js @@ -1,9 +1,11 @@ -// const core = require('@actions/core'); -// const github = require('@actions/github'); +const core = require('@actions/core'); +const github = require('@actions/github'); + +var customDomains = core.getInput('custom-domains') ?? []; const keyPhrases = 'depends on|blocked by'; const issueTypes = 'issues|pull'; -const domainsList = ['github.com', 'custom-domain.edu']; // add others from parameter +const domainsList = ['github.com'].concat(customDomains); // add others from parameter const domainsString = combineDomains(domainsList); const quickLinkRegex = new RegExp(`(${keyPhrases}) #(\\d+)`, 'gmi'); From 9aa92ae7e8e88b967582803af153f789f68a9551 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Thu, 24 Aug 2023 14:20:23 +1200 Subject: [PATCH 3/3] github action inputs can't be arrays; use a string instead --- README.md | 3 +-- action.yml | 4 ++-- index.js | 6 +----- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6cb0b2f4..3a5918e1 100644 --- a/README.md +++ b/README.md @@ -37,8 +37,7 @@ jobs: steps: - uses: gregsdennis/dependencies-action@main with: - custom-domains: - - my-custom-domain.io + custom-domains: my-custom-domain.io another.domain.com env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` diff --git a/action.yml b/action.yml index 55179821..341948ca 100644 --- a/action.yml +++ b/action.yml @@ -8,6 +8,6 @@ runs: main: 'index.js' inputs: custom-domains: - description: 'Define custom domains other than "github.com"' + description: 'Space-delimited list of custom domains where issues may be found' required: false - default: [] \ No newline at end of file + default: null \ No newline at end of file diff --git a/index.js b/index.js index 4cca82c4..ce2c16be 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ const core = require('@actions/core'); const github = require('@actions/github'); -var customDomains = core.getInput('custom-domains') ?? []; +var customDomains = core.getInput('custom-domains')?.split(/(\s+)/) ?? []; const keyPhrases = 'depends on|blocked by'; const issueTypes = 'issues|pull'; @@ -22,10 +22,6 @@ function combineDomains(domains) { return domains.map(x => escapeDomainForRegex(x)).join("|"); } -console.log(fullUrlRegex); - -return; - function extractFromMatch(match) { return { owner: match[2],