| mod flags { |
| #![allow(unused)] |
| |
| use std::path::PathBuf; |
| |
| xflags::xflags! { |
| src "./examples/longer.rs" |
| |
| cmd rust-analyzer { |
| /// Set verbosity level |
| repeated -v, --verbose |
| /// Log to the specified file instead of stderr. |
| optional --log-file path: PathBuf |
| |
| default cmd run-server { |
| /// Print version |
| optional --version |
| } |
| |
| /// Parse tree |
| cmd parse { |
| /// Suppress printing |
| optional --no-dump |
| } |
| |
| /// Benchmark specific analysis operation |
| cmd analysis-bench { |
| /// Directory with Cargo.toml |
| optional path: PathBuf |
| /// Compute syntax highlighting for this file |
| required --highlight path: PathBuf |
| /// Compute highlighting for this line |
| optional --line num: u32 |
| } |
| } |
| } |
| |
| // generated start |
| // The following code is generated by `xflags` macro. |
| // Run `env UPDATE_XFLAGS=1 cargo build` to regenerate. |
| #[derive(Debug)] |
| pub struct RustAnalyzer { |
| pub verbose: u32, |
| pub log_file: Option<PathBuf>, |
| pub subcommand: RustAnalyzerCmd, |
| } |
| |
| #[derive(Debug)] |
| pub enum RustAnalyzerCmd { |
| RunServer(RunServer), |
| Parse(Parse), |
| AnalysisBench(AnalysisBench), |
| } |
| |
| #[derive(Debug)] |
| pub struct RunServer { |
| pub version: bool, |
| } |
| |
| #[derive(Debug)] |
| pub struct Parse { |
| pub no_dump: bool, |
| } |
| |
| #[derive(Debug)] |
| pub struct AnalysisBench { |
| pub path: Option<PathBuf>, |
| |
| pub highlight: PathBuf, |
| pub line: Option<u32>, |
| } |
| |
| impl RustAnalyzer { |
| #[allow(dead_code)] |
| pub fn from_env() -> xflags::Result<Self> { |
| Self::from_env_() |
| } |
| |
| #[allow(dead_code)] |
| pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> { |
| Self::from_vec_(args) |
| } |
| } |
| // generated end |
| } |
| |
| fn main() { |
| match flags::RustAnalyzer::from_env() { |
| Ok(flags) => eprintln!("{:#?}", flags), |
| Err(err) => eprintln!("{}", err), |
| } |
| } |