From 857c1650efdb51650458f9ec1119adaa49b34371 Mon Sep 17 00:00:00 2001 From: Muhammad Mominul Huque Date: Thu, 1 Nov 2018 01:50:43 +0600 Subject: Various changes Pin to a specific toolchain version Format checking functionality Add a test to check the code formatting. Remove macro_use attribute --- crates/tools/src/lib.rs | 29 +++++++++++++++++++++++++++++ crates/tools/src/main.rs | 30 +++--------------------------- 2 files changed, 32 insertions(+), 27 deletions(-) (limited to 'crates/tools/src') diff --git a/crates/tools/src/lib.rs b/crates/tools/src/lib.rs index 91c35b9e1..29c46c7c4 100644 --- a/crates/tools/src/lib.rs +++ b/crates/tools/src/lib.rs @@ -4,9 +4,11 @@ extern crate teraron; use std::{ path::{Path, PathBuf}, + process::Command, }; use itertools::Itertools; +use failure::bail; pub use teraron::{Mode, Verify, Overwrite}; @@ -15,6 +17,7 @@ pub type Result = ::std::result::Result; pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron"; pub const SYNTAX_KINDS: &str = "crates/ra_syntax/src/syntax_kinds/generated.rs.tera"; pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs.tera"; +const TOOLCHAIN: &str = "beta-2018-10-30"; #[derive(Debug)] pub struct Test { @@ -80,3 +83,29 @@ pub fn project_root() -> PathBuf { .unwrap() .to_path_buf() } + +pub fn run(cmdline: &str, dir: &str) -> Result<()> { + eprintln!("\nwill run: {}", cmdline); + let project_dir = project_root().join(dir); + let mut args = cmdline.split_whitespace(); + let exec = args.next().unwrap(); + let status = Command::new(exec) + .args(args) + .current_dir(project_dir) + .status()?; + if !status.success() { + bail!("`{}` exited with {}", cmdline, status); + } + Ok(()) +} + +pub fn run_rustfmt(mode: Mode) -> Result<()> { + run(&format!("rustup install {}", TOOLCHAIN), ".")?; + run(&format!("rustup component add rustfmt-preview --toolchain {}", TOOLCHAIN), ".")?; + if mode == Verify { + run(&format!("rustup run {} -- cargo fmt -- --check", TOOLCHAIN), ".")?; + } else { + run(&format!("rustup run {} -- cargo fmt", TOOLCHAIN), ".")?; + } + Ok(()) +} diff --git a/crates/tools/src/main.rs b/crates/tools/src/main.rs index bc5ad6fa8..91675bbf0 100644 --- a/crates/tools/src/main.rs +++ b/crates/tools/src/main.rs @@ -1,5 +1,4 @@ extern crate clap; -#[macro_use] extern crate failure; extern crate tools; extern crate walkdir; @@ -10,11 +9,11 @@ use std::{ collections::HashMap, fs, path::{Path, PathBuf}, - process::Command, }; use tools::{ - collect_tests, Result, Test, generate, Mode, Overwrite, Verify, project_root, + collect_tests, Result, Test, generate, Mode, Overwrite, Verify, run, run_rustfmt, }; +use failure::bail; const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar"; const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline"; @@ -42,7 +41,7 @@ fn main() -> Result<()> { ("install-code", _) => install_code_extension()?, ("gen-tests", _) => gen_tests(mode)?, ("gen-syntax", _) => generate(Overwrite)?, - ("format", _) => run_rustfmt()?, + ("format", _) => run_rustfmt(Overwrite)?, _ => unreachable!(), } Ok(()) @@ -145,26 +144,3 @@ fn install_code_extension() -> Result<()> { } Ok(()) } - -fn run(cmdline: &'static str, dir: &str) -> Result<()> { - eprintln!("\nwill run: {}", cmdline); - let project_dir = project_root().join(dir); - let mut args = cmdline.split_whitespace(); - let exec = args.next().unwrap(); - let status = Command::new(exec) - .args(args) - .current_dir(project_dir) - .status()?; - if !status.success() { - bail!("`{}` exited with {}", cmdline, status); - } - Ok(()) -} - -fn run_rustfmt() -> Result<()> { - // Use beta toolchain for 2018 edition. - run("rustup install beta", ".")?; - run("rustup component add rustfmt-preview --toolchain beta", ".")?; - run("rustup run beta -- cargo fmt", ".")?; - Ok(()) -} -- cgit v1.2.3