lib: Add auxiliary functions to deal with flags

This commit is contained in:
Mikael 2024-08-24 13:10:45 +02:00
parent 5c9c332019
commit 2adf0bdd4f
Signed by: mikael
SSH key fingerprint: SHA256:21QyD2Meiot7jOUVitIR5YkGB/XuXdCvLW1hE6dsri0

24
lib/flags.nix Normal file
View file

@ -0,0 +1,24 @@
{ nixpkgs, ... }:
let
inherit (builtins) any filter isList isString stringLength;
inherit (nixpkgs.lib.strings) addContextFrom;
split = strOrList:
if isList strOrList then strOrList
else builtins.split "[[:space:]]+" strOrList
|> filter (flag: isString flag && stringLength flag > 0)
|> map (flag: addContextFrom strOrList flag);
remerge = strOrList: list:
if isList strOrList then list
else toString list;
in {
remove = rem: strOrList: split strOrList
|> filter (flag: !any (elem: flag == elem) rem)
|> remerge strOrList;
subst = sub: strOrList: split strOrList
|> map (flag: sub.${flag} or flag)
|> remerge strOrList;
}