aboutsummaryrefslogtreecommitdiff
path: root/src/nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-21 14:58:32 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-21 14:58:32 +0200
commit69e3ffb076931aba73b5fcc41f5264f5f62c5ce9 (patch)
treef01268866200955342848abb27f044c17359ca6b /src/nix
parent1b0088ebb226ab80c91b54c201cc70204b976310 (diff)
nix --help: Show usage examples
Diffstat (limited to 'src/nix')
-rw-r--r--src/nix/command.cc15
-rw-r--r--src/nix/command.hh12
-rw-r--r--src/nix/verify.cc14
3 files changed, 41 insertions, 0 deletions
diff --git a/src/nix/command.cc b/src/nix/command.cc
index 986953fd8..c8d91737d 100644
--- a/src/nix/command.cc
+++ b/src/nix/command.cc
@@ -5,6 +5,21 @@ namespace nix {
Commands * RegisterCommand::commands = 0;
+void Command::printHelp(const string & programName, std::ostream & out)
+{
+ Args::printHelp(programName, out);
+
+ auto exs = examples();
+ if (!exs.empty()) {
+ out << "\n";
+ out << "Examples:\n";
+ for (auto & ex : exs)
+ out << "\n"
+ << " " << ex.description << "\n" // FIXME: wrap
+ << " $ " << ex.command << "\n";
+ }
+}
+
MultiCommand::MultiCommand(const Commands & _commands)
: commands(_commands)
{
diff --git a/src/nix/command.hh b/src/nix/command.hh
index a6adb5f65..34affc43d 100644
--- a/src/nix/command.hh
+++ b/src/nix/command.hh
@@ -11,6 +11,18 @@ struct Command : virtual Args
virtual std::string name() = 0;
virtual void prepare() { };
virtual void run() = 0;
+
+ struct Example
+ {
+ std::string description;
+ std::string command;
+ };
+
+ typedef std::list<Example> Examples;
+
+ virtual Examples examples() { return Examples(); }
+
+ void printHelp(const string & programName, std::ostream & out) override;
};
class Store;
diff --git a/src/nix/verify.cc b/src/nix/verify.cc
index da1567808..fdbc2b0fd 100644
--- a/src/nix/verify.cc
+++ b/src/nix/verify.cc
@@ -36,6 +36,20 @@ struct CmdVerify : StorePathsCommand
return "verify the integrity of store paths";
}
+ Examples examples() override
+ {
+ return {
+ Example{
+ "To verify the entire Nix store:",
+ "nix verify --all"
+ },
+ Example{
+ "To check whether each path in the closure of Firefox has at least 2 signatures:",
+ "nix verify -r -n2 --no-contents $(type -p firefox)"
+ },
+ };
+ }
+
void run(ref<Store> store, Paths storePaths) override
{
restoreAffinity(); // FIXME