diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-12-28 18:16:37 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-12-28 18:16:37 +0100 |
commit | d943912dbc62cc314d2d739f08be501ba64c7dcd (patch) | |
tree | 2fbe80dc48700a57c07f8aa25e25a6c43edce2e3 /src/main.rs | |
parent | 7d442d4d555f5b79186a9f1013707f0f4139a535 (diff) |
oneshot init
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index e7a11a9..8bd9cf0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,56 @@ +use std::fs; +use std::io::Write; +use std::process::Command; +use std::thread; +use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor}; + +fn start() -> anyhow::Result<()> { + let mut stdout = StandardStream::stdout(ColorChoice::Always); + + stdout.set_color(ColorSpec::new().set_fg(Some(Color::Yellow)))?; + writeln!(&mut stdout, "Starting rustkrazy")?; + + for service in fs::read_dir("/bin")? { + let service = service?; + let service_name = service + .file_name() + .into_string() + .expect("invalid unicode in file name"); + + match Command::new(service.path()).spawn() { + Ok(_) => { + stdout.set_color(ColorSpec::new().set_fg(Some(Color::Green)))?; + writeln!(&mut stdout, "[ OK ] Starting {}", service_name)?; + } + Err(e) => { + stdout.set_color(ColorSpec::new().set_fg(Some(Color::Red)))?; + writeln!(&mut stdout, "[ ERROR ] Starting {}: {}", service_name, e)?; + } + } + } + + Ok(()) +} + fn main() { - println!("Hello, world!"); + match start() { + Ok(_) => {} + Err(e) => { + let mut stdout = StandardStream::stdout(ColorChoice::Always); + + match stdout.set_color(ColorSpec::new().set_fg(Some(Color::Red))) { + Ok(_) => match writeln!(&mut stdout, "[ ERROR ] {}", e) { + Ok(_) => {} + Err(_) => println!("[ ERROR ] {}", e), + }, + Err(_) => { + println!("[ ERROR ] {}", e); + } + } + } + } + + loop { + thread::yield_now(); + } } |