diff options
Diffstat (limited to 'crates/tools/src/main.rs')
-rw-r--r-- | crates/tools/src/main.rs | 30 |
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 @@ | |||
1 | extern crate clap; | 1 | extern crate clap; |
2 | #[macro_use] | ||
3 | extern crate failure; | 2 | extern crate failure; |
4 | extern crate tools; | 3 | extern crate tools; |
5 | extern crate walkdir; | 4 | extern 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 | }; |
15 | use tools::{ | 13 | use 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 | }; |
16 | use failure::bail; | ||
18 | 17 | ||
19 | const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar"; | 18 | const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar"; |
20 | const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline"; | 19 | const 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 | |||
149 | fn 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 | |||
164 | fn 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 | } | ||