nix run: Allow passing a command to execute
E.g. nix run nixpkgs.hello -c hello --greeting Hallo Note that unlike "nix-shell --command", no quoting of arguments is necessary. "-c" (short for "--command") cannot be combined with "--" because they both consume all remaining arguments. But since installables shouldn't start with a dash, this is unlikely to cause problems.
This commit is contained in:
		
							parent
							
								
									93a5ef0516
								
							
						
					
					
						commit
						5cc8609e30
					
				
					 3 changed files with 19 additions and 3 deletions
				
			
		|  | @ -102,9 +102,11 @@ bool Args::processFlag(Strings::iterator & pos, Strings::iterator end) | |||
|         ++pos; | ||||
|         Strings args; | ||||
|         for (size_t n = 0 ; n < flag.arity; ++n) { | ||||
|             if (pos == end) | ||||
|             if (pos == end) { | ||||
|                 if (flag.arity == ArityAny) break; | ||||
|                 throw UsageError(format("flag '%1%' requires %2% argument(s)") | ||||
|                     % name % flag.arity); | ||||
|             } | ||||
|             args.push_back(*pos++); | ||||
|         } | ||||
|         flag.handler(args); | ||||
|  |  | |||
|  | @ -26,6 +26,8 @@ public: | |||
| 
 | ||||
| protected: | ||||
| 
 | ||||
|     static const size_t ArityAny = std::numeric_limits<size_t>::max(); | ||||
| 
 | ||||
|     /* Flags. */ | ||||
|     struct Flag | ||||
|     { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue