aboutsummaryrefslogtreecommitdiff
path: root/crates/tools/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/tools/src/main.rs')
-rw-r--r--crates/tools/src/main.rs30
1 files changed, 3 insertions, 27 deletions
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 @@
1extern crate clap; 1extern crate clap;
2#[macro_use]
3extern crate failure; 2extern crate failure;
4extern crate tools; 3extern crate tools;
5extern crate walkdir; 4extern crate walkdir;
@@ -10,11 +9,11 @@ use std::{
10 collections::HashMap, 9 collections::HashMap,
11 fs, 10 fs,
12 path::{Path, PathBuf}, 11 path::{Path, PathBuf},
13 process::Command,
14}; 12};
15use tools::{ 13use tools::{
16 collect_tests, Result, Test, generate, Mode, Overwrite, Verify, project_root, 14 collect_tests, Result, Test, generate, Mode, Overwrite, Verify, run, run_rustfmt,
17}; 15};
16use failure::bail;
18 17
19const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar"; 18const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar";
20const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline"; 19const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline";
@@ -42,7 +41,7 @@ fn main() -> Result<()> {
42 ("install-code", _) => install_code_extension()?, 41 ("install-code", _) => install_code_extension()?,
43 ("gen-tests", _) => gen_tests(mode)?, 42 ("gen-tests", _) => gen_tests(mode)?,
44 ("gen-syntax", _) => generate(Overwrite)?, 43 ("gen-syntax", _) => generate(Overwrite)?,
45 ("format", _) => run_rustfmt()?, 44 ("format", _) => run_rustfmt(Overwrite)?,
46 _ => unreachable!(), 45 _ => unreachable!(),
47 } 46 }
48 Ok(()) 47 Ok(())
@@ -145,26 +144,3 @@ fn install_code_extension() -> Result<()> {
145 } 144 }
146 Ok(()) 145 Ok(())
147} 146}
148
149fn run(cmdline: &'static str, dir: &str) -> Result<()> {
150 eprintln!("\nwill run: {}", cmdline);
151 let project_dir = project_root().join(dir);
152 let mut args = cmdline.split_whitespace();
153 let exec = args.next().unwrap();
154 let status = Command::new(exec)
155 .args(args)
156 .current_dir(project_dir)
157 .status()?;
158 if !status.success() {
159 bail!("`{}` exited with {}", cmdline, status);
160 }
161 Ok(())
162}
163
164fn run_rustfmt() -> Result<()> {
165 // Use beta toolchain for 2018 edition.
166 run("rustup install beta", ".")?;
167 run("rustup component add rustfmt-preview --toolchain beta", ".")?;
168 run("rustup run beta -- cargo fmt", ".")?;
169 Ok(())
170}