forked from lix-project/lix
Merge pull request #2953 from NixOS/lazy-multi-command
Make subcommand construction in MultiCommand lazy
This commit is contained in:
commit
5d8ec94d7f
|
@ -215,17 +215,15 @@ void Command::printHelp(const string & programName, std::ostream & out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MultiCommand::MultiCommand(const std::vector<ref<Command>> & _commands)
|
MultiCommand::MultiCommand(const Commands & commands)
|
||||||
|
: commands(commands)
|
||||||
{
|
{
|
||||||
for (auto & command : _commands)
|
|
||||||
commands.emplace(command->name(), command);
|
|
||||||
|
|
||||||
expectedArgs.push_back(ExpectedArg{"command", 1, true, [=](std::vector<std::string> ss) {
|
expectedArgs.push_back(ExpectedArg{"command", 1, true, [=](std::vector<std::string> ss) {
|
||||||
assert(!command);
|
assert(!command);
|
||||||
auto i = commands.find(ss[0]);
|
auto i = commands.find(ss[0]);
|
||||||
if (i == commands.end())
|
if (i == commands.end())
|
||||||
throw UsageError("'%s' is not a recognised command", ss[0]);
|
throw UsageError("'%s' is not a recognised command", ss[0]);
|
||||||
command = i->second;
|
command = i->second();
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,10 +244,11 @@ void MultiCommand::printHelp(const string & programName, std::ostream & out)
|
||||||
out << "Available commands:\n";
|
out << "Available commands:\n";
|
||||||
|
|
||||||
Table2 table;
|
Table2 table;
|
||||||
for (auto & command : commands) {
|
for (auto & i : commands) {
|
||||||
auto descr = command.second->description();
|
auto command = i.second();
|
||||||
|
auto descr = command->description();
|
||||||
if (!descr.empty())
|
if (!descr.empty())
|
||||||
table.push_back(std::make_pair(command.second->name(), descr));
|
table.push_back(std::make_pair(command->name(), descr));
|
||||||
}
|
}
|
||||||
printTable(out, table);
|
printTable(out, table);
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,7 +192,12 @@ public:
|
||||||
run() method. */
|
run() method. */
|
||||||
struct Command : virtual Args
|
struct Command : virtual Args
|
||||||
{
|
{
|
||||||
virtual std::string name() = 0;
|
private:
|
||||||
|
std::string _name;
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::string name() { return _name; }
|
||||||
|
|
||||||
virtual void prepare() { };
|
virtual void prepare() { };
|
||||||
virtual void run() = 0;
|
virtual void run() = 0;
|
||||||
|
|
||||||
|
@ -209,7 +214,7 @@ struct Command : virtual Args
|
||||||
void printHelp(const string & programName, std::ostream & out) override;
|
void printHelp(const string & programName, std::ostream & out) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::map<std::string, ref<Command>> Commands;
|
typedef std::map<std::string, std::function<ref<Command>()>> Commands;
|
||||||
|
|
||||||
/* An argument parser that supports multiple subcommands,
|
/* An argument parser that supports multiple subcommands,
|
||||||
i.e. ‘<command> <subcommand>’. */
|
i.e. ‘<command> <subcommand>’. */
|
||||||
|
@ -220,7 +225,7 @@ public:
|
||||||
|
|
||||||
std::shared_ptr<Command> command;
|
std::shared_ptr<Command> command;
|
||||||
|
|
||||||
MultiCommand(const std::vector<ref<Command>> & commands);
|
MultiCommand(const Commands & commands);
|
||||||
|
|
||||||
void printHelp(const string & programName, std::ostream & out) override;
|
void printHelp(const string & programName, std::ostream & out) override;
|
||||||
|
|
||||||
|
|
|
@ -22,11 +22,6 @@ struct CmdAddToStore : MixDryRun, StoreCommand
|
||||||
.dest(&namePart);
|
.dest(&namePart);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "add-to-store";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "add a path to the Nix store";
|
return "add a path to the Nix store";
|
||||||
|
@ -58,4 +53,4 @@ struct CmdAddToStore : MixDryRun, StoreCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdAddToStore>());
|
static auto r1 = registerCommand<CmdAddToStore>("add-to-store");
|
||||||
|
|
|
@ -25,11 +25,6 @@ struct CmdBuild : MixDryRun, InstallablesCommand
|
||||||
.set(&outLink, Path(""));
|
.set(&outLink, Path(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "build";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "build a derivation or fetch a store path";
|
return "build a derivation or fetch a store path";
|
||||||
|
@ -72,4 +67,4 @@ struct CmdBuild : MixDryRun, InstallablesCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdBuild>());
|
static auto r1 = registerCommand<CmdBuild>("build");
|
||||||
|
|
|
@ -28,11 +28,6 @@ struct CmdCatStore : StoreCommand, MixCat
|
||||||
expectArg("path", &path);
|
expectArg("path", &path);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "cat-store";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "print the contents of a store file on stdout";
|
return "print the contents of a store file on stdout";
|
||||||
|
@ -54,11 +49,6 @@ struct CmdCatNar : StoreCommand, MixCat
|
||||||
expectArg("path", &path);
|
expectArg("path", &path);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "cat-nar";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "print the contents of a file inside a NAR file";
|
return "print the contents of a file inside a NAR file";
|
||||||
|
@ -70,5 +60,5 @@ struct CmdCatNar : StoreCommand, MixCat
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdCatStore>());
|
static auto r1 = registerCommand<CmdCatStore>("cat-store");
|
||||||
static RegisterCommand r2(make_ref<CmdCatNar>());
|
static auto r2 = registerCommand<CmdCatNar>("cat-nar");
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
std::vector<ref<Command>> * RegisterCommand::commands = 0;
|
Commands * RegisterCommand::commands = nullptr;
|
||||||
|
|
||||||
StoreCommand::StoreCommand()
|
StoreCommand::StoreCommand()
|
||||||
{
|
{
|
||||||
|
|
|
@ -190,15 +190,22 @@ struct StorePathCommand : public InstallablesCommand
|
||||||
/* A helper class for registering commands globally. */
|
/* A helper class for registering commands globally. */
|
||||||
struct RegisterCommand
|
struct RegisterCommand
|
||||||
{
|
{
|
||||||
static std::vector<ref<Command>> * commands;
|
static Commands * commands;
|
||||||
|
|
||||||
RegisterCommand(ref<Command> command)
|
RegisterCommand(const std::string & name,
|
||||||
|
std::function<ref<Command>()> command)
|
||||||
{
|
{
|
||||||
if (!commands) commands = new std::vector<ref<Command>>;
|
if (!commands) commands = new Commands;
|
||||||
commands->push_back(command);
|
commands->emplace(name, command);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
static RegisterCommand registerCommand(const std::string & name)
|
||||||
|
{
|
||||||
|
return RegisterCommand(name, [](){ return make_ref<T>(); });
|
||||||
|
}
|
||||||
|
|
||||||
Buildables build(ref<Store> store, RealiseMode mode,
|
Buildables build(ref<Store> store, RealiseMode mode,
|
||||||
std::vector<std::shared_ptr<Installable>> installables);
|
std::vector<std::shared_ptr<Installable>> installables);
|
||||||
|
|
||||||
|
|
|
@ -42,11 +42,6 @@ struct CmdCopy : StorePathsCommand
|
||||||
.set(&substitute, Substitute);
|
.set(&substitute, Substitute);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "copy";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "copy paths between Nix stores";
|
return "copy paths between Nix stores";
|
||||||
|
@ -97,4 +92,4 @@ struct CmdCopy : StorePathsCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdCopy>());
|
static auto r1 = registerCommand<CmdCopy>("copy");
|
||||||
|
|
|
@ -20,11 +20,6 @@ struct CmdDoctor : StoreCommand
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "doctor";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "check your system for potential problems";
|
return "check your system for potential problems";
|
||||||
|
@ -121,4 +116,4 @@ struct CmdDoctor : StoreCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdDoctor>());
|
static auto r1 = registerCommand<CmdDoctor>("doctore");
|
||||||
|
|
|
@ -5,11 +5,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdDumpPath : StorePathCommand
|
struct CmdDumpPath : StorePathCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "dump-path";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "dump a store path to stdout (in NAR format)";
|
return "dump a store path to stdout (in NAR format)";
|
||||||
|
@ -33,4 +28,4 @@ struct CmdDumpPath : StorePathCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdDumpPath>());
|
static auto r1 = registerCommand<CmdDumpPath>("dump-path");
|
||||||
|
|
|
@ -10,11 +10,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdEdit : InstallableCommand
|
struct CmdEdit : InstallableCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "edit";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "open the Nix expression of a Nix package in $EDITOR";
|
return "open the Nix expression of a Nix package in $EDITOR";
|
||||||
|
@ -78,4 +73,4 @@ struct CmdEdit : InstallableCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdEdit>());
|
static auto r1 = registerCommand<CmdEdit>("edit");
|
||||||
|
|
|
@ -18,11 +18,6 @@ struct CmdEval : MixJSON, InstallableCommand
|
||||||
mkFlag(0, "raw", "print strings unquoted", &raw);
|
mkFlag(0, "raw", "print strings unquoted", &raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "eval";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "evaluate a Nix expression";
|
return "evaluate a Nix expression";
|
||||||
|
@ -74,4 +69,4 @@ struct CmdEval : MixJSON, InstallableCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdEval>());
|
static auto r1 = registerCommand<CmdEval>("eval");
|
||||||
|
|
|
@ -49,11 +49,6 @@ public:
|
||||||
|
|
||||||
struct CmdFlakeList : EvalCommand
|
struct CmdFlakeList : EvalCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "list";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "list available Nix flakes";
|
return "list available Nix flakes";
|
||||||
|
@ -133,11 +128,6 @@ static void printNonFlakeInfo(const NonFlake & nonFlake)
|
||||||
// FIXME: merge info CmdFlakeInfo?
|
// FIXME: merge info CmdFlakeInfo?
|
||||||
struct CmdFlakeDeps : FlakeCommand
|
struct CmdFlakeDeps : FlakeCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "deps";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "list informaton about dependencies";
|
return "list informaton about dependencies";
|
||||||
|
@ -171,11 +161,6 @@ struct CmdFlakeDeps : FlakeCommand
|
||||||
|
|
||||||
struct CmdFlakeUpdate : FlakeCommand
|
struct CmdFlakeUpdate : FlakeCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "update";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "update flake lock file";
|
return "update flake lock file";
|
||||||
|
@ -209,11 +194,6 @@ static void enumerateOutputs(EvalState & state, Value & vFlake,
|
||||||
|
|
||||||
struct CmdFlakeInfo : FlakeCommand, MixJSON
|
struct CmdFlakeInfo : FlakeCommand, MixJSON
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "info";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "list info about a given flake";
|
return "list info about a given flake";
|
||||||
|
@ -269,11 +249,6 @@ struct CmdFlakeCheck : FlakeCommand, MixJSON
|
||||||
.set(&build, false);
|
.set(&build, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "check";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "check whether the flake evaluates and run its tests";
|
return "check whether the flake evaluates and run its tests";
|
||||||
|
@ -383,11 +358,6 @@ struct CmdFlakeAdd : MixEvalArgs, Command
|
||||||
FlakeUri alias;
|
FlakeUri alias;
|
||||||
FlakeUri uri;
|
FlakeUri uri;
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "add";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "upsert flake in user flake registry";
|
return "upsert flake in user flake registry";
|
||||||
|
@ -414,11 +384,6 @@ struct CmdFlakeRemove : virtual Args, MixEvalArgs, Command
|
||||||
{
|
{
|
||||||
FlakeUri alias;
|
FlakeUri alias;
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "remove";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "remove flake from user flake registry";
|
return "remove flake from user flake registry";
|
||||||
|
@ -442,11 +407,6 @@ struct CmdFlakePin : virtual Args, EvalCommand
|
||||||
{
|
{
|
||||||
FlakeUri alias;
|
FlakeUri alias;
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "pin";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "pin flake require in user flake registry";
|
return "pin flake require in user flake registry";
|
||||||
|
@ -482,11 +442,6 @@ struct CmdFlakePin : virtual Args, EvalCommand
|
||||||
|
|
||||||
struct CmdFlakeInit : virtual Args, Command
|
struct CmdFlakeInit : virtual Args, Command
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "init";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "create a skeleton 'flake.nix' file in the current directory";
|
return "create a skeleton 'flake.nix' file in the current directory";
|
||||||
|
@ -514,11 +469,6 @@ struct CmdFlakeClone : FlakeCommand
|
||||||
{
|
{
|
||||||
Path destDir;
|
Path destDir;
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "clone";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "clone flake repository";
|
return "clone flake repository";
|
||||||
|
@ -541,25 +491,20 @@ struct CmdFlakeClone : FlakeCommand
|
||||||
struct CmdFlake : virtual MultiCommand, virtual Command
|
struct CmdFlake : virtual MultiCommand, virtual Command
|
||||||
{
|
{
|
||||||
CmdFlake()
|
CmdFlake()
|
||||||
: MultiCommand({make_ref<CmdFlakeList>()
|
: MultiCommand({
|
||||||
, make_ref<CmdFlakeUpdate>()
|
{"list", []() { return make_ref<CmdFlakeList>(); }},
|
||||||
, make_ref<CmdFlakeInfo>()
|
{"update", []() { return make_ref<CmdFlakeUpdate>(); }},
|
||||||
, make_ref<CmdFlakeCheck>()
|
{"info", []() { return make_ref<CmdFlakeInfo>(); }},
|
||||||
//, make_ref<CmdFlakeDeps>()
|
{"check", []() { return make_ref<CmdFlakeCheck>(); }},
|
||||||
, make_ref<CmdFlakeAdd>()
|
{"add", []() { return make_ref<CmdFlakeAdd>(); }},
|
||||||
, make_ref<CmdFlakeRemove>()
|
{"remove", []() { return make_ref<CmdFlakeRemove>(); }},
|
||||||
, make_ref<CmdFlakePin>()
|
{"pin", []() { return make_ref<CmdFlakePin>(); }},
|
||||||
, make_ref<CmdFlakeInit>()
|
{"init", []() { return make_ref<CmdFlakeInit>(); }},
|
||||||
, make_ref<CmdFlakeClone>()
|
{"clone", []() { return make_ref<CmdFlakeClone>(); }},
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "flake";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "manage Nix flakes";
|
return "manage Nix flakes";
|
||||||
|
@ -578,4 +523,4 @@ struct CmdFlake : virtual MultiCommand, virtual Command
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdFlake>());
|
static auto r1 = registerCommand<CmdFlake>("flake");
|
||||||
|
|
|
@ -26,11 +26,6 @@ struct CmdHash : Command
|
||||||
expectArgs("paths", &paths);
|
expectArgs("paths", &paths);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return mode == mFile ? "hash-file" : "hash-path";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return mode == mFile
|
return mode == mFile
|
||||||
|
@ -49,8 +44,8 @@ struct CmdHash : Command
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdHash>(CmdHash::mFile));
|
static RegisterCommand r1("hash-file", [](){ return make_ref<CmdHash>(CmdHash::mFile); });
|
||||||
static RegisterCommand r2(make_ref<CmdHash>(CmdHash::mPath));
|
static RegisterCommand r2("hash-path", [](){ return make_ref<CmdHash>(CmdHash::mPath); });
|
||||||
|
|
||||||
struct CmdToBase : Command
|
struct CmdToBase : Command
|
||||||
{
|
{
|
||||||
|
@ -66,15 +61,6 @@ struct CmdToBase : Command
|
||||||
expectArgs("strings", &args);
|
expectArgs("strings", &args);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return
|
|
||||||
base == Base16 ? "to-base16" :
|
|
||||||
base == Base32 ? "to-base32" :
|
|
||||||
base == Base64 ? "to-base64" :
|
|
||||||
"to-sri";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return fmt("convert a hash to %s representation",
|
return fmt("convert a hash to %s representation",
|
||||||
|
@ -91,10 +77,10 @@ struct CmdToBase : Command
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r3(make_ref<CmdToBase>(Base16));
|
static RegisterCommand r3("to-base16", [](){ return make_ref<CmdToBase>(Base16); });
|
||||||
static RegisterCommand r4(make_ref<CmdToBase>(Base32));
|
static RegisterCommand r4("to-base32", [](){ return make_ref<CmdToBase>(Base32); });
|
||||||
static RegisterCommand r5(make_ref<CmdToBase>(Base64));
|
static RegisterCommand r5("to-base64", [](){ return make_ref<CmdToBase>(Base64); });
|
||||||
static RegisterCommand r6(make_ref<CmdToBase>(SRI));
|
static RegisterCommand r6("to-sri", [](){ return make_ref<CmdToBase>(SRI); });
|
||||||
|
|
||||||
/* Legacy nix-hash command. */
|
/* Legacy nix-hash command. */
|
||||||
static int compatNixHash(int argc, char * * argv)
|
static int compatNixHash(int argc, char * * argv)
|
||||||
|
|
|
@ -8,15 +8,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdLog : InstallableCommand
|
struct CmdLog : InstallableCommand
|
||||||
{
|
{
|
||||||
CmdLog()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "log";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show the build log of the specified packages or paths, if available";
|
return "show the build log of the specified packages or paths, if available";
|
||||||
|
@ -68,4 +59,4 @@ struct CmdLog : InstallableCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdLog>());
|
static auto r1 = registerCommand<CmdLog>("log");
|
||||||
|
|
|
@ -100,11 +100,6 @@ struct CmdLsStore : StoreCommand, MixLs
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "ls-store";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show information about a store path";
|
return "show information about a store path";
|
||||||
|
@ -136,11 +131,6 @@ struct CmdLsNar : Command, MixLs
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "ls-nar";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show information about the contents of a NAR file";
|
return "show information about the contents of a NAR file";
|
||||||
|
@ -152,5 +142,5 @@ struct CmdLsNar : Command, MixLs
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdLsStore>());
|
static auto r1 = registerCommand<CmdLsStore>("ls-store");
|
||||||
static RegisterCommand r2(make_ref<CmdLsNar>());
|
static auto r2 = registerCommand<CmdLsNar>("ls-nar");
|
||||||
|
|
|
@ -8,15 +8,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdOptimiseStore : StoreCommand
|
struct CmdOptimiseStore : StoreCommand
|
||||||
{
|
{
|
||||||
CmdOptimiseStore()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "optimise-store";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "replace identical files in the store by hard links";
|
return "replace identical files in the store by hard links";
|
||||||
|
@ -38,4 +29,4 @@ struct CmdOptimiseStore : StoreCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdOptimiseStore>());
|
static auto r1 = registerCommand<CmdOptimiseStore>("optimise-store");
|
||||||
|
|
|
@ -24,11 +24,6 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
|
||||||
mkFlag(0, "sigs", "show signatures", &showSigs);
|
mkFlag(0, "sigs", "show signatures", &showSigs);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "path-info";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "query information about store paths";
|
return "query information about store paths";
|
||||||
|
@ -130,4 +125,4 @@ struct CmdPathInfo : StorePathsCommand, MixJSON
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdPathInfo>());
|
static auto r1 = registerCommand<CmdPathInfo>("path-info");
|
||||||
|
|
|
@ -6,11 +6,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdPingStore : StoreCommand
|
struct CmdPingStore : StoreCommand
|
||||||
{
|
{
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "ping-store";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "test whether a store can be opened";
|
return "test whether a store can be opened";
|
||||||
|
@ -32,4 +27,4 @@ struct CmdPingStore : StoreCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdPingStore>());
|
static auto r1 = registerCommand<CmdPingStore>("ping-store");
|
||||||
|
|
|
@ -764,8 +764,6 @@ struct CmdRepl : StoreCommand, MixEvalArgs
|
||||||
expectArgs("files", &files);
|
expectArgs("files", &files);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override { return "repl"; }
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "start an interactive environment for evaluating Nix expressions";
|
return "start an interactive environment for evaluating Nix expressions";
|
||||||
|
@ -779,6 +777,6 @@ struct CmdRepl : StoreCommand, MixEvalArgs
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdRepl>());
|
static auto r1 = registerCommand<CmdRepl>("repl");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,11 +99,6 @@ struct CmdRun : InstallablesCommand, RunCommon
|
||||||
.handler([&](std::vector<std::string> ss) { unset.insert(ss.front()); });
|
.handler([&](std::vector<std::string> ss) { unset.insert(ss.front()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "run";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "run a shell in which the specified packages are available";
|
return "run a shell in which the specified packages are available";
|
||||||
|
@ -192,7 +187,7 @@ struct CmdRun : InstallablesCommand, RunCommon
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdRun>());
|
static auto r1 = registerCommand<CmdRun>("run");
|
||||||
|
|
||||||
struct CmdApp : InstallableCommand, RunCommon
|
struct CmdApp : InstallableCommand, RunCommon
|
||||||
{
|
{
|
||||||
|
@ -203,11 +198,6 @@ struct CmdApp : InstallableCommand, RunCommon
|
||||||
expectArgs("args", &args);
|
expectArgs("args", &args);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "app";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "run a Nix application";
|
return "run a Nix application";
|
||||||
|
@ -248,7 +238,7 @@ struct CmdApp : InstallableCommand, RunCommon
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r2(make_ref<CmdApp>());
|
static auto r2 = registerCommand<CmdApp>("app");
|
||||||
|
|
||||||
void chrootHelper(int argc, char * * argv)
|
void chrootHelper(int argc, char * * argv)
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,11 +52,6 @@ struct CmdSearch : SourceExprCommand, MixJSON
|
||||||
.handler([&]() { writeCache = false; useCache = false; });
|
.handler([&]() { writeCache = false; useCache = false; });
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "search";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "query available packages";
|
return "query available packages";
|
||||||
|
@ -282,4 +277,4 @@ struct CmdSearch : SourceExprCommand, MixJSON
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdSearch>());
|
static auto r1 = registerCommand<CmdSearch>("search");
|
||||||
|
|
|
@ -177,12 +177,6 @@ struct Common : InstallableCommand
|
||||||
|
|
||||||
struct CmdDevShell : Common
|
struct CmdDevShell : Common
|
||||||
{
|
{
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "dev-shell";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "run a bash shell that provides the build environment of a derivation";
|
return "run a bash shell that provides the build environment of a derivation";
|
||||||
|
@ -240,12 +234,6 @@ struct CmdDevShell : Common
|
||||||
|
|
||||||
struct CmdPrintDevEnv : Common
|
struct CmdPrintDevEnv : Common
|
||||||
{
|
{
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "print-dev-env";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "print shell code that can be sourced by bash to reproduce the build environment of a derivation";
|
return "print shell code that can be sourced by bash to reproduce the build environment of a derivation";
|
||||||
|
@ -279,5 +267,5 @@ struct CmdPrintDevEnv : Common
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdPrintDevEnv>());
|
static auto r1 = registerCommand<CmdPrintDevEnv>("print-dev-env");
|
||||||
static RegisterCommand r2(make_ref<CmdDevShell>());
|
static auto r2 = registerCommand<CmdDevShell>("dev-shell");
|
||||||
|
|
|
@ -8,15 +8,6 @@ using namespace nix;
|
||||||
|
|
||||||
struct CmdShowConfig : Command, MixJSON
|
struct CmdShowConfig : Command, MixJSON
|
||||||
{
|
{
|
||||||
CmdShowConfig()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "show-config";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show the Nix configuration";
|
return "show the Nix configuration";
|
||||||
|
@ -37,4 +28,4 @@ struct CmdShowConfig : Command, MixJSON
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdShowConfig>());
|
static auto r1 = registerCommand<CmdShowConfig>("show-config");
|
||||||
|
|
|
@ -22,11 +22,6 @@ struct CmdShowDerivation : InstallablesCommand
|
||||||
.set(&recursive, true);
|
.set(&recursive, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "show-derivation";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show the contents of a store derivation";
|
return "show the contents of a store derivation";
|
||||||
|
@ -116,4 +111,4 @@ struct CmdShowDerivation : InstallablesCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdShowDerivation>());
|
static auto r1 = registerCommand<CmdShowDerivation>("show-derivation");
|
||||||
|
|
|
@ -22,11 +22,6 @@ struct CmdCopySigs : StorePathsCommand
|
||||||
.handler([&](std::vector<std::string> ss) { substituterUris.push_back(ss[0]); });
|
.handler([&](std::vector<std::string> ss) { substituterUris.push_back(ss[0]); });
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "copy-sigs";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "copy path signatures from substituters (like binary caches)";
|
return "copy path signatures from substituters (like binary caches)";
|
||||||
|
@ -93,7 +88,7 @@ struct CmdCopySigs : StorePathsCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdCopySigs>());
|
static auto r1 = registerCommand<CmdCopySigs>("copy-sigs");
|
||||||
|
|
||||||
struct CmdSignPaths : StorePathsCommand
|
struct CmdSignPaths : StorePathsCommand
|
||||||
{
|
{
|
||||||
|
@ -109,11 +104,6 @@ struct CmdSignPaths : StorePathsCommand
|
||||||
.dest(&secretKeyFile);
|
.dest(&secretKeyFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "sign-paths";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "sign the specified paths";
|
return "sign the specified paths";
|
||||||
|
@ -146,4 +136,4 @@ struct CmdSignPaths : StorePathsCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r3(make_ref<CmdSignPaths>());
|
static auto r2 = registerCommand<CmdSignPaths>("sign-paths");
|
||||||
|
|
|
@ -30,11 +30,6 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
.dest(&storePathsUrl);
|
.dest(&storePathsUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "upgrade-nix";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "upgrade Nix to the latest stable version";
|
return "upgrade Nix to the latest stable version";
|
||||||
|
@ -157,4 +152,4 @@ struct CmdUpgradeNix : MixDryRun, StoreCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdUpgradeNix>());
|
static auto r1 = registerCommand<CmdUpgradeNix>("upgrade-nix");
|
||||||
|
|
|
@ -29,11 +29,6 @@ struct CmdVerify : StorePathsCommand
|
||||||
mkIntFlag('n', "sigs-needed", "require that each path has at least N valid signatures", &sigsNeeded);
|
mkIntFlag('n', "sigs-needed", "require that each path has at least N valid signatures", &sigsNeeded);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "verify";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "verify the integrity of store paths";
|
return "verify the integrity of store paths";
|
||||||
|
@ -175,4 +170,4 @@ struct CmdVerify : StorePathsCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdVerify>());
|
static auto r1 = registerCommand<CmdVerify>("verify");
|
||||||
|
|
|
@ -44,11 +44,6 @@ struct CmdWhyDepends : SourceExprCommand
|
||||||
.set(&all, true);
|
.set(&all, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string name() override
|
|
||||||
{
|
|
||||||
return "why-depends";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string description() override
|
std::string description() override
|
||||||
{
|
{
|
||||||
return "show why a package has another package in its closure";
|
return "show why a package has another package in its closure";
|
||||||
|
@ -264,4 +259,4 @@ struct CmdWhyDepends : SourceExprCommand
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static RegisterCommand r1(make_ref<CmdWhyDepends>());
|
static auto r1 = registerCommand<CmdWhyDepends>("why-depends");
|
||||||
|
|
Loading…
Reference in a new issue