From 9a5b1d3ca2b0765b0ae280aa94bbd8fb143cfec0 Mon Sep 17 00:00:00 2001 From: Jörg Thalheim Date: Mon, 7 Mar 2022 17:28:20 +0100 Subject: makeDesktopItem: improve error messages --- pkgs/build-support/make-desktopitem/default.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pkgs/build-support/make-desktopitem/default.nix b/pkgs/build-support/make-desktopitem/default.nix index 31964953247..d831fe24d33 100644 --- a/pkgs/build-support/make-desktopitem/default.nix +++ b/pkgs/build-support/make-desktopitem/default.nix @@ -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; -- cgit 1.4.1