diff --git a/cli/src/subcommand.rs b/cli/src/subcommand.rs index 99d4d80..823b15f 100644 --- a/cli/src/subcommand.rs +++ b/cli/src/subcommand.rs @@ -171,9 +171,9 @@ impl Callback for FormatContext { let mut extension = doc.filepath.extension().unwrap_or_default().to_os_string(); extension.push(".formatted"); let copied = doc.filepath.with_extension(extension); - doc.save(Some(&copied)) + doc.save_to(copied) } else { - doc.save(None) + doc.save() } } } @@ -234,9 +234,9 @@ impl RemoveContext { let mut extension = doc.filepath.extension().unwrap_or_default().to_os_string(); extension.push(".removed"); let copied = doc.filepath.with_extension(extension); - doc.save(Some(&copied)) + doc.save_to(copied) } else { - doc.save(None) + doc.save() } } } diff --git a/fmt/src/document/mod.rs b/fmt/src/document/mod.rs index 93d0a79..de2d817 100644 --- a/fmt/src/document/mod.rs +++ b/fmt/src/document/mod.rs @@ -17,6 +17,7 @@ use std::collections::HashMap; use std::fs; use std::fs::File; use std::io::BufRead; +use std::path::Path; use std::path::PathBuf; use exn::ErrorExt; @@ -164,8 +165,14 @@ impl Document { } } - pub fn save(&mut self, filepath: Option<&PathBuf>) -> Result<(), Error> { - let filepath = filepath.unwrap_or(&self.filepath); + pub fn save(&mut self) -> Result<(), Error> { + let filepath = self.filepath.as_path(); + fs::write(filepath, self.parser.file_content.content()) + .or_raise(|| Error::new(format!("cannot save document {}", filepath.display()))) + } + + pub fn save_to(&mut self, filepath: impl AsRef) -> Result<(), Error> { + let filepath = filepath.as_ref(); fs::write(filepath, self.parser.file_content.content()) .or_raise(|| Error::new(format!("cannot save document {}", filepath.display()))) }