alien_core/import/mod.rs
1//! Typed setup import contract.
2//!
3//! `alien-core` owns the request shape every CloudFormation / Terraform /
4//! Helm generator and every importer (manager-side or agent-side) speaks:
5//!
6//! * [`data`] — typed `Aws*ImportData` / `Gcp*ImportData` / `Azure*ImportData`
7//! structs. Pure data + JsonSchema, camelCase serde. The payload that
8//! crosses crate boundaries.
9//! * [`request`] — [`StackImportRequest`] / [`ImportedResource`] /
10//! [`StackImportResponse`] / [`ImportSourceKind`]. The HTTP request /
11//! response types of `POST /v1/stack/import`.
12//! * [`context`] — [`EmitContext`] / [`ImportContext`]. Pure data passed
13//! through to format emitters and to importers respectively.
14//!
15//! Format-specific traits, registries, and emitters live in their respective
16//! format crates:
17//!
18//! * `alien_cloudformation::CfEmitter` + `CfRegistry` (also owns
19//! `CfResource` / `CfExpression`).
20//! * `alien_terraform::TfEmitter` + `TfRegistry` (returns `hcl::Block` /
21//! `hcl::Expression` directly — no intermediate IR).
22//! * `alien_helm::HelmEmitter` + `HelmRegistry`.
23//!
24//! Importers live next to their controllers in `alien-infra`:
25//!
26//! * `alien_infra::ResourceImporter` + `ImporterRegistry`.
27//!
28//! This split keeps `alien-core` lightweight (no format dependencies) and
29//! lets each format crate use its native types without an intermediate IR.
30
31pub mod context;
32pub mod data;
33pub mod request;
34
35pub use context::*;
36pub use data::*;
37pub use request::*;