use crate::cli::parameters::InitArgs; use crate::config::Config; use crate::error::CustomError; pub(crate) async fn init_writer_folder(args: InitArgs) -> Result<(), CustomError> { if args.path.exists() && !args.path.is_dir() { return Err("The supplied path exists but is not a directory. Aborting.".into()); } if !args.path.exists() { tokio::fs::create_dir_all(&args.path).await?; } let mut existing_entries = tokio::fs::read_dir(&args.path).await?; let first_entry = existing_entries.next_entry().await?; if let Some(_) = first_entry { return Err("The directory is not empty. Aborting.".into()); } let new_config = Config::new(args.path)?; new_config.write_to_disk().await?; Ok(()) }