diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2021-02-12 17:33:28 +0000 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2021-02-12 17:48:09 +0000 |
commit | ad337c8697099ac9deb6e0ac16ea91d8acc51e4f (patch) | |
tree | 7d886e3c8bcab0926ec08cfb2a49fffc5fab8f7e /src | |
parent | 4e98f0345c144b9d85bed1f6b0bc509bf7ddc000 (diff) |
Deeper `Command` hierarchy to remove redundancy
Simply put, we now have `StorePathCommand : public StorePathsCommand` so
`StorePathCommand` doesn't reimplement work.
Diffstat (limited to 'src')
-rw-r--r-- | src/libcmd/command.cc | 4 | ||||
-rw-r--r-- | src/libcmd/command.hh | 6 |
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. */ |