smbcloud_deploy/lib.rs
1//! smbCloud build and deploy engine.
2//!
3//! This crate holds the deploy logic: runner detection, config resolution,
4//! per-runtime build strategies, and transport. It has no front-end of its own.
5//! The CLI, the CI action, and the server-side git receiver all drive the same
6//! engine; they differ only in how they report progress and how they
7//! authenticate.
8//!
9//! Two things are inverted so the engine stays reusable. [`Reporter`] takes the
10//! place of direct `spinners`, `dialoguer`, and `println!` calls, so the engine
11//! never owns the terminal. Auth is passed in (a token or credentials); the
12//! engine never reads `~/.smb` or prompts for login.
13//!
14//! Interactive setup (creating or selecting a project, writing
15//! `.smb/config.toml`) stays in the front-end. The engine takes a resolved
16//! config, or returns [`DeployError::NeedsSetup`] for the caller to handle.
17
18pub mod build;
19pub mod error;
20pub mod known_hosts;
21pub mod report;
22pub mod runner;
23pub mod transport;
24
25pub use build::{BuildArtifact, BuildStrategy, ViteSpaBuild};
26pub use error::DeployError;
27pub use report::{NoopReporter, Reporter};
28pub use runner::detect_runner;
29pub use transport::{RsyncTransport, Transport};