aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/manual/src/release-notes/rl-2.4.md1
-rw-r--r--src/libutil/args.cc4
-rw-r--r--src/nix/main.cc6
3 files changed, 9 insertions, 2 deletions
diff --git a/doc/manual/src/release-notes/rl-2.4.md b/doc/manual/src/release-notes/rl-2.4.md
index 26ba70904..f7ab9f6ad 100644
--- a/doc/manual/src/release-notes/rl-2.4.md
+++ b/doc/manual/src/release-notes/rl-2.4.md
@@ -5,3 +5,4 @@
to any command, including a subcommand to `nix`. For example,
`nix-instantiate default.nix --plugin-files ""` must now become
`nix-instantiate --plugin-files "" default.nix`.
+ - Plugins that add new `nix` subcommands are now actually respected.
diff --git a/src/libutil/args.cc b/src/libutil/args.cc
index eb11fd64b..75eb19d28 100644
--- a/src/libutil/args.cc
+++ b/src/libutil/args.cc
@@ -306,8 +306,8 @@ Strings argvToStrings(int argc, char * * argv)
return args;
}
-MultiCommand::MultiCommand(const Commands & commands)
- : commands(commands)
+MultiCommand::MultiCommand(const Commands & commands_)
+ : commands(commands_)
{
expectArgs({
.label = "subcommand",
diff --git a/src/nix/main.cc b/src/nix/main.cc
index b078366fa..06e221682 100644
--- a/src/nix/main.cc
+++ b/src/nix/main.cc
@@ -159,6 +159,12 @@ struct NixArgs : virtual MultiCommand, virtual MixCommonArgs
#include "nix.md"
;
}
+
+ // Plugins may add new subcommands.
+ void pluginsInited() override
+ {
+ commands = RegisterCommand::getCommandsFor({});
+ }
};
static void showHelp(std::vector<std::string> subcommand)