From 681ac3bf4db5bca2048163a84eb082edb6c47f6c Mon Sep 17 00:00:00 2001 From: Simon Lecoq <22963968+lowlighter@users.noreply.github.com> Date: Fri, 26 Nov 2021 03:08:09 +0100 Subject: [PATCH] feat(plugins/traffic): add `plugin_traffic_skipped` (#678) --- source/plugins/traffic/index.mjs | 5 +++-- source/plugins/traffic/metadata.yml | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/source/plugins/traffic/index.mjs b/source/plugins/traffic/index.mjs index 887402e7..c8faec40 100644 --- a/source/plugins/traffic/index.mjs +++ b/source/plugins/traffic/index.mjs @@ -7,7 +7,8 @@ export default async function({login, imports, data, rest, q, account}, {enabled return null //Load inputs - imports.metadata.plugins.traffic.inputs({data, account, q}) + let {skipped} = imports.metadata.plugins.traffic.inputs({data, account, q}) + skipped.push(...data.shared["repositories.skipped"]) //Repositories const repositories = data.user.repositories.nodes.map(({name:repo, owner:{login:owner}}) => ({repo, owner})) ?? [] @@ -15,7 +16,7 @@ export default async function({login, imports, data, rest, q, account}, {enabled //Get views stats from repositories console.debug(`metrics/compute/${login}/plugins > traffic > querying api`) const views = {count:0, uniques:0} - const response = await Promise.all(repositories.map(({repo, owner}) => rest.repos.getViews({owner, repo}))) + const response = [...await Promise.allSettled(repositories.map(({repo, owner}) => (skipped.includes(repo.toLocaleLowerCase())) || (skipped.includes(`${owner}/${repo}`.toLocaleLowerCase())) ? {} : rest.repos.getViews({owner, repo})))].filter(({status}) => status === "fulfilled").map(({value}) => value) //Compute views console.debug(`metrics/compute/${login}/plugins > traffic > computing stats`) diff --git a/source/plugins/traffic/metadata.yml b/source/plugins/traffic/metadata.yml index 0b03ee67..45c4e3ca 100644 --- a/source/plugins/traffic/metadata.yml +++ b/source/plugins/traffic/metadata.yml @@ -12,3 +12,11 @@ inputs: description: Display repositories traffic metrics type: boolean default: no + + # List of repositories that will be skipped + plugin_traffic_skipped: + description: Repositories to skip + type: array + format: comma-separated + default: "" + example: my-repo-1, my-repo-2, owner/repo-3 ... \ No newline at end of file