1
1
//! Extension methods for the [`Alpm`] type.
2
2
3
- use crate :: depends:: satisfies_ver;
4
3
use crate :: DbListExt ;
5
- use alpm:: { Alpm , Depend , Package , PackageReason , SigLevel } ;
6
- use std:: path:: Path ;
7
-
8
- /// Extension methods to the [`Alpm`] type.
9
- pub trait AlpmExt {
10
- /// Try to find a [`Package`] that satisfies a given dependency.
11
- fn find_local_satisfier < S > ( & self , pkg : S ) -> Option < Package < ' _ > >
12
- where
13
- S : Into < String > ;
14
- }
15
-
16
- impl AlpmExt for Alpm {
17
- fn find_local_satisfier < S > ( & self , pkg : S ) -> Option < Package < ' _ > >
18
- where
19
- S : Into < String > ,
20
- {
21
- let localdb = self . localdb ( ) ;
22
- let pkg = pkg. into ( ) ;
23
-
24
- match localdb. pkg ( pkg. as_str ( ) ) {
25
- Ok ( alpm_pkg) if satisfies_ver ( Depend :: new ( pkg. as_str ( ) ) , alpm_pkg. version ( ) ) => {
26
- Some ( alpm_pkg)
27
- }
28
- _ => localdb. pkgs ( ) . find_satisfier ( pkg) ,
29
- }
30
- }
31
- }
32
-
33
- /// All orphaned packages.
34
- ///
35
- /// An orphan is a package that was installed as a dependency, but whose parent
36
- /// package is no longer installed.
37
- pub fn orphans ( alpm : & Alpm ) -> impl Iterator < Item = Package < ' _ > > {
38
- alpm. localdb ( ) . pkgs ( ) . into_iter ( ) . filter ( |p| {
39
- p. reason ( ) == PackageReason :: Depend
40
- && p. required_by ( ) . is_empty ( )
41
- && p. optional_for ( ) . is_empty ( )
42
- } )
43
- }
4
+ use alpm:: { Alpm , Package } ;
44
5
45
6
/// All official packages.
46
- pub fn officials ( alpm : & Alpm ) -> impl Iterator < Item = Package < ' _ > > {
7
+ pub fn native_packages ( alpm : & Alpm ) -> impl Iterator < Item = Package < ' _ > > {
47
8
let syncs = alpm. syncdbs ( ) ;
48
9
49
10
alpm. localdb ( )
@@ -53,19 +14,11 @@ pub fn officials(alpm: &Alpm) -> impl Iterator<Item = Package<'_>> {
53
14
}
54
15
55
16
/// All foreign packages as an `Iterator`.
56
- pub fn foreigns ( alpm : & Alpm ) -> impl Iterator < Item = Package < ' _ > > {
17
+ pub fn foreign_packages ( alpm : & Alpm ) -> impl Iterator < Item = Package < ' _ > > {
57
18
let syncs = alpm. syncdbs ( ) ;
58
19
59
20
alpm. localdb ( )
60
21
. pkgs ( )
61
22
. into_iter ( )
62
23
. filter ( move |p| syncs. pkg ( p. name ( ) ) . is_err ( ) )
63
24
}
64
-
65
- /// Does the given `Path` point to a valid tarball that can can loaded by ALPM?
66
- pub fn is_valid_package ( alpm : & Alpm , path : & Path ) -> bool {
67
- match path. to_str ( ) {
68
- None => false ,
69
- Some ( p) => path. exists ( ) && alpm. pkg_load ( p, true , SigLevel :: USE_DEFAULT ) . is_ok ( ) ,
70
- }
71
- }
0 commit comments