2025-02-17 17:41:21 -07:00
|
|
|
mod common;
|
2025-02-15 22:11:08 -07:00
|
|
|
mod config;
|
|
|
|
|
|
|
|
use clap::Parser;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
|
|
#[derive(Parser)]
|
|
|
|
#[command(name = "refractor")]
|
|
|
|
#[command(version = "0.1.0")]
|
|
|
|
#[command(about = "An automated push/pull/clone utility for mirroring Git repositories")]
|
|
|
|
#[command(long_about = None)]
|
|
|
|
struct Args {
|
|
|
|
#[arg(short, long, help = "Specify a config file", default_value = "/etc/refractr/config.toml")]
|
2025-02-17 17:41:21 -07:00
|
|
|
config: Vec<PathBuf>,
|
2025-02-15 22:11:08 -07:00
|
|
|
|
|
|
|
#[arg(short, long, help = "Specify the level of verbosity", action = clap::ArgAction::Count)]
|
|
|
|
verbose: u8,
|
|
|
|
|
|
|
|
#[arg(short = 'e', long, help = "Output a full, commented config file and exit")]
|
|
|
|
create: bool,
|
|
|
|
}
|
2025-02-11 23:32:28 -07:00
|
|
|
|
|
|
|
fn main() {
|
2025-02-15 22:11:08 -07:00
|
|
|
let args = Args::parse();
|
2025-03-02 11:47:29 -07:00
|
|
|
let refractr = common::Refractr {
|
|
|
|
verbose: args.verbose
|
|
|
|
};
|
|
|
|
if refractr.verbose >= 1 {
|
|
|
|
common::verbose(refractr.verbose, 1, format!("Level {} verbosity enabled", refractr.verbose.to_string()));
|
2025-02-17 17:41:21 -07:00
|
|
|
}
|
|
|
|
|
2025-03-02 11:47:29 -07:00
|
|
|
common::verbose(refractr.verbose, 2, format!("Checking for create flag"));
|
2025-02-17 17:41:21 -07:00
|
|
|
if args.create {
|
2025-03-02 11:47:29 -07:00
|
|
|
common::verbose(refractr.verbose, 2, format!("Printing sample config"));
|
2025-02-17 17:41:21 -07:00
|
|
|
let example = include_str!("example/config.toml");
|
|
|
|
println!("{}", example);
|
|
|
|
} else {
|
2025-03-02 11:47:29 -07:00
|
|
|
let cfgs = config::read_config(args.config, &refractr);
|
|
|
|
if refractr.verbose >= 2 {
|
|
|
|
for i in cfgs {
|
|
|
|
common::verbose(refractr.verbose, 2, format!("{}", i));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if refractr.verbose >= 1 {
|
|
|
|
common::verbose(refractr.verbose, 1, format!("Config file(s) read successfully"));
|
|
|
|
}
|
2025-02-17 17:41:21 -07:00
|
|
|
}
|
2025-02-11 23:32:28 -07:00
|
|
|
}
|