Merge pull request #273 from taskchampion/issue269

Create a new doc if necessary in `ta config set`
This commit is contained in:
Dustin J. Mitchell
2021-06-16 21:29:46 -04:00
committed by GitHub

View File

@@ -184,10 +184,24 @@ impl Settings {
.ok_or_else(|| anyhow!("Could not determine config file name"))? .ok_or_else(|| anyhow!("Could not determine config file name"))?
}; };
let mut document = fs::read_to_string(filename.clone()) let exists = filename.exists();
.context("Could not read existing configuration file")?
.parse::<Document>() // try to create the parent directory if the file does not exist
.context("Could not parse existing configuration file")?; if !exists {
if let Some(dir) = filename.parent() {
fs::create_dir_all(dir)?;
}
}
// start with the existing document, or a blank document
let mut document = if exists {
fs::read_to_string(filename.clone())
.context("Could not read existing configuration file")?
.parse::<Document>()
.context("Could not parse existing configuration file")?
} else {
Document::new()
};
// set the value as the correct type // set the value as the correct type
match key { match key {