feat(cli): declare app vars in the manifest + plan/apply them
Adds a `[vars]` block to `picloud.toml` (key → TOML value), reconciled by `pic plan`/`pic apply` alongside scripts/routes/triggers/secrets. Unlike `[secrets]` (name-only), var values live inline since they aren't secret. The overlay (`picloud.<env>.toml`) may carry `[vars]`; overlay keys win per key (the env-specific value of an env-agnostic default). `build_bundle` serializes the vars to JSON for the wire (TOML round-trips via serde); `pic plan` shows a `var` row group and `pic apply` reports `vars +c ~u -d`. The `PlanDto`/`ApplyReportDto` gain the matching fields. `pic pull` carries an empty `[vars]` for now (export lands next). Adds a round-trip + overlay-precedence unit test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1221,6 +1221,8 @@ pub struct PlanDto {
|
||||
pub triggers: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub secrets: Vec<ChangeDto>,
|
||||
#[serde(default)]
|
||||
pub vars: Vec<ChangeDto>,
|
||||
/// Fingerprint of the live state this plan was computed against; carried
|
||||
/// in `.picloud/` and replayed to `apply` for the bound-plan check.
|
||||
#[serde(default)]
|
||||
@@ -1255,6 +1257,12 @@ pub struct ApplyReportDto {
|
||||
#[serde(default)]
|
||||
pub triggers_deleted: u32,
|
||||
#[serde(default)]
|
||||
pub vars_created: u32,
|
||||
#[serde(default)]
|
||||
pub vars_updated: u32,
|
||||
#[serde(default)]
|
||||
pub vars_deleted: u32,
|
||||
#[serde(default)]
|
||||
pub warnings: Vec<String>,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user