nix-env --set-flag: Barf if a selector doesn't match any installed package
Fixes #184.
This commit is contained in:
		
							parent
							
								
									194e3374b8
								
							
						
					
					
						commit
						7d203faff6
					
				
					 1 changed files with 13 additions and 5 deletions
				
			
		|  | @ -233,6 +233,15 @@ static bool isPrebuilt(EvalState & state, DrvInfo & elem) | |||
| } | ||||
| 
 | ||||
| 
 | ||||
| static void checkSelectorUse(DrvNames & selectors) | ||||
| { | ||||
|     /* Check that all selectors have been used. */ | ||||
|     foreach (DrvNames::iterator, i, selectors) | ||||
|         if (i->hits == 0 && i->fullName != "*") | ||||
|             throw Error(format("selector `%1%' matches no derivations") % i->fullName); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems, | ||||
|     const Strings & args, bool newestOnly) | ||||
| { | ||||
|  | @ -315,11 +324,7 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems, | |||
|             } | ||||
|     } | ||||
| 
 | ||||
|     /* Check that all selectors have been used. */ | ||||
|     foreach (DrvNames::iterator, i, selectors) | ||||
|         if (i->hits == 0 && i->fullName != "*") | ||||
|             throw Error(format("selector `%1%' matches no derivations") | ||||
|                 % i->fullName); | ||||
|     checkSelectorUse(selectors); | ||||
| 
 | ||||
|     return elems; | ||||
| } | ||||
|  | @ -673,11 +678,14 @@ static void opSetFlag(Globals & globals, | |||
|             foreach (DrvNames::iterator, j, selectors) | ||||
|                 if (j->matches(drvName)) { | ||||
|                     printMsg(lvlInfo, format("setting flag on `%1%'") % i->name); | ||||
|                     j->hits++; | ||||
|                     setMetaFlag(globals.state, *i, flagName, flagValue); | ||||
|                     break; | ||||
|                 } | ||||
|         } | ||||
| 
 | ||||
|         checkSelectorUse(selectors); | ||||
| 
 | ||||
|         /* Write the new user environment. */ | ||||
|         if (createUserEnv(globals.state, installedElems, | ||||
|                 globals.profile, settings.envKeepDerivations, lockToken)) break; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue