ci/efmls-configs: merge language sets with different cases

Merge entries that are the same language but with different casing.
This commit is contained in:
Austin Horstman 2025-06-23 23:08:59 -05:00
parent b74cec1698
commit 7594bac24e

View file

@ -13,27 +13,34 @@ let
miscFormatters = toLangTools' "misc" "formatters"; miscFormatters = toLangTools' "misc" "formatters";
sources = sources =
(lib.listToAttrs (
lib.map (
lang:
let let
toLangTools = toLangTools' lang; # Group languages by lowercase name and merge their tools
groupedLanguages = builtins.groupBy (lang: lib.toLower lang) languages;
mergedLanguages = lib.mapAttrs (
lowerLang: langList:
let
# Use the first language as the canonical name but prefer lowercase if available
canonicalLang = if lib.elem lowerLang langList then lowerLang else lib.head langList;
# Merge all tools from all case variations
allLinters = lib.unique (lib.concatMap (lang: toLangTools' lang "linters") langList);
allFormatters = lib.unique (lib.concatMap (lang: toLangTools' lang "formatters") langList);
in in
{ {
name = lang; name = canonicalLang;
value = { value = {
linter = { linter = {
inherit lang; lang = canonicalLang;
possible = (toLangTools "linters") ++ miscLinters; possible = allLinters ++ miscLinters;
}; };
formatter = { formatter = {
inherit lang; lang = canonicalLang;
possible = (toLangTools "formatters") ++ miscFormatters; possible = allFormatters ++ miscFormatters;
}; };
}; };
} }
) languages ) groupedLanguages;
)) in
(lib.listToAttrs (lib.attrValues mergedLanguages))
// { // {
all = { all = {
linter = { linter = {