Skip to main content

braze_sync/values/
mod.rs

1//! Per-env values: template + values separation for Braze resources.
2//!
3//! Implements RFC `docs/local/feat-per-env-values.md` Phase 1: schema +
4//! placeholder resolver. Phase 2 (apply integration), Phase 3 (export),
5//! Phase 4 (diff), Phase 6 (plan-lock) wire this module into the
6//! existing CLI surface.
7//!
8//! ## Module shape
9//!
10//! - [`schema`]: `values/<env>.yaml` deserialization and built-in shape
11//!   validation (lid format, cb_id format, key naming).
12//! - [`placeholder`]: extract and resolve `__BRAZESYNC.<type>.<key>__`
13//!   tokens in a body string. Resolution takes a flat `(type, key) -> value`
14//!   lookup so it stays resource-shape-agnostic.
15
16pub mod correlation;
17pub mod exporter;
18pub mod integration;
19pub mod placeholder;
20pub mod schema;
21pub mod templatize;
22
23pub use correlation::{
24    extract_cb_id_values, extract_html_lid_values, extract_plaintext_lid_values, normalize_url,
25    slug_for_cb_id, slug_for_lid, CbIdCorrelation, LidCorrelation,
26};
27pub use exporter::{refresh_content_block_values, refresh_email_template_values, ExportUpdates};
28
29pub use integration::{
30    compute_values_input_hashes, format_failures, load_values_for_env, preflight_values,
31    resolve_content_block_in_place, resolve_email_template_in_place, values_file_path,
32    PreflightArgs, ResolutionFailure,
33};
34
35pub use placeholder::{
36    extract_placeholders, find_suspicious_placeholders, resolve_placeholders, LookupKey,
37    Placeholder, PlaceholderType, ResolutionError,
38};
39pub use schema::{
40    default_values_path, CbIdEntry, ContentBlockValues, CustomEntry, EmailTemplateValues,
41    FieldValues, Globals, LidEntry, ValuesFile, SUPPORTED_VERSION,
42};