@@ -4,15 +4,14 @@ use clap::Args;
4
4
use clap_complete:: ArgValueCompleter ;
5
5
use oma_console:: print:: Action ;
6
6
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 } ,
9
9
} ;
10
10
use tracing:: info;
11
11
12
12
use crate :: { NOT_DISPLAY_ABORT , fl, utils:: pkgnames_completions} ;
13
13
use crate :: { color_formatter, config:: Config , error:: OutputError , table:: PagerPrinter } ;
14
14
use anyhow:: anyhow;
15
- use smallvec:: { SmallVec , smallvec} ;
16
15
17
16
use crate :: args:: CliExecuter ;
18
17
@@ -77,33 +76,33 @@ impl CliExecuter for List {
77
76
78
77
let apt = OmaApt :: new ( vec ! [ ] , oma_apt_args, false , AptConfig :: new ( ) ) ?;
79
78
80
- let mut filter_mode : SmallVec < [ _ ; 5 ] > = smallvec ! [ FilterMode :: Names ] ;
79
+ let mut sort = PackageSort :: default ( ) ;
81
80
82
81
if installed {
83
- filter_mode . push ( FilterMode :: Installed ) ;
82
+ sort = sort . installed ( ) ;
84
83
}
85
84
86
85
if upgradable {
87
- filter_mode . push ( FilterMode :: Upgradable )
86
+ sort = sort . upgradable ( ) ;
88
87
}
89
88
90
89
if automatic {
91
- filter_mode . push ( FilterMode :: Automatic ) ;
90
+ sort = sort . auto_installed ( ) ;
92
91
}
93
92
94
93
if manually_installed {
95
- filter_mode . push ( FilterMode :: Manual ) ;
94
+ sort = sort . manually_installed ( ) ;
96
95
}
97
96
98
97
if autoremovable {
99
- filter_mode . push ( FilterMode :: AutoRemovable ) ;
98
+ sort = sort . auto_removable ( ) ;
100
99
}
101
100
102
101
if hold {
103
- filter_mode . push ( FilterMode :: Hold ) ;
102
+ sort = sort . hold_installed ( ) ;
104
103
}
105
104
106
- let filter_pkgs = apt. filter_pkgs ( & filter_mode ) ? ;
105
+ let filter_pkgs = apt. cache . packages ( & sort ) ;
107
106
let filter_pkgs: Box < dyn Iterator < Item = _ > > = if packages. is_empty ( ) {
108
107
Box :: new ( filter_pkgs)
109
108
} else {
0 commit comments