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
69
70
71
72
//! Chrome for Testing binary downloader.
//!
//! See the [Fetcher chapter](https://turtiesocks.github.io/zendriver-rs/fetcher.html)
//! of the [zendriver-rs user guide](https://turtiesocks.github.io/zendriver-rs/)
//! for cache-layout details, offline-mode workflows, and CI integration tips.
//!
//! Resolves a [`VersionSpec`] + [`Platform`] pair against the
//! [Chrome for Testing manifest][cft-manifest], downloads the matching zip,
//! extracts it into an atomic cache layout, and hands back a path to the
//! executable.
//!
//! Public entry point is [`Fetcher`]; progress is reported through
//! [`FetcherProgress`] callbacks tagged with a [`FetcherPhase`].
//!
//! ```no_run
//! # async fn ex() -> Result<(), zendriver_fetcher::FetcherError> {
//! use zendriver_fetcher::{Fetcher, VersionSpec};
//!
//! let chrome = Fetcher::new()
//! .version(VersionSpec::Latest)
//! .ensure_chrome()
//! .await?;
//! println!("Chrome ready at {}", chrome.display());
//! # Ok(()) }
//! ```
//!
//! [cft-manifest]: https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json
pub use FetcherError;
pub use Fetcher;
pub use Platform;
pub use ;
/// Lifecycle phase of an in-flight fetch.
///
/// Reported via [`FetcherProgress::phase`] so callers can drive a TUI
/// or log stage-by-stage progress.
/// Progress snapshot emitted by an in-flight fetch.