aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-02-19 16:18:53 +0100
committerGitHub <noreply@github.com>2021-02-19 16:18:53 +0100
commit548437c2347159c4c79352283dd12ce58324f1d6 (patch)
treede7b67aef8275de7efd5ec05e0b4fb4f1e9b8b23
parentf483b623e98a0feb2568e5be076b533c5838ba32 (diff)
parentad337c8697099ac9deb6e0ac16ea91d8acc51e4f (diff)
Merge pull request #4541 from obsidiansystems/simpler-store-path-command
Deeper `Command` hierarchy to remove redundancy
-rw-r--r--src/libcmd/command.cc4
-rw-r--r--src/libcmd/command.hh6
2 files changed, 4 insertions, 6 deletions
diff --git a/src/libcmd/command.cc b/src/libcmd/command.cc
index efdc98d5a..d29954f67 100644
--- a/src/libcmd/command.cc
+++ b/src/libcmd/command.cc
@@ -118,10 +118,8 @@ void StorePathsCommand::run(ref<Store> store, std::vector<RealisedPath> paths)
run(store, std::move(storePaths));
}
-void StorePathCommand::run(ref<Store> store)
+void StorePathCommand::run(ref<Store> store, std::vector<StorePath> storePaths)
{
- auto storePaths = toStorePaths(store, Realise::Nothing, operateOn, installables);
-
if (storePaths.size() != 1)
throw UsageError("this command requires exactly one store path");
diff --git a/src/libcmd/command.hh b/src/libcmd/command.hh
index 8c0b3a94a..c02193924 100644
--- a/src/libcmd/command.hh
+++ b/src/libcmd/command.hh
@@ -177,13 +177,13 @@ struct StorePathsCommand : public RealisedPathsCommand
};
/* A command that operates on exactly one store path. */
-struct StorePathCommand : public InstallablesCommand
+struct StorePathCommand : public StorePathsCommand
{
- using StoreCommand::run;
+ using StorePathsCommand::run;
virtual void run(ref<Store> store, const StorePath & storePath) = 0;
- void run(ref<Store> store) override;
+ void run(ref<Store> store, std::vector<StorePath> storePaths) override;
};
/* A helper class for registering commands globally. */