lightshuttle_manifest/lib.rs
1//! Manifest types, parser, interpolation and JSON Schema generation for
2//! LightShuttle.
3//!
4//! The crate is a structural layer above `serde_yml`. It exposes a
5//! strongly-typed model of the `lightshuttle.yml` manifest, an
6//! interpolation engine that resolves `${...}` expressions against an
7//! environment plus the runtime properties of dependent resources, and a
8//! validation pass that catches naming, dependency and reference issues
9//! before any runtime work is attempted.
10//!
11//! See [`docs/spec/manifest-v0.md`][spec] in the main repository for the
12//! specification this crate implements.
13//!
14//! [spec]: https://github.com/nubster-opensources/lightshuttle/blob/main/docs/spec/manifest-v0.md
15
16pub use crate::error::{ManifestError, Result};
17pub use crate::interpolate::{InterpolationContext, Interpolator, Reference};
18pub use crate::model::{
19 Command, ComposeExport, ComposeResourceExport, ContainerConfig, DashboardConfig,
20 DockerfileConfig, ExportConfig, Healthcheck, HelmExport, HelmResourceExport, ImagePullPolicy,
21 KubernetesExport, KubernetesResourceExport, Manifest, ObservabilityConfig, OtelConfig,
22 PortMapping, PostgresConfig, Project, RedisConfig, ResourceKind, Version, Volume,
23};
24pub use crate::schema::schema;
25
26mod error;
27mod host_paths;
28pub mod interpolate;
29pub mod model;
30mod parse;
31mod schema;
32mod validate;