feat(plugins/code): add plugin_code_languages option (#652)
This commit is contained in:
@@ -15,7 +15,7 @@ export default async function({login, q, imports, data, rest, account}, {enabled
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Load inputs
|
//Load inputs
|
||||||
let {load, lines, visibility, skipped} = imports.metadata.plugins.code.inputs({data, q, account})
|
let {load, lines, visibility, languages, skipped} = imports.metadata.plugins.code.inputs({data, q, account})
|
||||||
skipped.push(...data.shared["repositories.skipped"])
|
skipped.push(...data.shared["repositories.skipped"])
|
||||||
const pages = Math.ceil(load / 100)
|
const pages = Math.ceil(load / 100)
|
||||||
|
|
||||||
@@ -43,9 +43,12 @@ export default async function({login, q, imports, data, rest, account}, {enabled
|
|||||||
console.debug(`metrics/compute/${login}/plugins > code > ${events.length} events loaded`)
|
console.debug(`metrics/compute/${login}/plugins > code > ${events.length} events loaded`)
|
||||||
|
|
||||||
//Search for a random snippet
|
//Search for a random snippet
|
||||||
const files = events
|
let files = events
|
||||||
.flatMap(({sha, commit:{message, url}, files}) => files.map(({filename, status, additions, deletions, patch}) => ({sha, message, filename, status, additions, deletions, patch, repo:url.match(/repos[/](?<repo>[\s\S]+)[/]git[/]commits/)?.groups?.repo})))
|
.flatMap(({sha, commit:{message, url}, files}) => files.map(({filename, status, additions, deletions, patch}) => ({sha, message, filename, status, additions, deletions, patch, repo:url.match(/repos[/](?<repo>[\s\S]+)[/]git[/]commits/)?.groups?.repo})))
|
||||||
.filter(({patch}) => (patch ? (patch.match(/\n/mg)?.length ?? 1) : Infinity) < lines)
|
.filter(({patch}) => (patch ? (patch.match(/\n/mg)?.length ?? 1) : Infinity) < lines)
|
||||||
|
for (const file of files)
|
||||||
|
file.language = await imports.language({...file, prefix:login}).catch(() => "unknown")
|
||||||
|
files = files.filter(({language}) => (!languages.length)||(languages.includes(language.toLocaleLowerCase())))
|
||||||
const snippet = files[Math.floor(Math.random()*files.length)] ?? null
|
const snippet = files[Math.floor(Math.random()*files.length)] ?? null
|
||||||
if (snippet) {
|
if (snippet) {
|
||||||
//Trim common indent from content and change line feed
|
//Trim common indent from content and change line feed
|
||||||
|
|||||||
@@ -45,3 +45,12 @@ inputs:
|
|||||||
format: comma-separated
|
format: comma-separated
|
||||||
default: ""
|
default: ""
|
||||||
example: my-repo-1, my-repo-2, owner/repo-3 ...
|
example: my-repo-1, my-repo-2, owner/repo-3 ...
|
||||||
|
|
||||||
|
# Restrict code snippet languages
|
||||||
|
# These are guessed through linguist
|
||||||
|
plugin_code_languages:
|
||||||
|
description: Restrict code snippet languages
|
||||||
|
type: array
|
||||||
|
format: comma-separated
|
||||||
|
default: ""
|
||||||
|
example: javascript, typescript, ....
|
||||||
Reference in New Issue
Block a user