diff options
Diffstat (limited to 'xtask/src/release')
-rw-r--r-- | xtask/src/release/bump.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/xtask/src/release/bump.rs b/xtask/src/release/bump.rs index 617cfd6..7a817e7 100644 --- a/xtask/src/release/bump.rs +++ b/xtask/src/release/bump.rs @@ -1,7 +1,7 @@ use std::{ fmt::Display, fs::File, - io::{Read, Write}, + io::{BufRead, BufReader, BufWriter, Read, Write}, path::Path, process::Command, str::FromStr, @@ -83,9 +83,10 @@ impl Bump { path.display() ); - let file = File::open(path)?; + let reader = File::options().read(true).open(path)?; + let writer = File::options().write(true).open(path)?; - self.bump(&file, &file, mutator)?; + self.bump(reader, writer, mutator)?; let git_added = Command::new("git").arg("add").arg(path).status()?; @@ -94,18 +95,22 @@ impl Bump { Ok(()) } - fn bump<R, W, F>(&self, mut reader: R, mut writer: W, mutator: F) -> Result<()> + fn bump<R, W, F>(&self, reader: R, writer: W, mutator: F) -> Result<()> where R: Read, W: Write, F: Fn(String, &Self) -> Result<String>, { + let mut reader = BufReader::new(reader); + let mut writer = BufWriter::new(writer); let mut buf = String::new(); + reader.read_to_string(&mut buf)?; let buf = mutator(buf, self)?; - writer.write_all(buf.as_bytes()).map_err(Into::into) + writer.write_all(buf.as_bytes())?; + writer.flush().map_err(Into::into) } } |