//! Uninstalls a set of packages. use installer::InstallerFramework; use tasks::Task; use tasks::TaskParamType; use tasks::save_database::SaveDatabaseTask; use tasks::uninstall_pkg::UninstallPackageTask; pub struct UninstallTask { pub items: Vec, } impl Task for UninstallTask { fn execute( &mut self, _: Vec, _: &mut InstallerFramework, messenger: &Fn(&str, f64), ) -> Result { messenger("Wrapping up...", 0.0); Ok(TaskParamType::None) } fn dependencies(&self) -> Vec> { let mut elements = Vec::>::new(); for item in &self.items { elements.push(Box::new(UninstallPackageTask { name: item.clone(), optional: false, })); } elements.push(Box::new(SaveDatabaseTask {})); elements } fn name(&self) -> String { "UninstallTask".to_string() } }