diff options
| author | Philipp A | 2018-10-29 15:12:55 +0100 |
|---|---|---|
| committer | Philipp A | 2018-10-29 15:12:55 +0100 |
| commit | 07ada348558204e1736e29056eba6d73b2084cc2 (patch) | |
| tree | aaa102c1282572824dffb8fc0c873816177a1a83 /src/bin.rs | |
| parent | 928da429a61fd98891f8b59fedb5f2de45dbc45d (diff) | |
| download | rust-rst-07ada348558204e1736e29056eba6d73b2084cc2.tar.bz2 | |
Rust 2018
Diffstat (limited to 'src/bin.rs')
| -rw-r--r-- | src/bin.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/bin.rs b/src/bin.rs new file mode 100644 index 0000000..5eeb768 --- /dev/null +++ b/src/bin.rs @@ -0,0 +1,36 @@ +mod parser; + + +use pest::Parser; +use structopt::StructOpt; +use clap::{_clap_count_exprs, arg_enum}; +use quicli::{main, fs::read_file, prelude::Verbosity}; + +use self::parser::{RstParser, Rule}; + + +arg_enum! { + #[derive(Debug)] + enum Format { json } +} + +#[derive(Debug, StructOpt)] +#[structopt(raw(setting = "structopt::clap::AppSettings::ColoredHelp"))] +struct Cli { + #[structopt( + long = "format", short = "f", default_value = "json", + raw(possible_values = "&Format::variants()", case_insensitive = "true"), + )] + format: Format, + file: String, + #[structopt(flatten)] + verbosity: Verbosity, +} + +main!(|args: Cli, log_level: verbosity| { + let content = read_file(args.file)?; + let parsed = RstParser::parse(Rule::doc, &content)?; + match args.format { + Format::json => println!("{}", parsed.to_string()) + } +}); |
