History

Add 'inc()' convenience methods to progress

Sebastian Thiel committed 6 years ago

Commit 2e46c9b1 parent 4018c966 files · +53 −14Browse files

Unified · Split

6 files
  1. Cargo.lock +11 −10
  2. git-features/src/progress/log.rs +8 −0
  3. git-features/src/progress/mod.rs +27 −0
  4. git-features/src/progress/prodash.rs +4 −0
  5. git-odb/src/pack/index/verify/lookup.rs +2 −2
  6. tasks.md +1 −2
Cargo.lock+11−10
@@ -292,9 +292,9 @@ dependencies = [ · 291 unmodified lines
292292
293293 [[package]]
294294 name = "cpuid-bool"
295−version = "0.1.1"
295+version = "0.1.2"
296296 source = "registry+https://github.com/rust-lang/crates.io-index"
297−checksum = "ec6763c20301ab0dc67051d1b6f4cc9132ad9e6eddcb1f10c6c53ea6d6ae2183"
297+checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634"
298298
299299 [[package]]
300300 name = "crc"
@@ -538,9 +538,9 @@ checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" · 237 unmodified lines
538538
539539 [[package]]
540540 name = "futures-lite"
541−version = "0.1.5"
541+version = "0.1.6"
542542 source = "registry+https://github.com/rust-lang/crates.io-index"
543−checksum = "08e706d5c313fd50778b4d2fd779b90ca79d474eebe4b4cb3e44b5f84ea799fe"
543+checksum = "af0bbcb0ec905ef6ee23fab499119b5da2362b8697d66e08d1ef01a8c0d438e2"
544544 dependencies = [
545545 "fastrand",
546546 "futures-core",
@@ -1107,22 +1107,23 @@ checksum = "7e0456befd48169b9f13ef0f0ad46d492cf9d2dbb918bcf38e01eed4ce3ec5e4" · 560 unmodified lines
11071107
11081108 [[package]]
11091109 name = "proc-macro2"
1110−version = "1.0.18"
1110+version = "1.0.19"
11111111 source = "registry+https://github.com/rust-lang/crates.io-index"
1112−checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa"
1112+checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12"
11131113 dependencies = [
11141114 "unicode-xid",
11151115 ]
11161116
11171117 [[package]]
11181118 name = "prodash"
1119−version = "7.0.3"
1119+version = "7.0.4"
11201120 source = "registry+https://github.com/rust-lang/crates.io-index"
1121−checksum = "07b07566ec8357eb8ff124bceecfe456c5cc6ff9667ffeb13ded2d47f6697776"
1121+checksum = "ee4fa33fe64f4fca880cebacf1645cb75ae75990f4d2804ac15842ed38fe0e25"
11221122 dependencies = [
11231123 "crosstermion",
11241124 "dashmap",
11251125 "futures-core",
1126+ "futures-lite",
11261127 "futures-util",
11271128 "humantime 2.0.1",
11281129 "log",
@@ -1455,9 +1456,9 @@ dependencies = [ · 326 unmodified lines
14551456
14561457 [[package]]
14571458 name = "syn"
1458−version = "1.0.34"
1459+version = "1.0.35"
14591460 source = "registry+https://github.com/rust-lang/crates.io-index"
1460−checksum = "936cae2873c940d92e697597c5eee105fb570cd5689c695806f672883653349b"
1461+checksum = "fb7f4c519df8c117855e19dd8cc851e89eb746fe7a73f0157e0d95fdec5369b0"
14611462 dependencies = [
14621463 "proc-macro2",
14631464 "quote",
git-features/src/progress/log.rs+8−0
@@ -6,6 +6,7 @@ pub struct Log { · 5 unmodified lines
66 max: Option<u32>,
77 unit: Option<&'static str>,
88 last_set: Option<std::time::SystemTime>,
9+ step: u32,
910 current_level: usize,
1011 max_level: usize,
1112 }
@@ -19,6 +20,7 @@ impl Log { · 7 unmodified lines
1920 current_level: 0,
2021 max_level: max_level.unwrap_or(usize::MAX),
2122 max: None,
23+ step: 0,
2224 unit: None,
2325 last_set: None,
2426 }
@@ -33,6 +35,7 @@ impl Progress for Log { · 8 unmodified lines
3335 name: format!("{}::{}", self.name, Into::<String>::into(name)),
3436 current_level: self.current_level + 1,
3537 max_level: self.max_level,
38+ step: 0,
3639 max: None,
3740 unit: None,
3841 last_set: None,
@@ -45,6 +48,7 @@ impl Progress for Log { · 6 unmodified lines
4548 }
4649
4750 fn set(&mut self, step: u32) {
51+ self.step = step;
4852 if self.current_level > self.max_level {
4953 return;
5054 }
@@ -69,6 +73,10 @@ impl Progress for Log { · 18 unmodified lines
6973 }
7074 }
7175
76+ fn inc_by(&mut self, step: u32) {
77+ self.set(self.step + step)
78+ }
79+
7280 fn message(&mut self, level: MessageLevel, message: impl Into<String>) {
7381 let message: String = message.into();
7482 match level {
git-features/src/progress/mod.rs+27−0
@@ -38,6 +38,20 @@ pub trait Progress { · 37 unmodified lines
3838 /// **Note**: that this call has no effect unless `init(…)` was called before.
3939 fn set(&mut self, step: u32);
4040
41+ /// Increment the current progress to the given `step`. The cost of this call is negligible,
42+ /// making manual throttling *not* necessary.
43+ ///
44+ /// **Note**: that this call has no effect unless `init(…)` was called before.
45+ fn inc_by(&mut self, step: u32);
46+
47+ /// Increment the current progress to the given 1. The cost of this call is negligible,
48+ /// making manual throttling *not* necessary.
49+ ///
50+ /// **Note**: that this call has no effect unless `init(…)` was called before.
51+ fn inc(&mut self) {
52+ self.inc_by(1)
53+ }
54+
4155 /// Create a `message` of the given `level` and store it with the progress tree.
4256 ///
4357 /// Use this to provide additional,human-readable information about the progress
@@ -71,6 +85,8 @@ impl Progress for Discard { · 27 unmodified lines
7185
7286 fn set(&mut self, _step: u32) {}
7387
88+ fn inc_by(&mut self, _step: u32) {}
89+
7490 fn message(&mut self, _level: MessageLevel, _message: impl Into<String>) {}
7591 }
7692
@@ -107,6 +123,13 @@ where · 30 unmodified lines
107123 }
108124 }
109125
126+ fn inc_by(&mut self, step: u32) {
127+ match self {
128+ Either::Left(l) => l.inc_by(step),
129+ Either::Right(r) => r.inc_by(step),
130+ }
131+ }
132+
110133 fn message(&mut self, level: MessageLevel, message: impl Into<String>) {
111134 match self {
112135 Either::Left(l) => l.message(level, message),
@@ -147,6 +170,10 @@ where · 34 unmodified lines
147170 self.0.set(step)
148171 }
149172
173+ fn inc_by(&mut self, step: u32) {
174+ self.0.inc_by(step)
175+ }
176+
150177 fn message(&mut self, level: MessageLevel, message: impl Into<String>) {
151178 self.0.message(level, message)
152179 }
git-features/src/progress/prodash.rs+4−0
@@ -17,6 +17,10 @@ impl Progress for Item { · 16 unmodified lines
1717 Item::set(self, step)
1818 }
1919
20+ fn inc_by(&mut self, step: u32) {
21+ self.inc_by(step)
22+ }
23+
2024 fn message(&mut self, level: MessageLevel, message: impl Into<String>) {
2125 Item::message(
2226 self,
git-odb/src/pack/index/verify/lookup.rs+2−2
@@ -132,10 +132,10 @@ impl index::File { · 131 unmodified lines
132132 use git_object::Kind::*;
133133 match object_kind {
134134 Tree | Commit | Tag => {
135− let obj = borrowed::Object::from_bytes(object_kind, buf.as_slice())
135+ let borrowed_object = borrowed::Object::from_bytes(object_kind, buf.as_slice())
136136 .map_err(|err| Error::ObjectDecode(err, object_kind, index_entry.oid))?;
137137 if let Mode::Sha1CRC32DecodeEncode = mode {
138− let object = owned::Object::from(obj);
138+ let object = owned::Object::from(borrowed_object);
139139 encode_buf.clear();
140140 object.write_to(&mut *encode_buf)?;
141141 if encode_buf != buf {
tasks.md+1−2
@@ -25,8 +25,7 @@ · 24 unmodified lines
2525 * [x] set some unit tests cases to use the streaming algorithm
2626 * [x] invert '--statistics' to become '--no-statistics' (it's free now)
2727 * **progress - convenience**
28− * [ ] `inc()` method
29− * [ ] `inc_by(step)` method
28+ * [x] `inc()` method and`inc_by(step)` method
3029 * [ ] a way to measure throughput on drop
3130 * [ ] percentages somewhere near the progress bar
3231 * **plumbing - explode pack**