rlls 0.0.29

Cut a version, tag it, and publish a GitHub Release with raw git notes
use crate::ReleaseKind;
use anyhow::Result;

pub fn compute_next_tag(kind: &ReleaseKind) -> Result<String> {
    let root = std::env::current_dir()?;
    let cur = crate::project::read_current_version(&root)?;
    let base = crate::semver::base_of(&cur);
    let bump_kind = match kind {
        ReleaseKind::Major => crate::semver::BumpKind::Major,
        ReleaseKind::Minor => crate::semver::BumpKind::Minor,
        ReleaseKind::Patch => crate::semver::BumpKind::Patch,
    };
    let next = crate::semver::bump(&base, bump_kind)?;
    Ok(format!("v{}", next))
}

pub fn bump(
    kind: &ReleaseKind,
    _cfg: &crate::config::Config,
) -> Result<()> {
    let root = std::env::current_dir()?;
    let cur = crate::project::read_current_version(&root)?;
    let base = crate::semver::base_of(&cur);
    let bump_kind = match kind {
        ReleaseKind::Major => crate::semver::BumpKind::Major,
        ReleaseKind::Minor => crate::semver::BumpKind::Minor,
        ReleaseKind::Patch => crate::semver::BumpKind::Patch,
    };
    let next = crate::semver::bump(&base, bump_kind)?;
    crate::project::write_versions(&root, &next)?;
    Ok(())
}