summaryrefslogtreecommitdiff
path: root/cli/file_fetcher.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2022-09-09 21:57:39 +0200
committerGitHub <noreply@github.com>2022-09-09 15:57:39 -0400
commitf92bd986de7f083ac164c0e3a2b04d3504c29741 (patch)
treedbd0a3484014da69ab8258c5f8e86616574741af /cli/file_fetcher.rs
parent3bce2af0ebc997278519f5d6270915bb3fe8fd56 (diff)
feat: download progress bar (#15814)
Diffstat (limited to 'cli/file_fetcher.rs')
-rw-r--r--cli/file_fetcher.rs30
1 files changed, 24 insertions, 6 deletions
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs
index 0e01237d9..044707cff 100644
--- a/cli/file_fetcher.rs
+++ b/cli/file_fetcher.rs
@@ -7,6 +7,7 @@ use crate::http_util::fetch_once;
use crate::http_util::CacheSemantics;
use crate::http_util::FetchOnceArgs;
use crate::http_util::FetchOnceResult;
+use crate::progress_bar::ProgressBar;
use crate::text_encoding;
use crate::version::get_user_agent;
@@ -318,6 +319,7 @@ pub struct FileFetcher {
http_client: reqwest::Client,
blob_store: BlobStore,
download_log_level: log::Level,
+ progress_bar: Option<ProgressBar>,
}
impl FileFetcher {
@@ -328,6 +330,7 @@ impl FileFetcher {
root_cert_store: Option<RootCertStore>,
blob_store: BlobStore,
unsafely_ignore_certificate_errors: Option<Vec<String>>,
+ progress_bar: Option<ProgressBar>,
) -> Result<Self, AnyError> {
Ok(Self {
auth_tokens: AuthTokens::new(env::var("DENO_AUTH_TOKENS").ok()),
@@ -345,6 +348,7 @@ impl FileFetcher {
)?,
blob_store,
download_log_level: log::Level::Info,
+ progress_bar,
})
}
@@ -584,12 +588,17 @@ impl FileFetcher {
.boxed();
}
- log::log!(
- self.download_log_level,
- "{} {}",
- colors::green("Download"),
- specifier
- );
+ let mut _maybe_guard = None;
+ if let Some(pb) = self.progress_bar.as_ref() {
+ _maybe_guard = Some(pb.update(specifier.as_str()));
+ } else {
+ log::log!(
+ self.download_log_level,
+ "{} {}",
+ colors::green("Download"),
+ specifier
+ );
+ }
let maybe_etag = match self.http_cache.get(specifier) {
Ok((_, headers, _)) => headers.get("etag").cloned(),
@@ -770,6 +779,7 @@ mod tests {
None,
blob_store.clone(),
None,
+ None,
)
.unwrap();
(file_fetcher, temp_dir, blob_store)
@@ -1208,6 +1218,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let result = file_fetcher
@@ -1234,6 +1245,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let specifier =
@@ -1261,6 +1273,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let result = file_fetcher_02
@@ -1404,6 +1417,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let specifier =
@@ -1433,6 +1447,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let result = file_fetcher_02
@@ -1533,6 +1548,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let specifier = resolve_url("http://localhost:4545/002_hello.ts").unwrap();
@@ -1558,6 +1574,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let file_fetcher_02 = FileFetcher::new(
@@ -1567,6 +1584,7 @@ mod tests {
None,
BlobStore::default(),
None,
+ None,
)
.unwrap();
let specifier = resolve_url("http://localhost:4545/002_hello.ts").unwrap();