Skip to main content

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 artifact;
19pub mod build;
20pub mod error;
21pub mod known_hosts;
22pub mod report;
23pub mod runner;
24pub mod transport;
25
26pub use artifact::{build_manifest, ArtifactManifest, HttpsArtifactTransport};
27pub use build::{BuildArtifact, BuildStrategy, SvelteKitAdapter, SvelteKitBuild, ViteSpaBuild};
28pub use error::DeployError;
29pub use report::{NoopReporter, Reporter};
30pub use runner::detect_runner;
31pub use transport::{RsyncTransport, Transport};