diff options
author | regnat <rg@regnat.ovh> | 2020-09-08 14:50:23 +0200 |
---|---|---|
committer | regnat <rg@regnat.ovh> | 2020-09-16 13:53:08 +0200 |
commit | 7d5bdf8b5679cc7b2b9b4d9caf5af9ca52211336 (patch) | |
tree | 42c5061563eaa66a36a30380ccbac721e8c7423e /src/nix/describe-stores.cc | |
parent | 609a6d6d9f1a8689c2336301a2e4db01ad20037c (diff) |
Make the store plugins more introspectable
Directly register the store classes rather than a function to build an
instance of them.
This gives the possibility to introspect static members of the class or
choose different ways of instantiating them.
Diffstat (limited to 'src/nix/describe-stores.cc')
-rw-r--r-- | src/nix/describe-stores.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/nix/describe-stores.cc b/src/nix/describe-stores.cc new file mode 100644 index 000000000..d84378316 --- /dev/null +++ b/src/nix/describe-stores.cc @@ -0,0 +1,30 @@ +#include "command.hh" +#include "common-args.hh" +#include "shared.hh" +#include "store-api.hh" + +#include <nlohmann/json.hpp> + +using namespace nix; + +struct CmdDescribeStores : Command, MixJSON +{ + std::string description() override + { + return "show registered store types and their available options"; + } + + Category category() override { return catUtility; } + + void run() override + { + + if (json) { + auto availableStores = *implementations; + } else { + throw Error("Only json is available for describe-stores"); + } + } +}; + +static auto r1 = registerCommand<CmdDescribeStores>("describe-stores"); |