internal: unify subcommand handling between ra and xtask
This commit is contained in:
@@ -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)?;
|
||||
|
||||
Reference in New Issue
Block a user