summaryrefslogtreecommitdiffstats
path: root/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/build.rs b/build.rs
index d5278e1..bc12976 100644
--- a/build.rs
+++ b/build.rs
@@ -7,9 +7,11 @@ use {
dysk_cli::args::Args,
clap::CommandFactory,
clap_complete::{Generator, Shell},
+ serde::Deserialize,
std::{
env,
ffi::OsStr,
+ fs,
path::PathBuf,
},
};
@@ -49,7 +51,49 @@ fn build_man_page() -> std::io::Result<()> {
Ok(())
}
+/// Check that all dysk versions are the same
+///
+/// See https://github.com/Canop/dysk/issues/65
+fn check_version_consistency() -> std::io::Result<()> {
+ #[derive(Deserialize)]
+ struct Package {
+ version: String,
+ }
+ #[derive(Deserialize)]
+ struct DependencyRef {
+ version: String,
+ }
+ #[derive(Deserialize)]
+ struct Dependencies {
+ #[serde(alias = "dysk-cli")]
+ dysk_cli: DependencyRef,
+ }
+ #[derive(Deserialize)]
+ struct MainCargo {
+ package: Package,
+ dependencies: Dependencies,
+ #[serde(alias = "build-dependencies")]
+ build_dependencies: Dependencies,
+ }
+ #[derive(Deserialize)]
+ struct CliCargo {
+ package: Package,
+ }
+ let version = env::var("CARGO_PKG_VERSION").expect("cargo pkg version not available");
+ let s = fs::read_to_string("Cargo.toml").unwrap();
+ let main_cargo: MainCargo = toml::from_str(&s).unwrap();
+ let s = fs::read_to_string("cli/Cargo.toml").unwrap();
+ let cli_cargo: CliCargo = toml::from_str(&s).unwrap();
+ println!("VERSION MISMATCH - All dysk and dysk-cli versions must be the same");
+ assert_eq!(&version, &main_cargo.package.version);
+ assert_eq!(&version, &main_cargo.dependencies.dysk_cli.version);
+ assert_eq!(&version, &main_cargo.build_dependencies.dysk_cli.version);
+ assert_eq!(&version, &cli_cargo.package.version);
+ Ok(())
+}
+
fn main() -> std::io::Result<()> {
+ check_version_consistency()?;
build_completion_scripts();
build_man_page()?;
Ok(())