natter/src/command/init/runner.rs

24 lines
757 B
Rust
Raw Normal View History

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(())
}