Skip to main content

ralph_workflow/app/
mod.rs

1//! Application entrypoint and pipeline orchestration.
2//!
3//! This module is the CLI layer operating **before the repository root is known**.
4//! It uses [`AppEffect`][effect::AppEffect] for side effects, which is distinct from
5//! [`Effect`][crate::reducer::effect::Effect] used after repo root discovery.
6//!
7//! # Two Effect Layers
8//!
9//! Ralph has two distinct effect types (see also [`crate`] documentation):
10//!
11//! | Layer | When | Filesystem Access |
12//! |-------|------|-------------------|
13//! | `AppEffect` (this module) | Before repo root known | `std::fs` directly |
14//! | `Effect` ([`crate::reducer`]) | After repo root known | Via [`Workspace`][crate::workspace::Workspace] |
15//!
16//! These layers must never mix: `AppEffect` handlers cannot use `Workspace`.
17
18pub mod config_init;
19pub mod context;
20pub mod detection;
21pub mod effect;
22pub mod effect_handler;
23pub mod effectful;
24pub mod event_loop;
25pub mod finalization;
26#[cfg(any(test, feature = "test-utils"))]
27pub mod mock_effect_handler;
28pub mod plumbing;
29pub(crate) mod rebase;
30pub mod resume;
31pub mod validation;
32
33mod runner;
34
35pub use runner::run;
36
37#[cfg(feature = "test-utils")]
38pub use runner::{
39    run_pipeline_with_effect_handler, run_with_config, run_with_config_and_handlers,
40    run_with_config_and_resolver, RunWithHandlersParams,
41};