(metadata: &CargoMetadata, name: &FunctionNames)
| 227 | } |
| 228 | |
| 229 | fn package_metadata(metadata: &CargoMetadata, name: &FunctionNames) -> Result<Option<Config>> { |
| 230 | let kind_condition = |pkg: &Package, target: &Target| { |
| 231 | target.kind.iter().any(|kind| kind == "bin") && pkg.metadata.is_object() |
| 232 | }; |
| 233 | |
| 234 | if name.is_empty() { |
| 235 | if metadata.packages.len() == 1 { |
| 236 | return get_config_from_root(metadata); |
| 237 | } |
| 238 | |
| 239 | let targets = binary_targets_from_metadata(metadata, false); |
| 240 | trace!( |
| 241 | ?targets, |
| 242 | "inspecting targets for a command without package name" |
| 243 | ); |
| 244 | if targets.len() == 1 { |
| 245 | let name = targets |
| 246 | .into_iter() |
| 247 | .next() |
| 248 | .ok_or(MetadataError::MissingBinaryInProject)?; |
| 249 | return get_config_from_packages( |
| 250 | metadata, |
| 251 | kind_condition, |
| 252 | &FunctionNames::from_package(&name), |
| 253 | ); |
| 254 | } |
| 255 | |
| 256 | return Ok(None); |
| 257 | }; |
| 258 | |
| 259 | get_config_from_packages(metadata, kind_condition, name) |
| 260 | } |
| 261 | |
| 262 | fn get_config_from_packages( |
| 263 | metadata: &CargoMetadata, |
no test coverage detected