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
use std::io::{self, Write};
use pbr;
use term;
pub enum Status {
Applying,
Cached,
Creating,
Downloading,
Encrypting,
Installed,
Missing,
Signing,
Signed,
Uploaded,
Uploading,
Using,
Verified,
Custom(char, String),
}
impl Status {
pub fn parts(&self) -> (char, String, u16) {
match *self {
Status::Applying => ('↑', "Applying".into(), term::color::GREEN),
Status::Cached => ('☑', "Cached".into(), term::color::GREEN),
Status::Creating => ('Ω', "Creating".into(), term::color::GREEN),
Status::Downloading => ('↓', "Downloading".into(), term::color::GREEN),
Status::Encrypting => ('☛', "Encypting".into(), term::color::GREEN),
Status::Installed => ('✓', "Installed".into(), term::color::GREEN),
Status::Missing => ('∵', "Missing".into(), term::color::CYAN),
Status::Signed => ('✓', "Signed".into(), term::color::CYAN),
Status::Signing => ('☛', "Signing".into(), term::color::CYAN),
Status::Uploaded => ('✓', "Uploaded".into(), term::color::GREEN),
Status::Uploading => ('↑', "Uploading".into(), term::color::GREEN),
Status::Using => ('→', "Using".into(), term::color::GREEN),
Status::Verified => ('✓', "Verified".into(), term::color::GREEN),
Status::Custom(c, ref s) => (c, s.to_string(), term::color::GREEN),
}
}
}
pub struct ProgressBar<T: Write> {
bar: pbr::ProgressBar<T>,
total: u64,
current: u64,
}