Skip to main content

thunderstore_engine/
lib.rs

1//!
2#![doc = include_str!("../README.md")]
3#![forbid(unsafe_code)]
4
5#[cfg(not(any(feature = "rustls-tls", feature = "native-tls")))]
6compile_error!(
7  "thunderstore-engine requires exactly one TLS backend: enable rustls-tls (default) or native-tls"
8);
9
10#[cfg(all(feature = "rustls-tls", feature = "native-tls"))]
11compile_error!(
12  "thunderstore-engine: enable only one TLS backend, rustls-tls OR native-tls, not both"
13);
14
15/// Async Thunderstore API client and package-index cache.
16pub mod client;
17/// Ecosystem-schema: games, mod loaders, and install rules.
18pub mod ecosystem;
19/// Error types and the engine `Result` alias.
20pub mod error;
21/// CRC-verified zip extraction primitives.
22pub mod extract;
23/// Schema-driven, root-relative mod install routing.
24pub mod install;
25/// String interning utilities for memory-efficient string storage.
26pub(crate) mod intern;
27/// Per-mod `manifest.json` parsing.
28pub mod manifest;
29/// Package data model and the cache wire format.
30pub mod models;
31/// r2modman-compatible profile management.
32pub mod profile;
33/// UI-agnostic progress reporting.
34pub mod progress;
35/// Dependency-graph resolution.
36pub mod resolve;
37/// Bounded retry policy for transient network failures.
38mod retry;
39/// Whether the running Steam client can resolve a path.
40pub mod steam;
41/// Small internal utilities shared across the engine.
42pub(crate) mod util;
43
44pub use error::{Error, Result};
45pub use progress::{NoopProgress, ProgressHandle, ProgressReporter};
46pub use retry::RetryPolicy;