internal: unify subcommand handling between ra and xtask

This commit is contained in:
Aleksey Kladov
2021-08-10 12:49:55 +03:00
parent e8a67b67bf
commit 9cf5914c45
8 changed files with 203 additions and 209 deletions

View File

@@ -2,24 +2,21 @@
pub mod flags;
pub mod load_cargo;
mod parse;
mod symbols;
mod highlight;
mod analysis_stats;
mod diagnostics;
mod progress_report;
mod ssr;
mod progress_report;
use std::io::Read;
use anyhow::Result;
use ide::{Analysis, AnalysisHost};
use syntax::{AstNode, SourceFile};
use ide::AnalysisHost;
use vfs::Vfs;
pub use self::{
analysis_stats::AnalysisStatsCmd,
diagnostics::diagnostics,
ssr::{apply_ssr_rules, search_for_patterns},
};
#[derive(Clone, Copy)]
pub enum Verbosity {
Spammy,
@@ -37,38 +34,6 @@ impl Verbosity {
}
}
pub fn parse(no_dump: bool) -> Result<()> {
let _p = profile::span("parsing");
let file = file()?;
if !no_dump {
println!("{:#?}", file.syntax());
}
std::mem::forget(file);
Ok(())
}
pub fn symbols() -> Result<()> {
let text = read_stdin()?;
let (analysis, file_id) = Analysis::from_single_file(text);
let structure = analysis.file_structure(file_id).unwrap();
for s in structure {
println!("{:?}", s);
}
Ok(())
}
pub fn highlight(rainbow: bool) -> Result<()> {
let (analysis, file_id) = Analysis::from_single_file(read_stdin()?);
let html = analysis.highlight_as_html(file_id, rainbow).unwrap();
println!("{}", html);
Ok(())
}
fn file() -> Result<SourceFile> {
let text = read_stdin()?;
Ok(SourceFile::parse(&text).tree())
}
fn read_stdin() -> Result<String> {
let mut buff = String::new();
std::io::stdin().read_to_string(&mut buff)?;