summaryrefslogtreecommitdiffstats
path: root/maintainers/scripts/update.nix
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-03-21 01:27:14 +0100
committerJan Tojnar <jtojnar@gmail.com>2021-05-05 22:20:20 +0200
commitd51a631a46684e19eaabe8264f4415a235cc03ca (patch)
treec630c9a146b782ec482ff4dcfb36d463e5afff40 /maintainers/scripts/update.nix
parent7d535edec55aca6999b091a1eb21510c964ddd3b (diff)
maintainers/scripts/update.nix: Add support for filtering pkgs by predicate
Arbitrary predicate is useful for updating decentralised package sets like GNOME.
Diffstat (limited to 'maintainers/scripts/update.nix')
-rwxr-xr-xmaintainers/scripts/update.nix14
1 files changed, 13 insertions, 1 deletions
diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix
index 1305e0947c72..5317bdb9f42c 100755
--- a/maintainers/scripts/update.nix
+++ b/maintainers/scripts/update.nix
@@ -1,5 +1,6 @@
{ package ? null
, maintainer ? null
+, predicate ? null
, path ? null
, max-workers ? null
, include-overlays ? false
@@ -69,6 +70,11 @@ let
*/
packagesWith = packagesWithPath [];
+ /* Recursively find all packages in `pkgs` with updateScript matching given predicate.
+ */
+ packagesWithUpdateScriptMatchingPredicate = cond:
+ packagesWith (path: pkg: builtins.hasAttr "updateScript" pkg && cond path pkg);
+
/* Recursively find all packages in `pkgs` with updateScript by given maintainer.
*/
packagesWithUpdateScriptAndMaintainer = maintainer':
@@ -79,7 +85,7 @@ let
else
builtins.getAttr maintainer' lib.maintainers;
in
- packagesWith (path: pkg: builtins.hasAttr "updateScript" pkg &&
+ packagesWithUpdateScriptMatchingPredicate (path: pkg:
(if builtins.hasAttr "maintainers" pkg.meta
then (if builtins.isList pkg.meta.maintainers
then builtins.elem maintainer pkg.meta.maintainers
@@ -120,6 +126,8 @@ let
packages =
if package != null then
[ (packageByName package pkgs) ]
+ else if predicate != null then
+ packagesWithUpdateScriptMatchingPredicate predicate pkgs
else if maintainer != null then
packagesWithUpdateScriptAndMaintainer maintainer pkgs
else if path != null then
@@ -139,6 +147,10 @@ let
to run update script for specific package, or
+ % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: builtins.isList pkg.updateScript && builtins.length pkg.updateScript >= 1 && (let script = builtins.head pkg.updateScript; in builtins.isAttrs script && script.name == "gnome-update-script"))'
+
+ to run update script for all packages matching given predicate, or
+
% nix-shell maintainers/scripts/update.nix --argstr path gnome3
to run update script for all package under an attribute path.