Add "nix verify-store" command
Like "nix-store --verify --check-contents", but with the same advantages as "nix verify-paths".
This commit is contained in:
		
							parent
							
								
									784ee35c80
								
							
						
					
					
						commit
						4f34c40398
					
				
					 1 changed files with 53 additions and 13 deletions
				
			
		|  | @ -10,28 +10,18 @@ | ||||||
| 
 | 
 | ||||||
| using namespace nix; | using namespace nix; | ||||||
| 
 | 
 | ||||||
| struct CmdVerifyPaths : StorePathsCommand | struct MixVerify : virtual Args | ||||||
| { | { | ||||||
|     bool noContents = false; |     bool noContents = false; | ||||||
|     bool noSigs = false; |     bool noSigs = false; | ||||||
| 
 | 
 | ||||||
|     CmdVerifyPaths() |     MixVerify() | ||||||
|     { |     { | ||||||
|         mkFlag(0, "no-contents", "do not verify the contents of each store path", &noContents); |         mkFlag(0, "no-contents", "do not verify the contents of each store path", &noContents); | ||||||
|         mkFlag(0, "no-sigs", "do not verify whether each store path has a valid signature", &noSigs); |         mkFlag(0, "no-sigs", "do not verify whether each store path has a valid signature", &noSigs); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     std::string name() override |     void verifyPaths(ref<Store> store, const Paths & storePaths) | ||||||
|     { |  | ||||||
|         return "verify-paths"; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     std::string description() override |  | ||||||
|     { |  | ||||||
|         return "verify the integrity of store paths"; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     void run(ref<Store> store, Paths storePaths) override |  | ||||||
|     { |     { | ||||||
|         restoreAffinity(); // FIXME
 |         restoreAffinity(); // FIXME
 | ||||||
| 
 | 
 | ||||||
|  | @ -121,4 +111,54 @@ struct CmdVerifyPaths : StorePathsCommand | ||||||
|     } |     } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | struct CmdVerifyPaths : StorePathsCommand, MixVerify | ||||||
|  | { | ||||||
|  |     CmdVerifyPaths() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::string name() override | ||||||
|  |     { | ||||||
|  |         return "verify-paths"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::string description() override | ||||||
|  |     { | ||||||
|  |         return "verify the integrity of store paths"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void run(ref<Store> store, Paths storePaths) override | ||||||
|  |     { | ||||||
|  |         verifyPaths(store, storePaths); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| static RegisterCommand r1(make_ref<CmdVerifyPaths>()); | static RegisterCommand r1(make_ref<CmdVerifyPaths>()); | ||||||
|  | 
 | ||||||
|  | struct CmdVerifyStore : StoreCommand, MixVerify | ||||||
|  | { | ||||||
|  |     CmdVerifyStore() | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::string name() override | ||||||
|  |     { | ||||||
|  |         return "verify-store"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::string description() override | ||||||
|  |     { | ||||||
|  |         return "verify the integrity of all paths in the Nix store"; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void run(ref<Store> store) override | ||||||
|  |     { | ||||||
|  |         // FIXME: use store->verifyStore()?
 | ||||||
|  | 
 | ||||||
|  |         PathSet validPaths = store->queryAllValidPaths(); | ||||||
|  | 
 | ||||||
|  |         verifyPaths(store, Paths(validPaths.begin(), validPaths.end())); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static RegisterCommand r2(make_ref<CmdVerifyStore>()); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue