diff options
Diffstat (limited to 'src/git.rs')
-rw-r--r-- | src/git.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/git.rs b/src/git.rs new file mode 100644 index 0000000..76f6da1 --- /dev/null +++ b/src/git.rs @@ -0,0 +1,25 @@ +use crate::errors::BumperError; +use log::{debug, info}; +use std::process::Command; + +pub fn tag(version: &str) -> Result<(), BumperError> { + let tag_name = format!("v{}", version); + info!("Create git tag {}", tag_name); + let output = Command::new("git") + .arg("tag") + .arg("-am") + .arg(format!("release version {}", version)) + .arg(format!("v{}", version)) + .output(); + let output = match output { + Ok(output) => output, + Err(err) => { + return Err(BumperError::GitInvoke(err)); + } + }; + debug!("git exit code was {:?}", output.status.code()); + if !output.status.success() { + return Err(BumperError::git_tag(&output.stderr)); + } + Ok(()) +} |