diesel_codegen 0.16.1

Custom derive and procedural macros for Diesel
Documentation
use std::process::Command;

#[derive(Deserialize)]
struct Metadata {
    packages: Vec<Package>,
}

#[derive(Deserialize, Debug)]
struct Package {
    name: String,
    version: String,
}

#[allow(warnings)]
pub fn check_version() -> Result<(), ()> {
    let contents = String::from_utf8(
        Command::new("cargo")
            .arg("metadata")
            .output()
            .map_err(|_| ())?
            .stdout,
    ).map_err(|_| ())?;

    let data: Metadata = ::serde_json::from_str(&contents).map_err(|_| ())?;

    let diesel = data.packages
        .into_iter()
        .filter(|p| p.name == "diesel");

    for d in diesel {
        if d.version.starts_with("1.") || d.version.starts_with("0.99") {
            panic!(
                "diesel_codegen was deprecated and removed with\
                 version 0.99. You are trying to use the old codegen with \
                 diesel {}. See the Changelog \
                 (https://github.com/diesel-rs/diesel/blob/master/CHANGELOG.md#changed-6)\
                 for details.",
                d.version
            );
        }
    }
    Ok(())
}