Skip to main content

lightshuttle_export/
lib.rs

1//! Manifest to deployment artifact transpilation for LightShuttle.
2//!
3//! The export pipeline follows a compiler shape: [`lower`] turns a
4//! parsed `lightshuttle-manifest` into a neutral [`ExportModel`] by
5//! resolving every resource through `lightshuttle-spec`, then a target
6//! [`Emitter`] renders that model into [`ExportArtifacts`]. Per-target
7//! defaults and overrides are resolved by the pure helpers in
8//! [`resolve`], shared by every emitter.
9//!
10//! This crate carries no container daemon dependency: it only reads the
11//! manifest and the resolved specification, so it transpiles the same
12//! way on a developer machine or in CI without Docker.
13
14mod emit;
15mod emitters;
16mod error;
17mod lower;
18mod model;
19pub mod resolve;
20
21pub use crate::emit::Emitter;
22pub use crate::emitters::{ComposeEmitter, HelmEmitter, KubernetesEmitter};
23pub use crate::error::{ExportError, Result};
24pub use crate::lower::lower;
25pub use crate::model::{
26    ExportArtifacts, ExportFile, ExportModel, ExportProject, ExportService, Target,
27};