From d0ef70e574ec96aba15cb41eb749d542a38012cc Mon Sep 17 00:00:00 2001 From: josh rotenberg Date: Mon, 26 Apr 2021 08:08:24 -0700 Subject: [PATCH 1/2] use semver to validate version --- examples/nop-preprocessor.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/nop-preprocessor.rs b/examples/nop-preprocessor.rs index 90840067..38764207 100644 --- a/examples/nop-preprocessor.rs +++ b/examples/nop-preprocessor.rs @@ -3,6 +3,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use mdbook::book::Book; use mdbook::errors::Error; use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext}; +use semver::{Version, VersionReq}; use std::io; use std::process; @@ -33,9 +34,10 @@ fn main() { fn handle_preprocessing(pre: &dyn Preprocessor) -> Result<(), Error> { let (ctx, book) = CmdPreprocessor::parse_input(io::stdin())?; - if ctx.mdbook_version != mdbook::MDBOOK_VERSION { - // We should probably use the `semver` crate to check compatibility - // here... + let book_version = Version::parse(&ctx.mdbook_version)?; + let version_req = VersionReq::parse(mdbook::MDBOOK_VERSION)?; + + if version_req.matches(&book_version) != true { eprintln!( "Warning: The {} plugin was built against version {} of mdbook, \ but we're being called from version {}", From 5b7abf47146f12ea8ac4b4012a6908ee1bf429f4 Mon Sep 17 00:00:00 2001 From: josh rotenberg Date: Mon, 26 Apr 2021 08:08:53 -0700 Subject: [PATCH 2/2] add semver v0.11.0 for example --- Cargo.lock | 21 +++++++++++++++++++++ Cargo.toml | 1 + 2 files changed, 22 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index d23a2097..e8b510fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "aho-corasick" version = "0.7.10" @@ -743,6 +745,7 @@ dependencies = [ "pulldown-cmark", "regex", "select", + "semver", "serde", "serde_derive", "serde_json", @@ -1204,6 +1207,24 @@ dependencies = [ "markup5ever_rcdom", ] +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + [[package]] name = "serde" version = "1.0.106" diff --git a/Cargo.toml b/Cargo.toml index 6f5b364c..1824a889 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,7 @@ ammonia = { version = "3", optional = true } [dev-dependencies] select = "0.5" +semver = "0.11.0" pretty_assertions = "0.6" walkdir = "2.0"