aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin.rs')
-rw-r--r--src/bin.rs36
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())
+ }
+});