Skip to content

Commit 1698b3c

Browse files
authored
Merge pull request #27 from cgwalters/use-pub-cli
cli: Use the new exported cli functions from ostree-ext
2 parents f78fce1 + d49d942 commit 1698b3c

File tree

1 file changed

+3
-73
lines changed

1 file changed

+3
-73
lines changed

lib/src/cli.rs

Lines changed: 3 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use ostree_ext::ostree;
1616
use ostree_ext::sysroot::SysrootLock;
1717
use std::ffi::OsString;
1818
use std::os::unix::process::CommandExt;
19-
use tokio::sync::mpsc::Receiver;
2019

2120
/// Perform an upgrade operation
2221
#[derive(Debug, Parser)]
@@ -131,51 +130,6 @@ pub(crate) async fn get_locked_sysroot() -> Result<ostree_ext::sysroot::SysrootL
131130
Ok(sysroot)
132131
}
133132

134-
/// Print the status of a layer fetch to stdout.
135-
pub(crate) async fn handle_layer_progress_print(
136-
mut layers: Receiver<ostree_container::store::ImportProgress>,
137-
mut layer_bytes: tokio::sync::watch::Receiver<Option<ostree_container::store::LayerProgress>>,
138-
) {
139-
let style = indicatif::ProgressStyle::default_bar();
140-
let pb = indicatif::ProgressBar::new(100);
141-
pb.set_style(
142-
style
143-
.template("{prefix} {bytes} [{bar:20}] ({eta}) {msg}")
144-
.unwrap(),
145-
);
146-
loop {
147-
tokio::select! {
148-
// Always handle layer changes first.
149-
biased;
150-
layer = layers.recv() => {
151-
if let Some(l) = layer {
152-
if l.is_starting() {
153-
pb.set_position(0);
154-
} else {
155-
pb.finish();
156-
}
157-
pb.set_message(ostree_ext::cli::layer_progress_format(&l));
158-
} else {
159-
// If the receiver is disconnected, then we're done
160-
break
161-
};
162-
},
163-
r = layer_bytes.changed() => {
164-
if r.is_err() {
165-
// If the receiver is disconnected, then we're done
166-
break
167-
}
168-
let bytes = layer_bytes.borrow();
169-
if let Some(bytes) = &*bytes {
170-
pb.set_length(bytes.total);
171-
pb.set_position(bytes.fetched);
172-
}
173-
}
174-
175-
}
176-
}
177-
}
178-
179133
/// Wrapper for pulling a container image, wiring up status output.
180134
async fn pull(
181135
repo: &ostree::Repo,
@@ -192,14 +146,14 @@ async fn pull(
192146
PrepareResult::Ready(p) => p,
193147
};
194148
if let Some(warning) = prep.deprecated_warning() {
195-
crate::cli::print_deprecated_warning(warning).await;
149+
ostree_ext::cli::print_deprecated_warning(warning).await;
196150
}
197-
crate::cli::print_layer_status(&prep);
151+
ostree_ext::cli::print_layer_status(&prep);
198152
let printer = (!quiet).then(|| {
199153
let layer_progress = imp.request_progress();
200154
let layer_byte_progress = imp.request_layer_progress();
201155
tokio::task::spawn(async move {
202-
handle_layer_progress_print(layer_progress, layer_byte_progress).await
156+
ostree_ext::cli::handle_layer_progress_print(layer_progress, layer_byte_progress).await
203157
})
204158
});
205159
let import = imp.import(prep).await;
@@ -215,30 +169,6 @@ async fn pull(
215169
Ok(import)
216170
}
217171

218-
/// Print to stdout how many layers are already stored versus need to be fetched, and
219-
/// their size.
220-
pub(crate) fn print_layer_status(prep: &ostree_container::store::PreparedImport) {
221-
let (stored, to_fetch, to_fetch_size) =
222-
prep.all_layers()
223-
.fold((0u32, 0u32, 0u64), |(stored, to_fetch, sz), v| {
224-
if v.commit.is_some() {
225-
(stored + 1, to_fetch, sz)
226-
} else {
227-
(stored, to_fetch + 1, sz + v.size())
228-
}
229-
});
230-
if to_fetch > 0 {
231-
let size = glib::format_size(to_fetch_size);
232-
println!("layers stored: {stored} needed: {to_fetch} ({size})")
233-
}
234-
}
235-
236-
/// Output a deprecation warning with a sleep time to ensure it's visible.
237-
pub(crate) async fn print_deprecated_warning(msg: &str) {
238-
eprintln!("warning: {msg}");
239-
tokio::time::sleep(std::time::Duration::from_secs(3)).await;
240-
}
241-
242172
/// Stage (queue deployment of) a fetched container image.
243173
async fn stage(
244174
sysroot: &SysrootLock,

0 commit comments

Comments
 (0)