Skip to content
Snippets Groups Projects
Commit 71cc6d24 authored by Moul's avatar Moul
Browse files

build:(xtask): #1426: Allow a wider range of Node.js versions

Introduce https://crates.io/crates/version-compare
Allow Node.js version between 10.18.0 and 11.0.0
https://nodejs.org/en/download/releases/
parent 2068630f
No related branches found
No related tags found
No related merge requests found
......@@ -3407,6 +3407,12 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "version-compare"
version = "0.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
[[package]]
name = "version_check"
version = "0.9.3"
......@@ -3563,6 +3569,7 @@ dependencies = [
"anyhow",
"run_script",
"structopt",
"version-compare",
"version_check",
]
......
......@@ -17,3 +17,4 @@ anyhow = "1.0.32"
run_script = "0.6.3"
structopt = "0.3.18"
version_check = "0.9.2"
version-compare = "0.0.11"
......@@ -16,9 +16,12 @@
use anyhow::Result;
use std::process::{Command, Output};
use structopt::StructOpt;
use version_compare::Version;
const MIN_RUST_VERSION: &str = "1.51.0";
const NODE_VERSION: &str = "10.22.1";
const MIN_NODE_VERSION: &str = "10.18.0";
const REC_NODE_VERSION: &str = "10.22.1";
const MAX_NODE_VERSION: &str = "11.0.0";
#[derive(StructOpt)]
struct DuniterXTask {
......@@ -54,18 +57,21 @@ fn main() -> Result<()> {
if !args.skip_npm {
println!("Check node version …");
if exec_and_get_stdout(Command::new("node").arg("-v"))
.unwrap_or_default()
.trim_end()
!= format!("v{}", NODE_VERSION)
{
let node_vers = exec_and_get_stdout(Command::new("node").arg("-v")).unwrap_or_default();
let node_vers = node_vers.trim_end();
let node_vers_cut = Version::from(&node_vers[1..]).unwrap();
let min_node_vers = Version::from(MIN_NODE_VERSION).unwrap();
let max_node_vers = Version::from(MAX_NODE_VERSION).unwrap();
if node_vers_cut < min_node_vers || max_node_vers <= node_vers_cut {
eprintln!(
"Duniter requires node v{} exactly. Please install node v{} (you can use nvm).",
NODE_VERSION, NODE_VERSION
"Duniter requires node between v{} and v{} excluded.\n\
Please install a correct node version (you can use nvm).\n\
Current version {}. Recommended version v{}",
MIN_NODE_VERSION, MAX_NODE_VERSION, node_vers, REC_NODE_VERSION
);
std::process::exit(1);
} else {
println!("Node v{} already installed ✔", NODE_VERSION);
println!("Node {} installed: Is a compatible version ✔", node_vers);
}
}
match args.command {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment