lib: Add auxiliary functions to deal with flags
This commit is contained in:
parent
5c9c332019
commit
2adf0bdd4f
1 changed files with 24 additions and 0 deletions
24
lib/flags.nix
Normal file
24
lib/flags.nix
Normal 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;
|
||||||
|
}
|
Loading…
Reference in a new issue