use clap::Parser;
use daemonbase::error::ExitError;
use daemonbase::logging::Logger;
use daemonbase::process::Process;
use daemonbase::{logging, process};
use log::warn;
#[derive(Parser)]
struct Args {
#[command(flatten)]
log: logging::Args,
#[arg(short, long)]
detach: bool,
#[command(flatten)]
process: process::Args,
}
fn _main() -> Result<(), ExitError> {
Logger::init_logging()?;
warn!("Logging initialized.");
let args = Args::parse();
let log = Logger::from_config(&args.log.to_config())?;
let mut process = Process::from_config(args.process.into_config());
log.switch_logging(args.detach)?;
process.setup_daemon(args.detach)?;
process.drop_privileges()?;
warn!("Up and running.");
loop {
std::thread::sleep(std::time::Duration::from_secs(60));
}
}
fn main() {
let _ = _main();
}