diff --git a/README.md b/README.md index a2136ba2..c1a67999 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Generate metrics that can be embedded everywhere, including your GitHub profile -

🧩 Customizable with 42 plugins and 296 options!

+

🧩 Customizable with 42 plugins and 298 options!

diff --git a/action.yml b/action.yml index 54265f21..e1d6da1e 100644 --- a/action.yml +++ b/action.yml @@ -710,6 +710,14 @@ inputs: description: Display limit (languages per star list) default: + plugin_starlists_languages_ignored: + description: Ignored languages in star lists + default: + + plugin_starlists_languages_aliases: + description: Custom languages names in star lists + default: + plugin_starlists_shuffle_repositories: description: Shuffle data default: diff --git a/source/plugins/base/README.md b/source/plugins/base/README.md index 2151e439..7ffed649 100644 --- a/source/plugins/base/README.md +++ b/source/plugins/base/README.md @@ -97,8 +97,7 @@ Only use this option when using a plugin that can be configured with token - ✨ On master/main
-type: boolean + type: boolean
default: no
diff --git a/source/plugins/community/chess/README.md b/source/plugins/community/chess/README.md index 0bbdf2eb..c9a7ef97 100644 --- a/source/plugins/community/chess/README.md +++ b/source/plugins/community/chess/README.md @@ -40,8 +40,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
-type: boolean + type: boolean
default: no
@@ -52,7 +51,6 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th šŸ” Token
-✨ On master/main
🌐 Web instances must configure settings.json:
  • metrics.api.chess.any
  • @@ -67,7 +65,6 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th āÆļø Cannot be preset
    -✨ On master/main
    type: string
    default: → User login
    @@ -78,8 +75,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: string + type: string
    allowed values:
    • lichess.org
    @@ -94,8 +90,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: json + type: json
    default:
    → Click to expand
    {
       "size": 40,
    diff --git a/source/plugins/habits/README.md b/source/plugins/habits/README.md
    index bdad4cf8..d77c0b76 100644
    --- a/source/plugins/habits/README.md
    +++ b/source/plugins/habits/README.md
    @@ -65,7 +65,6 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th
       
       
         ā© Inherits repositories_skipped
    -✨ On master/main
    type: array (comma-separated)
    diff --git a/source/plugins/languages/metadata.yml b/source/plugins/languages/metadata.yml index f730f873..4c09f1bd 100644 --- a/source/plugins/languages/metadata.yml +++ b/source/plugins/languages/metadata.yml @@ -76,7 +76,7 @@ inputs: Custom languages names type: string default: "" - example: javascript:JS typescript:TS + example: javascript:JS, typescript:TS plugin_languages_sections: description: | diff --git a/source/plugins/leetcode/README.md b/source/plugins/leetcode/README.md index d0b04870..9f235697 100644 --- a/source/plugins/leetcode/README.md +++ b/source/plugins/leetcode/README.md @@ -39,8 +39,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: boolean + type: boolean
    default: no
    @@ -51,7 +50,6 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th āÆļø Cannot be preset
    -✨ On master/main
    type: string
    default: → User login
    @@ -67,8 +65,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: array + type: array (comma-separated)
    default: solved
    @@ -80,8 +77,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: number + type: number (0 ≤ š‘„)
    @@ -94,8 +90,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: number + type: number (1 ≤ š‘„ ≤ 15) diff --git a/source/plugins/notable/README.md b/source/plugins/notable/README.md index ae53ed8e..4dd462ab 100644 --- a/source/plugins/notable/README.md +++ b/source/plugins/notable/README.md @@ -133,8 +133,7 @@ Some repositories may not be able to reported advanced stats and in the case the - ✨ On master/main
    -type: boolean + type: boolean
    default: no
    diff --git a/source/plugins/repositories/README.md b/source/plugins/repositories/README.md index c1da0f6d..935dd7c0 100644 --- a/source/plugins/repositories/README.md +++ b/source/plugins/repositories/README.md @@ -117,8 +117,7 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th - ✨ On master/main
    -type: boolean + type: boolean
    default: no
    diff --git a/source/plugins/starlists/README.md b/source/plugins/starlists/README.md index a96f05ec..e90dfed8 100644 --- a/source/plugins/starlists/README.md +++ b/source/plugins/starlists/README.md @@ -96,6 +96,27 @@ All product and company names are trademarksā„¢ or registeredĀ® trademarks of th
    zero behaviour: disable
    default: 8
    + + +

    plugin_starlists_languages_ignored

    +

    Ignored languages in star lists

    + + + + ✨ On master/main
    +type: array +(comma-separated) +
    + + +

    plugin_starlists_languages_aliases

    +

    Custom languages names in star lists

    + + + + ✨ On master/main
    +type: string +

    plugin_starlists_shuffle_repositories

    diff --git a/source/plugins/starlists/index.mjs b/source/plugins/starlists/index.mjs index 6ba8a518..e1384135 100644 --- a/source/plugins/starlists/index.mjs +++ b/source/plugins/starlists/index.mjs @@ -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++) diff --git a/source/plugins/starlists/metadata.yml b/source/plugins/starlists/metadata.yml index 87267654..6be701a2 100644 --- a/source/plugins/starlists/metadata.yml +++ b/source/plugins/starlists/metadata.yml @@ -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: |