mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 00:43:20 +00:00
makeDesktopItem: improve error messages
This commit is contained in:
parent
878480eec4
commit
9a5b1d3ca2
@ -36,7 +36,7 @@
|
||||
let
|
||||
# FIXME: workaround until https://github.com/NixOS/nixpkgs/pull/162246 lands
|
||||
cleanName = if lib.hasInfix " " name
|
||||
then throw "Name must not contain spaces!"
|
||||
then throw "makeDesktopItem: name must not contain spaces!"
|
||||
else name;
|
||||
|
||||
# There are multiple places in the FDO spec that make "boolean" values actually tristate,
|
||||
@ -45,13 +45,13 @@ let
|
||||
boolOrNullToString = value:
|
||||
if value == null then null
|
||||
else if builtins.isBool value then lib.boolToString value
|
||||
else throw "Value must be a boolean or null!";
|
||||
else throw "makeDesktopItem: value must be a boolean or null!";
|
||||
|
||||
# Multiple values are represented as one string, joined by semicolons.
|
||||
# Technically, it's possible to escape semicolons in values with \;, but this is currently not implemented.
|
||||
renderList = value:
|
||||
if !builtins.isList value then throw "Value must be a list!"
|
||||
else if builtins.any (item: lib.hasInfix ";" item) value then throw "Values in list must not contain semicolons!"
|
||||
renderList = key: value:
|
||||
if !builtins.isList value then throw "makeDesktopItem: value for ${key} must be a list!"
|
||||
else if builtins.any (item: lib.hasInfix ";" item) value then throw "makeDesktopItem: values in ${key} list must not contain semicolons!"
|
||||
else if value == [] then null
|
||||
else builtins.concatStringsSep ";" value;
|
||||
|
||||
@ -65,18 +65,18 @@ let
|
||||
"NoDisplay" = boolOrNullToString noDisplay;
|
||||
"Comment" = comment;
|
||||
"Icon" = icon;
|
||||
"OnlyShowIn" = renderList onlyShowIn;
|
||||
"NotShowIn" = renderList notShowIn;
|
||||
"OnlyShowIn" = renderList "onlyShowIn" onlyShowIn;
|
||||
"NotShowIn" = renderList "notShowIn" notShowIn;
|
||||
"DBusActivatable" = boolOrNullToString dbusActivatable;
|
||||
"TryExec" = tryExec;
|
||||
"Exec" = exec;
|
||||
"Path" = path;
|
||||
"Terminal" = boolOrNullToString terminal;
|
||||
"Actions" = renderList (builtins.attrNames actions);
|
||||
"MimeType" = renderList mimeTypes;
|
||||
"Categories" = renderList categories;
|
||||
"Implements" = renderList implements;
|
||||
"Keywords" = renderList keywords;
|
||||
"Actions" = renderList "actions" (builtins.attrNames actions);
|
||||
"MimeType" = renderList "mimeTypes" mimeTypes;
|
||||
"Categories" = renderList "categories" categories;
|
||||
"Implements" = renderList "implements" implements;
|
||||
"Keywords" = renderList "keywords" keywords;
|
||||
"StartupNotify" = boolOrNullToString startupNotify;
|
||||
"StartupWMClass" = startupWMClass;
|
||||
"URL" = url;
|
||||
|
Loading…
Reference in New Issue
Block a user