xaction 0.2.4

action-less automation for GitHub actions
Documentation
use std::{env, process};

use xaction::{cargo_toml, cmd, git, section, Result};

fn main() {
    if let Err(err) = try_main() {
        eprintln!("{}", err);
        process::exit(1);
    }
}

fn try_main() -> Result<()> {
    let cargo_toml = cargo_toml()?;

    {
        let _s = section("BUILD");
        cmd!("cargo test --workspace --no-run").run()?;
    }

    {
        let _s = section("TEST");
        cmd!("cargo test --workspace --no-run").run()?;
    }

    let version = cargo_toml.version()?;
    let tag = format!("v{}", version);
    let dry_run = env::var("CI").is_err()
        || git::tag_list()?.contains(&tag)
        || git::current_branch()? != "master";
    xaction::set_dry_run(dry_run);

    {
        let _s = section("PUBLISH");
        cargo_toml.publish()?;
        git::tag(&tag)?;
        git::push_tags()?;
    }
    Ok(())
}