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
commit c8533c86f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -184,10 +184,24 @@ impl Settings {
.ok_or_else(|| anyhow!("Could not determine config file name"))?
};
let mut document = fs::read_to_string(filename.clone())
.context("Could not read existing configuration file")?
.parse::<Document>()
.context("Could not parse existing configuration file")?;
let exists = filename.exists();
// try to create the parent directory if the file does not exist
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
match key {