feat(plugins/starlists): add ignored and aliases for starlists.languages and some fix (#1224)
This commit is contained in:
@@ -96,6 +96,27 @@ All product and company names are trademarks™ or registered® trademarks of th
|
||||
<br>
|
||||
<b>zero behaviour:</b> disable</br>
|
||||
<b>default:</b> 8<br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap"><h4><code>plugin_starlists_languages_ignored</code></h4></td>
|
||||
<td rowspan="2"><p>Ignored languages in star lists</p>
|
||||
<img width="900" height="1" alt=""></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">✨ On <code>master</code>/<code>main</code><br>
|
||||
<b>type:</b> <code>array</code>
|
||||
<i>(comma-separated)</i>
|
||||
<br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap"><h4><code>plugin_starlists_languages_aliases</code></h4></td>
|
||||
<td rowspan="2"><p>Custom languages names in star lists</p>
|
||||
<img width="900" height="1" alt=""></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap">✨ On <code>master</code>/<code>main</code><br>
|
||||
<b>type:</b> <code>string</code>
|
||||
<br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td nowrap="nowrap"><h4><code>plugin_starlists_shuffle_repositories</code></h4></td>
|
||||
|
||||
@@ -7,9 +7,10 @@ export default async function({login, q, imports, data, account}, {enabled = fal
|
||||
return null
|
||||
|
||||
//Load inputs
|
||||
let {limit, ignored, only, "limit.repositories": _limit, languages, "limit.languages": _limit_languages, "shuffle.repositories": _shuffle} = imports.metadata.plugins.starlists.inputs({data, account, q})
|
||||
let {limit, ignored, only, "limit.repositories": _limit, languages, "limit.languages": _limit_languages, "languages.ignored": _languages_ignored, "languages.aliases": _languages_aliases, "shuffle.repositories": _shuffle} = imports.metadata.plugins.starlists.inputs({data, account, q})
|
||||
ignored = ignored.map(imports.stripemojis)
|
||||
only = only.map(imports.stripemojis)
|
||||
_languages_aliases = Object.fromEntries(_languages_aliases.split(",").filter(alias => /^[\s\S]+:[\s\S]+$/.test(alias)).map(alias => alias.trim().split(":")).map(([key, value]) => [key.toLocaleLowerCase(), value]))
|
||||
|
||||
//Start puppeteer and navigate to star lists
|
||||
console.debug(`metrics/compute/${login}/plugins > starlists > starting browser`)
|
||||
@@ -63,7 +64,7 @@ export default async function({login, q, imports, data, account}, {enabled = fal
|
||||
}))
|
||||
),
|
||||
)
|
||||
if (await page.evaluate(() => document.querySelector(".next_page.disabled"))) {
|
||||
if (!(await page.evaluate(() => document.querySelector(".next_page"))) || await page.evaluate(() => document.querySelector(".next_page.disabled"))) {
|
||||
console.debug(`metrics/compute/${login}/plugins > starlists > reached last page`)
|
||||
break
|
||||
}
|
||||
@@ -76,12 +77,16 @@ export default async function({login, q, imports, data, account}, {enabled = fal
|
||||
if (languages) {
|
||||
list.languages = {}
|
||||
for (const {language: {name, color}} of repositories) {
|
||||
if (name)
|
||||
list.languages[name] = (list.languages[name] ?? 0) + 1
|
||||
let lang = name
|
||||
if (lang && lang.toLocaleLowerCase() in _languages_aliases) {
|
||||
lang = _languages_aliases[name.toLocaleLowerCase()]
|
||||
}
|
||||
if (lang)
|
||||
list.languages[lang] = (list.languages[lang] ?? 0) + 1
|
||||
if (color)
|
||||
colors[name] = color
|
||||
colors[lang] = color
|
||||
}
|
||||
list.languages = Object.entries(list.languages).sort((a, b) => b[1] - a[1]).slice(0, _limit_languages || Infinity)
|
||||
list.languages = Object.entries(list.languages).filter(([name]) => !_languages_ignored.includes(name.toLocaleLowerCase())).sort((a, b) => b[1] - a[1]).slice(0, _limit_languages || Infinity)
|
||||
const visible = list.languages.map(([_, value]) => value).reduce((a, b) => a + b, 0)
|
||||
list.languages = list.languages.map(([name, value]) => ({name, value, color: name in colors ? `#${colors[name]}` : null, x: 0, p: value / visible}))
|
||||
for (let i = 1; i < list.languages.length; i++)
|
||||
|
||||
@@ -48,6 +48,21 @@ inputs:
|
||||
default: 8
|
||||
min: 0
|
||||
zero: disable
|
||||
|
||||
plugin_starlists_languages_ignored:
|
||||
description: |
|
||||
Ignored languages in star lists
|
||||
type: array
|
||||
format: comma-separated
|
||||
default: ""
|
||||
example: html, css, ...
|
||||
|
||||
plugin_starlists_languages_aliases:
|
||||
description: |
|
||||
Custom languages names in star lists
|
||||
type: string
|
||||
default: ""
|
||||
example: javascript:JS, typescript:TS
|
||||
|
||||
plugin_starlists_shuffle_repositories:
|
||||
description: |
|
||||
|
||||
Reference in New Issue
Block a user