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}