-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathpackages.rs
68 lines (60 loc) · 2.22 KB
/
packages.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use alpm::{Alpm, PackageReason, SigLevel};
fn main() {
let handle = Alpm::new("/", "tests/db").unwrap();
handle
.register_syncdb("core", SigLevel::USE_DEFAULT)
.unwrap();
handle
.register_syncdb("extra", SigLevel::USE_DEFAULT)
.unwrap();
handle
.register_syncdb("community", SigLevel::USE_DEFAULT)
.unwrap();
// iterate through each database
for db in handle.syncdbs() {
// search each database for packages matching the regex "linux-[a-z]" AND "headers"
for pkg in db.search(["linux-[a-z]", "headers"].iter()).unwrap() {
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
}
}
// iterate through each database
for db in handle.syncdbs() {
// look for a package named "pacman" in each databse
// the database is implemented as a hashmap so this is faster than iterating
if let Ok(pkg) = db.pkg("pacman") {
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
}
}
// iterate through each database
for db in handle.syncdbs() {
// iterate through every package in the databse
for pkg in db.pkgs() {
// print only explititly intalled packages
if pkg.reason() == PackageReason::Explicit {
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
}
}
}
// iterate through each database
for db in handle.syncdbs() {
// look for the base-devel group
if let Ok(group) = db.group("base-devel") {
// print each package in the group
for pkg in group.packages() {
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
}
}
}
// find a package matching a dep
let pkg = handle.syncdbs().find_satisfier("linux>3").unwrap();
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
// load the pacman package from disk instead of from database
let pkg = handle
.pkg_load(
"tests/pacman-5.1.3-1-x86_64.pkg.tar.xz",
true,
SigLevel::USE_DEFAULT,
)
.unwrap();
println!("{} {}", pkg.name(), pkg.desc().unwrap_or("None"));
}