mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-09-21 17:08:04 +03:00
b73adacc1e
So that it can be printed by `nix describe-stores`
36 lines
904 B
C++
36 lines
904 B
C++
#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
|
|
{
|
|
auto res = nlohmann::json::object();
|
|
for (auto & implem : *Implementations::registered) {
|
|
auto storeConfig = implem.getConfig();
|
|
auto storeName = storeConfig->name();
|
|
res[storeName] = storeConfig->toJSON();
|
|
}
|
|
if (json) {
|
|
std::cout << res;
|
|
} else {
|
|
throw Error("Only json is available for describe-stores");
|
|
}
|
|
}
|
|
};
|
|
|
|
static auto r1 = registerCommand<CmdDescribeStores>("describe-stores");
|