cargo-gitv 0.1.2

Reasonable and opinionated version management based on Cargo and Git metadata.
Documentation
use anyhow::Result;
use semver::{Version, VersionReq};

use crate::build_context::BuildContext;
use anyhow::anyhow;

pub fn verify(build_context: &BuildContext) -> Result<()> {
    let workspace_version = build_context.dev_version()?;
    let base_version = Version::new(
        workspace_version.major,
        workspace_version.minor,
        workspace_version.patch,
    );
    let req = VersionReq::parse(&build_context.cargo_version.to_string()).unwrap();

    if req.matches(&base_version) {
        Ok(())
    } else {
        Err(anyhow!(
            "Cargo version ${} does not match computed version {}!",
            build_context.cargo_version,
            build_context.dev_version()?
        ))
    }
}