From a51acc1bf744af5364638b16cd0de3f6493851cd Mon Sep 17 00:00:00 2001 From: ghassmo Date: Sun, 25 Jul 2021 20:28:18 +0300 Subject: [PATCH] create darkfi dir and toml files when load_default configuration --- src/cli/cli_config.rs | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/cli/cli_config.rs b/src/cli/cli_config.rs index d792c6e0c..ab70efbbc 100644 --- a/src/cli/cli_config.rs +++ b/src/cli/cli_config.rs @@ -3,7 +3,12 @@ use crate::Result; use serde::{Deserialize, Serialize}; use std::str; -use std::fs; +use std::{ + fs, + fs::{create_dir_all, File}, + io::Write, +}; + use std::path::PathBuf; #[derive(Serialize, Deserialize, Debug)] @@ -26,7 +31,14 @@ impl DrkConfig { pub fn load_default(path: PathBuf) -> Result { let toml = Self::default(); let config_file = toml::to_string(&toml)?; - fs::write(&path, &config_file)?; + + if let Some(outdir) = path.parent() { + create_dir_all(outdir)?; + } + + let mut file = File::create(path.clone())?; + file.write_all(&config_file.into_bytes())?; + let config = Self::load(path)?; Ok(config) } @@ -77,7 +89,14 @@ impl DarkfidConfig { pub fn load_default(path: PathBuf) -> Result { let toml = Self::default(); let config_file = toml::to_string(&toml)?; - fs::write(&path, &config_file)?; + + if let Some(outdir) = path.parent() { + create_dir_all(outdir)?; + } + + let mut file = File::create(path.clone())?; + file.write_all(&config_file.into_bytes())?; + let config = Self::load(path)?; Ok(config) } @@ -140,7 +159,14 @@ impl GatewaydConfig { pub fn load_default(path: PathBuf) -> Result { let toml = Self::default(); let config_file = toml::to_string(&toml)?; - fs::write(&path, &config_file)?; + + if let Some(outdir) = path.parent() { + create_dir_all(outdir)?; + } + + let mut file = File::create(path.clone())?; + file.write_all(&config_file.into_bytes())?; + let config = Self::load(path)?; Ok(config) } @@ -190,7 +216,14 @@ impl CashierdConfig { pub fn load_default(path: PathBuf) -> Result { let toml = Self::default(); let config_file = toml::to_string(&toml)?; - fs::write(&path, &config_file)?; + + if let Some(outdir) = path.parent() { + create_dir_all(outdir)?; + } + + let mut file = File::create(path.clone())?; + file.write_all(&config_file.into_bytes())?; + let config = Self::load(path)?; Ok(config) }