pub struct Proc {
pub name: String,
pub command: OsString,
pub args: Vec<OsString>,
pub working_dir: Option<PathBuf>,
pub readiness_pattern: Option<String>,
pub watch: Vec<PathBuf>,
pub watch_rel: Vec<PathBuf>,
pub env: HashMap<OsString, OsString>,
pub env_clear: bool,
pub color: Option<AnsiColors>,
pub cleanup_cmd: Option<Vec<OsString>>,
pub cleanup_before_start: bool,
}Expand description
A single process configuration for prox
Fields§
§name: StringName of the process (used in logs and events)
command: OsStringCommand to run (e.g. “cargo”, “npm”, “python”, etc.)
args: Vec<OsString>Arguments to pass to the command
working_dir: Option<PathBuf>Working directory for the process (defaults to current directory)
readiness_pattern: Option<String>Optional pattern to look for in stdout/stderr to consider the process “ready”
watch: Vec<PathBuf>Paths to watch for changes to trigger a restart (relative to the config file/crate/workspace root)
watch_rel: Vec<PathBuf>Paths to watch for changes to trigger a restart (relative to working_dir)
env: HashMap<OsString, OsString>Environment variables to set for the process
env_clear: boolWhether to clear the environment before applying env
color: Option<AnsiColors>Override color for the process prefix (otherwise auto-assigned from Config)
cleanup_cmd: Option<Vec<OsString>>Command to run on shutdown of Prox, and optionally before start/restart of process
cleanup_before_start: boolWhether to run the cleanup_cmd before starting/restarting the process
Implementations§
Source§impl Proc
impl Proc
Sourcepub fn builder() -> ProcBuilder<((), (), (), (), (), (), (), (), (), (), (), ())>
pub fn builder() -> ProcBuilder<((), (), (), (), (), (), (), (), (), (), (), ())>
Create a builder for building Proc.
On the builder, call .name(...), .command(...), .args(...)(optional), .working_dir(...)(optional), .readiness_pattern(...)(optional), .watch(...)(optional), .watch_rel(...)(optional), .env(...)(optional), .env_clear(...)(optional), .color(...)(optional), .cleanup_cmd(...)(optional), .cleanup_before_start(...)(optional) to set the values of the fields.
Finally, call .build() to create the instance of Proc.
Examples found in repository?
6fn main() -> anyhow::Result<()> {
7 // Example: Simple process manager with multiple services
8 let mut manager = Prox::builder()
9 .config(
10 Config::builder()
11 .readiness_fallback_timeout(Duration::from_secs(15))
12 .build(),
13 )
14 .procs(
15 [
16 Proc::builder()
17 .name("api".into())
18 .command("cargo".into())
19 .args(vec!["run".into(), "--bin".into(), "api".into()])
20 .working_dir(PathBuf::from("./api"))
21 .readiness_pattern("Server listening".into())
22 .watch(vec![
23 PathBuf::from("./api/src"),
24 PathBuf::from("./shared/src"),
25 ])
26 .env(HashMap::from_iter([("LOG_LEVEL".into(), "debug".into())]))
27 .color(AnsiColors::BrightGreen)
28 .build(),
29 Proc::builder()
30 .name("database".into())
31 .command("docker".into())
32 .args(["run".into()].into())
33 .env(
34 [
35 ("POSTGRES_DB".into(), "myapp".into()),
36 ("POSTGRES_PASSWORD".into(), "password".into()),
37 ]
38 .into(),
39 )
40 .readiness_pattern("database system is ready to accept connections".into())
41 .build(),
42 Proc::builder()
43 .name("frontend".into())
44 .command("npm".into())
45 .args(vec!["run".into(), "dev".into()])
46 .working_dir(PathBuf::from("./frontend"))
47 .readiness_pattern("Local:".into())
48 .watch(vec![PathBuf::from("./frontend/src")])
49 .color(AnsiColors::BrightYellow)
50 .build(),
51 ]
52 .into(),
53 )
54 .build();
55
56 println!("Starting development environment...");
57
58 // Start all processes - this will block until Ctrl+C or a process exits
59 manager.start()?;
60
61 Ok(())
62}Trait Implementations§
Source§impl<'de> Deserialize<'de> for Proc
impl<'de> Deserialize<'de> for Proc
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Proc
impl RefUnwindSafe for Proc
impl Send for Proc
impl Sync for Proc
impl Unpin for Proc
impl UnwindSafe for Proc
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more