#![cfg_attr(not(feature = "cli"), allow(dead_code, unused_imports))]
pub mod context;
pub mod engine;
mod execute;
mod lifecycle;
mod output;
mod replace_op;
mod search_op;
mod validate;
pub(crate) mod verify;
#[cfg(feature = "ast")]
mod ast_op;
mod md_op;
mod patch_op;
mod tidy_op;
pub use output::{
TxChange, TxDocMutation, TxLintResult, TxOutput, TxReadResult, TxSearchMatch, TxSearchResult,
exit_code_from_tx_output,
};
pub(crate) use output::{
TxExecResult, build_error_output, build_full_tx_output, format_error_with_backup_hint,
};
#[cfg(test)]
pub(crate) use validate::validate_operation;
pub(crate) use execute::execute_and_collect;
#[cfg(test)]
pub(crate) use execute::TxStateFixture;
#[cfg(test)]
pub(crate) use execute::{path_err, read_and_probe, read_file_content, update_file_content};
pub use lifecycle::{CommitError, RestoreFailGuard, execute_plan_direct};
pub(crate) use lifecycle::{
commit_changes, rollback_strict, run_lifecycle, validate_and_prepare_plan,
};
#[cfg(any(feature = "cli", feature = "files"))]
pub(crate) use lifecycle::{restore_collateral_files, snapshot_non_tx_files};
#[cfg(feature = "cli")]
use clap::Args;
#[cfg(feature = "cli")]
#[derive(Debug, Args)]
#[command(after_help = "\
EXAMPLES:
patchloom tx plan.json
patchloom tx plan.json --apply
patchloom tx plan.yaml --check --json")]
pub struct TxArgs {
pub plan: String,
#[arg(long)]
pub plan_format: Option<String>,
#[arg(long)]
pub no_strict: bool,
#[arg(long)]
pub verify: Vec<String>,
#[command(flatten)]
pub write: crate::cli::global::WriteFlags,
}