summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2023-08-22 13:00:19 +0200
committerCanop <cano.petrole@gmail.com>2023-08-22 13:00:19 +0200
commitb475e93b190281b041a5f33dccfc81378d87b415 (patch)
treed9e167de7906e43d8b33df850f43c6d0454167f5
parent19fe54925b3020e9636623b423870da7e272a938 (diff)
prevent dysk version mismatch
Fix #65
-rw-r--r--Cargo.lock76
-rw-r--r--Cargo.toml2
-rw-r--r--build.rs44
-rwxr-xr-xversion.sh2
4 files changed, 123 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 932f6cb..fd4ac16 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -289,6 +289,8 @@ dependencies = [
"clap_complete",
"clap_mangen",
"dysk-cli",
+ "serde",
+ "toml",
]
[[package]]
@@ -307,6 +309,12 @@ dependencies = [
]
[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
name = "errno"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -334,6 +342,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9544f10105d33957765016b8a9baea7e689bf1f0f2f32c2fa2f568770c38d2b3"
[[package]]
+name = "hashbrown"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+
+[[package]]
name = "heck"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -346,6 +360,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
[[package]]
+name = "indexmap"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
name = "is-terminal"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -656,6 +680,15 @@ dependencies = [
]
[[package]]
+name = "serde_spanned"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "signal-hook"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -790,6 +823,40 @@ dependencies = [
]
[[package]]
+name = "toml"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
name = "unicode-ident"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -959,6 +1026,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
+name = "winnow"
+version = "0.5.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "xterm-query"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 41c31c3..7cff7d8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,6 +23,8 @@ clap = { version = "4.3", features = ["derive", "cargo"] }
clap_complete = "4.3"
clap_mangen = "0.2.12"
dysk-cli = { version = "2.8.0", path = "cli" }
+serde = { version = "1.0", features = ["derive"] }
+toml = "0.7"
[profile.release]
strip = true
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(())
diff --git a/version.sh b/version.sh
index d0acb26..63206b9 100755
--- a/version.sh
+++ b/version.sh
@@ -1,4 +1,4 @@
-# extract the version from the Cargo.toml file
+# extract the version from the main Cargo.toml file
version=$(sed 's/^version = "\([^\"]*\)"/\1/;t;d' Cargo.toml | head -1)
echo "$version"