use args::Args;
use clap::Parser;
use colored::Colorize;
use crate::constants::{ARTICLES_DIR, IMAGES_DIR};
mod args;
#[derive(Debug)]
pub struct Properties {
pub src_articles_dir: String,
pub dest_articles_dir: String,
pub src_images_dir: String,
pub dest_images_dir: String,
pub include: Option<Vec<String>>,
pub exclude: Option<Vec<String>>,
pub config_file: Option<String>,
}
pub fn get_properties() -> Properties {
let args = Args::parse();
print_configuration_details(&args);
Properties {
config_file: args.config_file,
src_articles_dir: format!("{}{}", args.src_dir, ARTICLES_DIR),
dest_articles_dir: args.dest_dir.clone(),
src_images_dir: format!("{}{}", args.src_dir, IMAGES_DIR),
dest_images_dir: args.dest_images_dir,
include: Some(args.include),
exclude: Some(args.exclude),
}
}
fn print_configuration_details(args: &Args) {
println!(
"{} {} {}",
"[1/3]".bright_black().bold(),
"📝",
"Configuration Details:".bold().underline()
);
print_config_file(&args.config_file);
print_directories(&args.src_dir, &args.dest_dir);
print_include_exclude_files(&args.include, &args.exclude);
}
fn print_config_file(config_file: &Option<String>) {
match config_file {
Some(config) => println!("- {} {}", "Configuration File:".green().bold(), config),
None => println!(
"- {} {}",
"Configuration File:".green().bold(),
"None".yellow().bold()
),
}
}
fn print_directories(src_dir: &str, dest_dir: &str) {
let src_articles_dir = format!("{}{}", src_dir, ARTICLES_DIR);
let src_images_dir = format!("{}{}", src_dir, IMAGES_DIR);
println!(
"- {} {:?} {} {:?}",
"Articles:".green().bold(),
src_articles_dir,
"=>".yellow().bold(),
dest_dir
);
println!(
"- {} {:?} {} {:?}",
"Images:".green().bold(),
src_images_dir,
"=>".yellow().bold(),
dest_dir
);
}
fn print_include_exclude_files(include: &Vec<String>, exclude: &Vec<String>) {
println!("- {}", "Include Files:".green().bold());
if include.is_empty() {
println!("\t- {}", "None");
} else {
for file in include {
println!("\t- {}", file);
}
}
println!("- {}", "Exclude Files:".green().bold());
if exclude.is_empty() {
println!("\t- {}", "None");
} else {
for file in exclude {
println!("\t- {}", file);
}
}
}