diff options
Diffstat (limited to 'crates/shirabe/src/command/reinstall_command.rs')
| -rw-r--r-- | crates/shirabe/src/command/reinstall_command.rs | 88 |
1 files changed, 67 insertions, 21 deletions
diff --git a/crates/shirabe/src/command/reinstall_command.rs b/crates/shirabe/src/command/reinstall_command.rs index 59bb2ec..3fb26a2 100644 --- a/crates/shirabe/src/command/reinstall_command.rs +++ b/crates/shirabe/src/command/reinstall_command.rs @@ -68,7 +68,9 @@ impl ReinstallCommand { let composer = self.inner.require_composer()?; let local_repo = composer.get_repository_manager().get_local_repository(); - let mut packages_to_reinstall: Vec<Box<dyn crate::package::package_interface::PackageInterface>> = vec![]; + let mut packages_to_reinstall: Vec< + Box<dyn crate::package::package_interface::PackageInterface>, + > = vec![]; let mut package_names_to_reinstall: Vec<String> = vec![]; let type_option = input.get_option("type"); @@ -79,12 +81,20 @@ impl ReinstallCommand { if type_count > 0 { if packages_count > 0 { return Err(InvalidArgumentException { - message: "You cannot specify package names and filter by type at the same time.".to_string(), + message: + "You cannot specify package names and filter by type at the same time." + .to_string(), code: 0, - }.into()); + } + .into()); } - let filter_types: Vec<String> = type_option.as_list() - .map(|l| l.iter().filter_map(|v| v.as_string().map(|s| s.to_string())).collect()) + let filter_types: Vec<String> = type_option + .as_list() + .map(|l| { + l.iter() + .filter_map(|v| v.as_string().map(|s| s.to_string())) + .collect() + }) .unwrap_or_default(); for package in local_repo.get_canonical_packages() { if filter_types.contains(&package.get_type().to_string()) { @@ -95,12 +105,19 @@ impl ReinstallCommand { } else { if packages_count == 0 { return Err(InvalidArgumentException { - message: "You must pass one or more package names to be reinstalled.".to_string(), + message: "You must pass one or more package names to be reinstalled." + .to_string(), code: 0, - }.into()); + } + .into()); } - let patterns: Vec<String> = packages_arg.as_list() - .map(|l| l.iter().filter_map(|v| v.as_string().map(|s| s.to_string())).collect()) + let patterns: Vec<String> = packages_arg + .as_list() + .map(|l| { + l.iter() + .filter_map(|v| v.as_string().map(|s| s.to_string())) + .collect() + }) .unwrap_or_default(); for pattern in &patterns { let pattern_regexp = BasePackage::package_name_to_regexp(pattern); @@ -130,7 +147,8 @@ impl ReinstallCommand { let present_packages = local_repo.get_packages(); let result_packages = present_packages.clone(); - let present_packages: Vec<_> = present_packages.into_iter() + let present_packages: Vec<_> = present_packages + .into_iter() .filter(|package| !package_names_to_reinstall.contains(&package.get_name().to_string())) .collect(); @@ -140,15 +158,24 @@ impl ReinstallCommand { let mut install_order = indexmap::IndexMap::new(); for (index, op) in install_operations.iter().enumerate() { if let Some(install_op) = (op.as_any() as &dyn Any).downcast_ref::<InstallOperation>() { - if (install_op.get_package().as_any() as &dyn Any).downcast_ref::<AliasPackage>().is_none() { + if (install_op.get_package().as_any() as &dyn Any) + .downcast_ref::<AliasPackage>() + .is_none() + { install_order.insert(install_op.get_package().get_name().to_string(), index); } } } uninstall_operations.sort_by(|a, b| { - let a_order = install_order.get(a.get_package().get_name()).copied().unwrap_or(0); - let b_order = install_order.get(b.get_package().get_name()).copied().unwrap_or(0); + let a_order = install_order + .get(a.get_package().get_name()) + .copied() + .unwrap_or(0); + let b_order = install_order + .get(b.get_package().get_name()) + .copied() + .unwrap_or(0); b_order.cmp(&a_order) }); @@ -165,13 +192,15 @@ impl ReinstallCommand { event_dispatcher.dispatch(command_event.get_name(), &command_event); let config = composer.get_config(); - let (prefer_source, prefer_dist) = self.inner.get_preferred_install_options(config, input)?; + let (prefer_source, prefer_dist) = + self.inner.get_preferred_install_options(config, input)?; let installation_manager = composer.get_installation_manager(); let download_manager = composer.get_download_manager(); let package = composer.get_package(); - installation_manager.set_output_progress(!input.get_option("no-progress").as_bool().unwrap_or(false)); + installation_manager + .set_output_progress(!input.get_option("no-progress").as_bool().unwrap_or(false)); if input.get_option("no-plugins").as_bool().unwrap_or(false) { installation_manager.disable_plugins(); } @@ -188,19 +217,36 @@ impl ReinstallCommand { installation_manager.execute(local_repo, install_operations, dev_mode); if !input.get_option("no-autoloader").as_bool().unwrap_or(false) { - let optimize = input.get_option("optimize-autoloader").as_bool().unwrap_or(false) + let optimize = input + .get_option("optimize-autoloader") + .as_bool() + .unwrap_or(false) || config.get("optimize-autoloader").as_bool().unwrap_or(false); - let authoritative = input.get_option("classmap-authoritative").as_bool().unwrap_or(false) - || config.get("classmap-authoritative").as_bool().unwrap_or(false); - let apcu_prefix = input.get_option("apcu-autoloader-prefix").as_string_opt().map(|s| s.to_string()); + let authoritative = input + .get_option("classmap-authoritative") + .as_bool() + .unwrap_or(false) + || config + .get("classmap-authoritative") + .as_bool() + .unwrap_or(false); + let apcu_prefix = input + .get_option("apcu-autoloader-prefix") + .as_string_opt() + .map(|s| s.to_string()); let apcu = apcu_prefix.is_some() - || input.get_option("apcu-autoloader").as_bool().unwrap_or(false) + || input + .get_option("apcu-autoloader") + .as_bool() + .unwrap_or(false) || config.get("apcu-autoloader").as_bool().unwrap_or(false); let generator = composer.get_autoload_generator(); generator.set_class_map_authoritative(authoritative); generator.set_apcu(apcu, apcu_prefix.as_deref()); - generator.set_platform_requirement_filter(self.inner.get_platform_requirement_filter(input)?); + generator.set_platform_requirement_filter( + self.inner.get_platform_requirement_filter(input)?, + ); generator.dump( config, local_repo, |
