From 39124f9df4eb269f6e281ce50fd96834b0f9319d Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Tue, 19 Aug 2025 11:10:36 +0200 Subject: [PATCH] Refactor imports and remove unused ActionOrder implementation - Cleaned up imports across multiple modules for better organization and removed unused dependencies. - Eliminated `ActionOrder` implementation from `executors` as it's no longer being utilized. - Simplified error handling in `get_dependencies` using `unwrap_or_else`. - Optimized test setups with consistent use of `tempdir` helper function. --- libips/src/actions/executors.rs | 11 ----------- libips/src/image/action_plan.rs | 5 ++--- libips/src/solver/mod.rs | 29 ++++++++++++----------------- 3 files changed, 14 insertions(+), 31 deletions(-) diff --git a/libips/src/actions/executors.rs b/libips/src/actions/executors.rs index ed4096b..228b088 100644 --- a/libips/src/actions/executors.rs +++ b/libips/src/actions/executors.rs @@ -93,17 +93,6 @@ pub enum ActionOrder { Other = 3, } -impl ActionOrder { - fn for_manifest_section(section: &'static str) -> ActionOrder { - match section { - "dir" | "directories" => ActionOrder::Dir, - "file" | "files" => ActionOrder::File, - "link" | "links" => ActionOrder::Link, - _ => ActionOrder::Other, - } - } -} - #[derive(Debug, Default, Clone)] pub struct ApplyOptions { pub dry_run: bool, diff --git a/libips/src/image/action_plan.rs b/libips/src/image/action_plan.rs index 2ca57ec..7c0aa13 100644 --- a/libips/src/image/action_plan.rs +++ b/libips/src/image/action_plan.rs @@ -1,7 +1,7 @@ use std::path::Path; -use crate::actions::{Manifest, Dir, File, Link}; use crate::actions::executors::{apply_manifest, ApplyOptions, InstallerError}; +use crate::actions::Manifest; use crate::solver::InstallPlan; /// ActionPlan represents a merged list of actions across all manifests @@ -45,8 +45,7 @@ impl ActionPlan { #[cfg(test)] mod tests { use super::*; - use crate::solver::{InstallPlan as SInstallPlan, ResolvedPkg}; - use crate::fmri::{Fmri, Version}; + use crate::solver::InstallPlan as SInstallPlan; #[test] fn build_and_apply_empty_plan_dry_run() { diff --git a/libips/src/solver/mod.rs b/libips/src/solver/mod.rs index 3fcab75..6e45653 100644 --- a/libips/src/solver/mod.rs +++ b/libips/src/solver/mod.rs @@ -16,14 +16,12 @@ //! solver, and assembles an InstallPlan from the chosen solvables. use std::cell::RefCell; -use std::collections::{BTreeMap, HashMap, HashSet}; - -// Begin resolvo wiring imports (names discovered by compiler) -// We start broad and refine with compiler guidance. -use resolvo::{self, Candidates, Dependencies as RDependencies, DependencyProvider, Interner, KnownDependencies, Mapping, NameId, Problem as RProblem, Requirement as RRequirement, Solver as RSolver, SolverCache, SolvableId, StringId, VersionSetId, VersionSetUnionId, UnsolvableOrCancelled}; +use std::collections::{BTreeMap, HashMap}; use miette::Diagnostic; -use redb::ReadableTable; +// Begin resolvo wiring imports (names discovered by compiler) +// We start broad and refine with compiler guidance. +use resolvo::{self, Candidates, Dependencies as RDependencies, DependencyProvider, Interner, KnownDependencies, Mapping, NameId, Problem as RProblem, Requirement as RRequirement, SolvableId, Solver as RSolver, SolverCache, StringId, UnsolvableOrCancelled, VersionSetId, VersionSetUnionId}; use thiserror::Error; use crate::actions::Manifest; @@ -298,10 +296,7 @@ impl<'a> DependencyProvider for IpsProvider<'a> { async fn get_dependencies(&self, solvable: SolvableId) -> RDependencies { let pkg = self.solvables.get(solvable).unwrap(); let fmri = &pkg.fmri; - let manifest_opt = match self.image.get_manifest_from_catalog(fmri) { - Ok(m) => m, - Err(_) => None, - }; + let manifest_opt = self.image.get_manifest_from_catalog(fmri).unwrap_or_else(|_| None); let Some(manifest) = manifest_opt else { return RDependencies::Known(KnownDependencies::default()); }; @@ -651,12 +646,12 @@ mod tests { #[cfg(test)] mod solver_integration_tests { use super::*; - use crate::image::ImageType; + use crate::actions::Dependency; + use crate::fmri::Version; use crate::image::catalog::{CATALOG_TABLE, OBSOLETED_TABLE}; + use crate::image::ImageType; use redb::Database; use tempfile::tempdir; - use crate::fmri::Version; - use crate::actions::Dependency; fn mk_version(release: &str, branch: Option<&str>, timestamp: Option<&str>) -> Version { let mut v = Version::new(release); @@ -763,16 +758,16 @@ mod solver_integration_tests { #[test] fn resolve_uses_repo_manifest_after_solving() { use crate::image::ImageType; - use crate::repository::{FileBackend, WritableRepository, RepositoryVersion}; + use crate::repository::{FileBackend, RepositoryVersion, WritableRepository}; use std::fs; // Create a temp image - let td_img = tempfile::tempdir().expect("tempdir img"); + let td_img = tempdir().expect("tempdir img"); let img_path = td_img.path().to_path_buf(); let mut img = Image::create_image(&img_path, ImageType::Partial).expect("create image"); // Create a temp file-based repository and add publisher - let td_repo = tempfile::tempdir().expect("tempdir repo"); + let td_repo = tempdir().expect("tempdir repo"); let repo_path = td_repo.path().to_path_buf(); let mut repo = FileBackend::create(&repo_path, RepositoryVersion::V4).expect("create repo"); repo.add_publisher("pubA").expect("add publisher"); @@ -902,9 +897,9 @@ mod solver_error_message_tests { use super::*; use crate::actions::{Dependency, Manifest}; use crate::fmri::{Fmri, Version}; + use crate::image::catalog::CATALOG_TABLE; use crate::image::ImageType; use redb::Database; - use crate::image::catalog::CATALOG_TABLE; fn mk_version(release: &str, branch: Option<&str>, timestamp: Option<&str>) -> Version { let mut v = Version::new(release);