nix --help: Show usage examples
This commit is contained in:
		
							parent
							
								
									1b0088ebb2
								
							
						
					
					
						commit
						69e3ffb076
					
				
					 3 changed files with 41 additions and 0 deletions
				
			
		|  | @ -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) | ||||
| { | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue