1use std::{env, process};
2
3use xaction::{cargo_toml, cmd, git, section, Result};
4
5fn main() {
6 if let Err(err) = try_main() {
7 eprintln!("{}", err);
8 process::exit(1);
9 }
10}
11
12fn try_main() -> Result<()> {
13 let cargo_toml = cargo_toml()?;
14
15 {
16 let _s = section("BUILD");
17 cmd!("cargo test --workspace --no-run").run()?;
18 }
19
20 {
21 let _s = section("TEST");
22 cmd!("cargo test --workspace --no-run").run()?;
23 }
24
25 let version = cargo_toml.version()?;
26 let tag = format!("v{}", version);
27 let dry_run = env::var("CI").is_err()
28 || git::tag_list()?.contains(&tag)
29 || git::current_branch()? != "master";
30 xaction::set_dry_run(dry_run);
31
32 {
33 let _s = section("PUBLISH");
34 cargo_toml.publish()?;
35 git::tag(&tag)?;
36 git::push_tags()?;
37 }
38 Ok(())
39}