use std::time::Instant;
use colored::Colorize;
use indicatif::HumanDuration;
use utils::{figlet::print_figlet, property::get_properties};
use zenn2press::{image::copy_images, markdown::copy_markdown_files};
mod constants;
mod utils;
#[tokio::main]
async fn main() {
let started = Instant::now();
print_figlet();
let properties = get_properties();
let include: Option<Vec<&str>> = properties
.include
.as_ref()
.map(|v| v.iter().map(|s| s.as_str()).collect());
let exclude: Option<Vec<&str>> = properties
.exclude
.as_ref()
.map(|v| v.iter().map(|s| s.as_str()).collect());
println!(
"{} {} {}",
"[2/3]".bright_black().bold(),
"📚",
"Copy markdown files:".bold().underline()
);
copy_markdown_files(
properties.src_articles_dir.as_str(),
properties.dest_articles_dir.as_str(),
properties.config_file.as_deref(),
include.clone(),
exclude.clone(),
)
.unwrap_or_else(|e| {
eprintln!("Error copying markdown files: {}", e);
});
println!(
"{} {} {}",
"[3/3]".bright_black().bold(),
"🖼️",
"Copy image files:".bold().underline()
);
match copy_images(
properties.src_images_dir.as_str(),
properties.dest_images_dir.as_str(),
include.clone(),
exclude.clone(),
)
.await
{
Ok(_) => println!("\n\n{} Done in {}", "✨", HumanDuration(started.elapsed())),
Err(e) => eprintln!("Error copying images: {}", e),
}
}