tracer/
tracer.rs

1use anyhow::{bail, Result};
2use console::Style;
3use lurk_cli::{args::Args, style::StyleConfig, Tracer};
4use nix::unistd::{fork, ForkResult};
5use std::io;
6
7fn main() -> Result<()> {
8    let command = String::from("/usr/bin/ls");
9
10    let pid = match unsafe { fork() } {
11        Ok(ForkResult::Child) => {
12            return lurk_cli::run_tracee(&[command], &[], &None);
13        }
14        Ok(ForkResult::Parent { child }) => child,
15        Err(err) => bail!("fork() failed: {err}"),
16    };
17
18    let args = Args::default();
19    let output = io::stdout();
20    let style = StyleConfig {
21        pid: Style::new().cyan(),
22        syscall: Style::new().white().bold(),
23        success: Style::new().green(),
24        error: Style::new().red(),
25        result: Style::new().yellow(),
26        use_colors: true,
27    };
28
29    Tracer::new(pid, args, output, style)?.run_tracer()
30}