use anyhow::Result;
use clap::Subcommand;
pub const FEIRA_FIELD_MANAGER: &str = "feira";
pub mod add;
pub mod allocation;
pub mod app;
pub mod build;
pub mod chart;
pub mod deploy;
pub mod dialeto;
pub mod ephemeral;
pub mod ephemeral_runtime;
pub mod fmt;
pub mod init;
pub mod lint;
pub mod load;
pub mod lock;
pub mod nix;
pub mod pool;
pub mod publish;
pub mod resolve;
pub mod tofu;
#[derive(Subcommand)]
pub enum Command {
Init(init::Init),
Add(add::Add),
Resolve(resolve::Resolve),
Lock(lock::Lock),
Build(build::Build),
Fmt(fmt::Fmt),
Lint(lint::Lint),
Dialeto(dialeto::Dialeto),
Nix(nix::Nix),
Chart(chart::Chart),
Deploy(deploy::Deploy),
App(app::App),
Ephemeral(ephemeral::Ephemeral),
Pool(pool::Pool),
Allocation(allocation::Allocation),
Publish(publish::Publish),
Tofu(tofu::Tofu),
}
impl Command {
pub fn run(self) -> Result<()> {
match self {
Self::Init(c) => c.run(),
Self::Add(c) => c.run(),
Self::Resolve(c) => c.run(),
Self::Lock(c) => c.run(),
Self::Build(c) => c.run(),
Self::Fmt(c) => c.run(),
Self::Lint(c) => c.run(),
Self::Dialeto(c) => c.run(),
Self::Nix(c) => c.run(),
Self::Chart(c) => c.run(),
Self::Deploy(c) => c.run(),
Self::App(c) => c.run(),
Self::Ephemeral(c) => c.run(),
Self::Pool(c) => c.run(),
Self::Allocation(c) => c.run(),
Self::Publish(c) => c.run(),
Self::Tofu(c) => c.run(),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use kube::api::PatchParams;
#[test]
fn feira_field_manager_pins_canonical_field_manager_string() {
assert_eq!(
FEIRA_FIELD_MANAGER, "feira",
"FEIRA_FIELD_MANAGER must resolve to the canonical \"feira\" \
byte-string — a rebrand must land at one caixa-feira edit \
on the const, not by re-inlining a different byte at any \
writer-side `PatchParams::apply(…)` call"
);
}
#[test]
fn feira_field_manager_flows_through_patchparams_apply() {
let via_const = PatchParams::apply(FEIRA_FIELD_MANAGER);
let via_literal = PatchParams::apply("feira");
assert_eq!(
via_const.field_manager.as_deref(),
Some("feira"),
"PatchParams::apply(FEIRA_FIELD_MANAGER) must produce \
field_manager = Some(\"feira\")"
);
assert_eq!(
via_const.field_manager, via_literal.field_manager,
"PatchParams::apply(FEIRA_FIELD_MANAGER) must produce the \
same field_manager as PatchParams::apply(\"feira\") — the \
const-routed construction and the inline construction are \
byte-for-byte equivalent at the SSA-ownership axis"
);
}
}