Skip to main content

tagit_release/
lib.rs

1use std::process::Command;
2
3use tagit_core::{Okie, default_sign, sign_args};
4
5pub fn release(
6    tagit_package: &'static str,
7    tagit_version: &'static str,
8    dry_run: bool,
9    no_retag: bool,
10    total_order: bool,
11    sign: Option<bool>,
12    message: Option<&str>,
13) -> anyhow::Result<()> {
14    let bumped = tagit_workspace_changelog::bump_changelog(dry_run)?;
15    if !dry_run {
16        if !bumped.is_empty() {
17            Command::new("git")
18                .arg("add")
19                .arg("--")
20                .args(bumped)
21                .status()?
22                .okie()?;
23        }
24        let mut cmd = Command::new("git");
25        cmd.arg("commit");
26        if let Some(message) = message {
27            cmd.args(["--message", message]);
28        }
29        cmd.args(sign_args(sign.unwrap_or_else(default_sign)));
30        cmd.status()?.okie()?;
31        Command::new("git").arg("push").status()?.okie()?;
32    }
33    tagit_tag::tag(
34        tagit_package,
35        tagit_version,
36        dry_run,
37        no_retag,
38        total_order,
39        sign,
40    )?;
41    Ok(())
42}