mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-10 07:04:22 +00:00
initial implementation
This commit is contained in:
parent
9b9fc135d6
commit
d14610dab4
3 changed files with 18 additions and 11 deletions
|
@ -3,6 +3,7 @@
|
|||
gen-syntax = "run --package tools -- gen-syntax"
|
||||
gen-tests = "run --package tools -- gen-tests"
|
||||
install-code = "run --package tools -- install-code"
|
||||
format = "run --package tools -- format"
|
||||
|
||||
render-test = "run --package ra_cli -- render-test"
|
||||
parse = "run --package ra_cli -- parse"
|
||||
|
|
|
@ -12,9 +12,9 @@ pub use teraron::{Mode, Verify, Overwrite};
|
|||
|
||||
pub type Result<T> = ::std::result::Result<T, failure::Error>;
|
||||
|
||||
pub const GRAMMAR: &str = "ra_syntax/src/grammar.ron";
|
||||
pub const SYNTAX_KINDS: &str = "ra_syntax/src/syntax_kinds/generated.rs.tera";
|
||||
pub const AST: &str = "ra_syntax/src/ast/generated.rs.tera";
|
||||
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";
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Test {
|
||||
|
@ -75,7 +75,8 @@ pub fn generate(mode: Mode) -> Result<()> {
|
|||
|
||||
pub fn project_root() -> PathBuf {
|
||||
Path::new(&std::env::var("CARGO_MANIFEST_DIR").unwrap())
|
||||
.parent()
|
||||
.ancestors()
|
||||
.nth(2)
|
||||
.unwrap()
|
||||
.to_path_buf()
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ use std::{
|
|||
process::Command,
|
||||
};
|
||||
use tools::{
|
||||
collect_tests, Result, Test, generate, Mode, Overwrite, Verify,
|
||||
collect_tests, Result, Test, generate, Mode, Overwrite, Verify, project_root,
|
||||
};
|
||||
|
||||
const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar";
|
||||
|
@ -31,6 +31,7 @@ fn main() -> Result<()> {
|
|||
.subcommand(SubCommand::with_name("gen-syntax"))
|
||||
.subcommand(SubCommand::with_name("gen-tests"))
|
||||
.subcommand(SubCommand::with_name("install-code"))
|
||||
.subcommand(SubCommand::with_name("format"))
|
||||
.get_matches();
|
||||
let mode = if matches.is_present("verify") {
|
||||
Verify
|
||||
|
@ -41,6 +42,7 @@ fn main() -> Result<()> {
|
|||
("install-code", _) => install_code_extension()?,
|
||||
("gen-tests", _) => gen_tests(mode)?,
|
||||
("gen-syntax", _) => generate(Overwrite)?,
|
||||
("format", _) => run_rustfmt()?,
|
||||
_ => unreachable!(),
|
||||
}
|
||||
Ok(())
|
||||
|
@ -146,12 +148,7 @@ fn install_code_extension() -> Result<()> {
|
|||
|
||||
fn run(cmdline: &'static str, dir: &str) -> Result<()> {
|
||||
eprintln!("\nwill run: {}", cmdline);
|
||||
let manifest_dir = env!("CARGO_MANIFEST_DIR");
|
||||
let project_dir = Path::new(manifest_dir)
|
||||
.ancestors()
|
||||
.nth(2)
|
||||
.unwrap()
|
||||
.join(dir);
|
||||
let project_dir = project_root().join(dir);
|
||||
let mut args = cmdline.split_whitespace();
|
||||
let exec = args.next().unwrap();
|
||||
let status = Command::new(exec)
|
||||
|
@ -163,3 +160,11 @@ fn run(cmdline: &'static str, dir: &str) -> Result<()> {
|
|||
}
|
||||
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(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue