summaryrefslogtreecommitdiff
path: root/src/git.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs25
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(())
+}