| 97 | } |
| 98 | |
| 99 | pub fn load_config( |
| 100 | args_config: &Config, |
| 101 | metadata: &CargoMetadata, |
| 102 | options: &ConfigOptions, |
| 103 | ) -> Result<Config> { |
| 104 | let mut figment = figment_from_metadata(metadata, options)?; |
| 105 | |
| 106 | let mut args_serialized = Serialized::defaults(args_config); |
| 107 | if let Some(context) = &options.context { |
| 108 | args_serialized = args_serialized.profile(context); |
| 109 | } |
| 110 | |
| 111 | figment = if options.admerge { |
| 112 | figment.admerge(args_serialized) |
| 113 | } else { |
| 114 | figment.merge(args_serialized) |
| 115 | }; |
| 116 | |
| 117 | figment.extract().into_diagnostic() |
| 118 | } |
| 119 | |
| 120 | pub fn load_config_without_cli_flags( |
| 121 | metadata: &CargoMetadata, |