blob: 7ccca608d711afd01987105db910aa2d3098d186 [file] [log] [blame]
David Tolnayb2188a62019-05-09 11:42:44 -07001use crate::error::Result;
David Tolnay822790e2019-02-15 21:12:30 -08002use semver::Version;
David Tolnay10227122019-02-15 20:53:45 -08003use serde::Deserialize;
4
5use std::fs;
6use std::path::Path;
7
David Tolnayb2188a62019-05-09 11:42:44 -07008pub fn get() -> Result<Version> {
David Tolnay10227122019-02-15 20:53:45 -08009 let codegen_root = Path::new(env!("CARGO_MANIFEST_DIR"));
10 let syn_cargo_toml = codegen_root.join("../Cargo.toml");
David Tolnayb2188a62019-05-09 11:42:44 -070011 let manifest = fs::read_to_string(syn_cargo_toml)?;
12 let parsed: Manifest = toml::from_str(&manifest)?;
13 Ok(parsed.package.version)
David Tolnay10227122019-02-15 20:53:45 -080014}
15
16#[derive(Debug, Deserialize)]
17struct Manifest {
18 package: Package,
19}
20
21#[derive(Debug, Deserialize)]
22struct Package {
David Tolnay822790e2019-02-15 21:12:30 -080023 version: Version,
David Tolnay10227122019-02-15 20:53:45 -080024}