rust-jav 0.3.0

A tool to process jav files
use clap::Parser;
use env_logger;
use log::{info, LevelFilter};
use std::path::PathBuf;

mod config;
mod file_utils;

use config::{interactive_config, set_config, Cli, CliConfig, LogLevel};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let cli_args = Cli::parse();

    let log_level: LogLevel = cli_args.log_level.unwrap_or(LogLevel::Info);
    env_logger::Builder::new()
        .filter(None, LevelFilter::from(log_level))
        .init();

    info!("Start to organize files...");

    let dir = cli_args.dir.clone();
    let cli = interactive_config(cli_args).await?;

    let config = CliConfig {
        ..cli.into()
    };

    let output_dir = config.output_dir.clone();
    let should_create_directories = config.should_create_directories();
    set_config(config)?;

    info!("should_create_directories: {}", should_create_directories);

    if should_create_directories {
        info!("Creating category directories...");
        let path = output_dir.as_path();
        file_utils::create_dir::create_category_directories(path)?;
    }

    file_utils::traverse_directory(true, dir).await?;
    Ok(())
}