summaryrefslogtreecommitdiff
path: root/src/git.rs
blob: 38e99d9005798aa9bb67f1343f52cdddb2950d96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::errors::BumperError;
use log::{debug, info};
use std::process::Command;

pub fn tag(version: &str) -> Result<(), BumperError> {
    debug!("git tag in {}", std::env::current_dir().unwrap().display());
    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(())
}