Skip to content

Commit 04b5aa5

Browse files
authored
chore(oma-pm)!: adapt new oma-apt (#581)
- Remove `apt.filter_pkgs` and `FilterMode` api
1 parent 8a103b0 commit 04b5aa5

File tree

13 files changed

+60
-99
lines changed

13 files changed

+60
-99
lines changed

Cargo.lock

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ libc = "0.2.159"
2626
reqwest = { version = "0.12.8", default-features = false }
2727
tracing = "0.1.40"
2828
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
29-
smallvec = "1.13.2"
3029
console-subscriber = { version = "0.4.0", optional = true }
3130
ratatui = "0.29.0"
3231
ansi-to-tui = "7.0.0"

oma-pm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ license = "GPL-3.0-or-later"
88
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
99

1010
[dependencies]
11-
oma-apt = "0.10"
11+
oma-apt = "0.11"
1212
thiserror = "2"
1313
chrono = { version = "0.4", features = ["unstable-locales"] }
1414
glob-match = "0.2"

oma-pm/src/apt.rs

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -164,19 +164,6 @@ pub enum OmaAptError {
164164

165165
pub type OmaAptResult<T> = Result<T, OmaAptError>;
166166

167-
/// Modes of the result filter.
168-
#[derive(Debug)]
169-
pub enum FilterMode {
170-
Default,
171-
Installed,
172-
Upgradable,
173-
Automatic,
174-
Manual,
175-
Names,
176-
AutoRemovable,
177-
Hold,
178-
}
179-
180167
pub struct DownloadConfig<'a> {
181168
/// The number of threads to be used for downloads.
182169
pub network_thread: Option<usize>,
@@ -1026,7 +1013,10 @@ impl OmaApt {
10261013
}
10271014
}
10281015

1029-
for pkg in self.filter_pkgs(&[FilterMode::AutoRemovable])? {
1016+
for pkg in self
1017+
.cache
1018+
.packages(&PackageSort::default().auto_removable())
1019+
{
10301020
if !pkg.marked_delete() {
10311021
let ver = pkg.installed().unwrap_or_else(|| {
10321022
// 有可能存在操作之后立即是孤包的情况
@@ -1110,33 +1100,6 @@ impl OmaApt {
11101100

11111101
Ok(())
11121102
}
1113-
1114-
/// Filters pkgs
1115-
pub fn filter_pkgs(
1116-
&self,
1117-
query_mode: &[FilterMode],
1118-
) -> OmaAptResult<impl Iterator<Item = Package<'_>>> {
1119-
let mut sort = PackageSort::default();
1120-
1121-
debug!("Filter Mode: {query_mode:?}");
1122-
1123-
for i in query_mode {
1124-
sort = match i {
1125-
FilterMode::Installed => sort.installed(),
1126-
FilterMode::Upgradable => sort.upgradable(),
1127-
FilterMode::Automatic => sort.auto_installed(),
1128-
FilterMode::Names => sort.names(),
1129-
FilterMode::Manual => sort.manually_installed(),
1130-
FilterMode::AutoRemovable => sort.auto_removable(),
1131-
FilterMode::Hold => sort.hold_installed(),
1132-
_ => sort,
1133-
};
1134-
}
1135-
1136-
let pkgs = self.cache.packages(&sort);
1137-
1138-
Ok(pkgs)
1139-
}
11401103
}
11411104

11421105
fn dpkg_exit_status(mut cmd: std::process::Child) -> Result<(), OmaAptError> {
@@ -1310,7 +1273,7 @@ fn get_package_checksums(
13101273
new_pkg: &Package<'_>,
13111274
cand: &Version<'_>,
13121275
) -> Result<PkgChecksums, OmaAptError> {
1313-
let not_local_source = cand.uris().all(|x| !x.starts_with("file:"));
1276+
let not_local_source = cand.uris().iter().all(|x| !x.starts_with("file:"));
13141277

13151278
let sha256 = cand.get_record(RecordField::SHA256);
13161279
let md5 = cand.get_record(RecordField::MD5sum);

oma-pm/src/matches.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl<'a> PackagesMatcher<'a> {
136136
for ver in &versions {
137137
let info = OmaPackage::new(ver, &pkg);
138138

139-
let has = ver.uris().any(|x| url_no_escape(&x) == path);
139+
let has = ver.uris().iter().any(|x| url_no_escape(x) == path);
140140
if has {
141141
res.push(info);
142142
}

oma-pm/src/search.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,9 +346,8 @@ pub struct StrSimSearch<'a> {
346346

347347
impl OmaSearch for StrSimSearch<'_> {
348348
fn search(&self, query: &str) -> Result<Vec<SearchResult>, OmaSearchError> {
349-
let pkgs = self
350-
.cache
351-
.packages(&PackageSort::default().include_virtual());
349+
let sort = PackageSort::default().include_virtual();
350+
let pkgs = self.cache.packages(&sort);
352351

353352
let mut res = AHashMap::new();
354353

@@ -492,7 +491,9 @@ impl<'a> TextSearch<'a> {
492491
impl OmaSearch for TextSearch<'_> {
493492
fn search(&self, query: &str) -> OmaSearchResult<Vec<SearchResult>> {
494493
let mut res = vec![];
495-
let pkgs = self.cache.packages(&PackageSort::default());
494+
495+
let sort = PackageSort::default();
496+
let pkgs = self.cache.packages(&sort);
496497

497498
for pkg in pkgs {
498499
let name = pkg.fullname(true);

oma-refresh/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ oma-topics = { version = "^0.25.0", path = "../oma-topics", optional = true, def
1919
tracing ="0.1"
2020
oma-repo-verify = { version = "^0.9.0", path = "../oma-repo-verify", default-features = false }
2121
ahash = "0.8.11"
22-
oma-apt = { version = "0.10.0", optional = true }
22+
oma-apt = { version = "0.11", optional = true }
2323
aho-corasick = "1.1.3"
2424
# https://github.com/bytecodealliance/rustix/pull/1077
2525
# rustix = { version = "0.38", features = ["fs"] }

src/subcommand/history.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ use dialoguer::{Select, theme::ColorfulTheme};
66
use oma_history::{DATABASE_PATH, HistoryEntry, connect_db, find_history_by_id, list_history};
77
use oma_pm::apt::{AptConfig, InstallOperation, OmaAptArgs};
88
use oma_pm::matches::{GetArchMethod, PackagesMatcher};
9+
use oma_pm::oma_apt::PackageSort;
910
use oma_pm::pkginfo::PtrIsNone;
10-
use oma_pm::{
11-
apt::{FilterMode, OmaApt},
12-
pkginfo::OmaPackage,
13-
};
11+
use oma_pm::{apt::OmaApt, pkginfo::OmaPackage};
1412
use tracing::warn;
1513

1614
use std::path::{Path, PathBuf};
@@ -260,7 +258,10 @@ impl CliExecuter for Undo {
260258

261259
apt.remove(delete, false, true)?;
262260

263-
let pkgs = apt.filter_pkgs(&[FilterMode::Default])?.collect::<Vec<_>>();
261+
let pkgs = apt
262+
.cache
263+
.packages(&PackageSort::default())
264+
.collect::<Vec<_>>();
264265

265266
let install = install
266267
.iter()

src/subcommand/list.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ use clap::Args;
44
use clap_complete::ArgValueCompleter;
55
use oma_console::print::Action;
66
use oma_pm::{
7-
apt::{AptConfig, FilterMode, OmaApt, OmaAptArgs},
8-
oma_apt::{PkgCurrentState, PkgSelectedState},
7+
apt::{AptConfig, OmaApt, OmaAptArgs},
8+
oma_apt::{PackageSort, PkgCurrentState, PkgSelectedState},
99
};
1010
use tracing::info;
1111

1212
use crate::{NOT_DISPLAY_ABORT, fl, utils::pkgnames_completions};
1313
use crate::{color_formatter, config::Config, error::OutputError, table::PagerPrinter};
1414
use anyhow::anyhow;
15-
use smallvec::{SmallVec, smallvec};
1615

1716
use crate::args::CliExecuter;
1817

@@ -77,33 +76,33 @@ impl CliExecuter for List {
7776

7877
let apt = OmaApt::new(vec![], oma_apt_args, false, AptConfig::new())?;
7978

80-
let mut filter_mode: SmallVec<[_; 5]> = smallvec![FilterMode::Names];
79+
let mut sort = PackageSort::default();
8180

8281
if installed {
83-
filter_mode.push(FilterMode::Installed);
82+
sort = sort.installed();
8483
}
8584

8685
if upgradable {
87-
filter_mode.push(FilterMode::Upgradable)
86+
sort = sort.upgradable();
8887
}
8988

9089
if automatic {
91-
filter_mode.push(FilterMode::Automatic);
90+
sort = sort.auto_installed();
9291
}
9392

9493
if manually_installed {
95-
filter_mode.push(FilterMode::Manual);
94+
sort = sort.manually_installed();
9695
}
9796

9897
if autoremovable {
99-
filter_mode.push(FilterMode::AutoRemovable);
98+
sort = sort.auto_removable();
10099
}
101100

102101
if hold {
103-
filter_mode.push(FilterMode::Hold);
102+
sort = sort.hold_installed();
104103
}
105104

106-
let filter_pkgs = apt.filter_pkgs(&filter_mode)?;
105+
let filter_pkgs = apt.cache.packages(&sort);
107106
let filter_pkgs: Box<dyn Iterator<Item = _>> = if packages.is_empty() {
108107
Box::new(filter_pkgs)
109108
} else {

src/subcommand/pick.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,11 @@ impl CliExecuter for Pick {
180180

181181
let mut version_str_display = versions_str.clone();
182182
for (a, b) in v {
183-
if let Some(uri) = versions[a].uris().next() {
183+
if let Some(uri) = versions[a].uris().first() {
184184
version_str_display[a] = format!("{} (from: {uri})", versions_str[a]);
185185
}
186186

187-
if let Some(uri) = versions[b].uris().next() {
187+
if let Some(uri) = versions[b].uris().first() {
188188
version_str_display[b] = format!("{} (from: {uri})", versions_str[b]);
189189
}
190190
}

0 commit comments

Comments
 (0)