Resolve environmental variables in bom file
This commit is contained in:
		
							parent
							
								
									53d1d0010d
								
							
						
					
					
						commit
						e47a0673e0
					
				| @ -408,6 +408,33 @@ impl TargetManagement { | |||||||
|         self.files_autodep.extend(files_autodep.into_iter()); |         self.files_autodep.extend(files_autodep.into_iter()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     fn resolve_environmental_variables(&mut self) { | ||||||
|  |         self.dirs_to_make = self | ||||||
|  |             .dirs_to_make | ||||||
|  |             .iter() | ||||||
|  |             .map(|dir| resolve_envs(dir)) | ||||||
|  |             .collect(); | ||||||
|  |         self.links_to_create = self | ||||||
|  |             .links_to_create | ||||||
|  |             .iter() | ||||||
|  |             .map(|(src, linkname)| (resolve_envs(src), resolve_envs(linkname))) | ||||||
|  |             .collect(); | ||||||
|  |         self.dirs_to_copy = self | ||||||
|  |             .dirs_to_copy | ||||||
|  |             .iter() | ||||||
|  |             .map(|(src, dest)| (resolve_envs(src), resolve_envs(dest))) | ||||||
|  |             .collect(); | ||||||
|  |         self.files_to_copy = self | ||||||
|  |             .files_to_copy | ||||||
|  |             .iter() | ||||||
|  |             .map(|(src, dest)| (resolve_envs(src), resolve_envs(dest))) | ||||||
|  |             .collect(); | ||||||
|  |         self.files_autodep = self | ||||||
|  |             .files_autodep | ||||||
|  |             .iter() | ||||||
|  |             .map(|file| resolve_envs(file)) | ||||||
|  |             .collect(); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// This function will return all included bom files in the order to deal with.
 | /// This function will return all included bom files in the order to deal with.
 | ||||||
|  | |||||||
| @ -80,3 +80,16 @@ pub fn find_included_bom_file( | |||||||
|     std::process::exit(FILE_NOT_EXISTS_ERROR); |     std::process::exit(FILE_NOT_EXISTS_ERROR); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /// Try to resolve a path may contain environmental variables to a path without environmental variables
 | ||||||
|  | /// This function relies on a third-party crate shellexpand.
 | ||||||
|  | /// Known limitations: If the environmental variable points to an empty value, the conversion may fail.
 | ||||||
|  | pub fn resolve_envs(path: &str) -> String { | ||||||
|  |     shellexpand::env(path).map_or_else( | ||||||
|  |         |_| { | ||||||
|  |             warn!("{} resolve fails.", path); | ||||||
|  |             path.to_string() | ||||||
|  |         }, | ||||||
|  |         |res| res.to_string(), | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user