* Allow '<nixexpr>' syntax to be used in nix-instantiate, nix-build
and nix-env, e.g., $ nix-env -f '<nixpkgs>' -i patchelf or $ nix-build '<nixos/tests>' -A login.test
This commit is contained in:
		
							parent
							
								
									23c38a04cc
								
							
						
					
					
						commit
						b12b21825c
					
				
					 5 changed files with 16 additions and 4 deletions
				
			
		|  | @ -44,4 +44,15 @@ bool parseSearchPathArg(const string & arg, Strings::iterator & i, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | Path lookupFileArg(EvalState & state, string s) | ||||||
|  | { | ||||||
|  |     if (s.size() > 2 && s.at(0) == '<' && s.at(s.size() - 1) == '>') { | ||||||
|  |         Path p = state.findFile(s.substr(1, s.size() - 2)); | ||||||
|  |         if (p == "") throw Error(format("file `%1%' was not found in the Nix search path (add it using $NIX_PATH or -I)") % p); | ||||||
|  |         return p; | ||||||
|  |     } else | ||||||
|  |         return absPath(s); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -14,6 +14,8 @@ bool parseOptionArg(const string & arg, Strings::iterator & i, | ||||||
| bool parseSearchPathArg(const string & arg, Strings::iterator & i, | bool parseSearchPathArg(const string & arg, Strings::iterator & i, | ||||||
|     const Strings::iterator & argsEnd, EvalState & state); |     const Strings::iterator & argsEnd, EvalState & state); | ||||||
| 
 | 
 | ||||||
|  | Path lookupFileArg(EvalState & state, string s); | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1270,7 +1270,7 @@ void run(Strings args) | ||||||
|         else if (arg == "--profile" || arg == "-p") |         else if (arg == "--profile" || arg == "-p") | ||||||
|             globals.profile = absPath(needArg(i, args, arg)); |             globals.profile = absPath(needArg(i, args, arg)); | ||||||
|         else if (arg == "--file" || arg == "-f") |         else if (arg == "--file" || arg == "-f") | ||||||
|             globals.instSource.nixExprPath = absPath(needArg(i, args, arg)); |             globals.instSource.nixExprPath = lookupFileArg(globals.state, needArg(i, args, arg)); | ||||||
|         else if (arg == "--switch-profile" || arg == "-S") |         else if (arg == "--switch-profile" || arg == "-S") | ||||||
|             op = opSwitchProfile; |             op = opSwitchProfile; | ||||||
|         else if (arg == "--switch-generation" || arg == "-G") |         else if (arg == "--switch-generation" || arg == "-G") | ||||||
|  |  | ||||||
|  | @ -138,8 +138,7 @@ void run(Strings args) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     foreach (Strings::iterator, i, files) { |     foreach (Strings::iterator, i, files) { | ||||||
|         Path path = absPath(*i); |         Expr * e = state.parseExprFromFile(lookupFileArg(state, *i)); | ||||||
|         Expr * e = state.parseExprFromFile(path); |  | ||||||
|         processExpr(state, attrPaths, parseOnly, strict, autoArgs, |         processExpr(state, attrPaths, parseOnly, strict, autoArgs, | ||||||
|             evalOnly, xmlOutput, xmlOutputSourceLocation, e); |             evalOnly, xmlOutput, xmlOutputSourceLocation, e); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -36,7 +36,7 @@ nix-env -p $profiles/test -q '*' | grep -q foo-2.0pre1 | ||||||
| test "$($profiles/test/bin/foo)" = "foo-2.0pre1" | test "$($profiles/test/bin/foo)" = "foo-2.0pre1" | ||||||
| 
 | 
 | ||||||
| # Upgrade "foo": should install foo-2.0. | # Upgrade "foo": should install foo-2.0. | ||||||
| nix-env -p $profiles/test -f ./user-envs.nix -u foo | NIX_PATH=nixpkgs=./user-envs.nix nix-env -p $profiles/test -f '<nixpkgs>' -u foo | ||||||
| 
 | 
 | ||||||
| # Query installed: should contain foo-2.0 now. | # Query installed: should contain foo-2.0 now. | ||||||
| test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 1 | test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 1 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue