aboutsummaryrefslogtreecommitdiff
path: root/tools/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/src/main.rs')
-rw-r--r--tools/src/main.rs45
1 files changed, 39 insertions, 6 deletions
diff --git a/tools/src/main.rs b/tools/src/main.rs
index 0167e3c..396d148 100644
--- a/tools/src/main.rs
+++ b/tools/src/main.rs
@@ -1,17 +1,50 @@
-use clap::Parser;
-use laby::{html, Render};
+
+use std::{
+ fs::{read_to_string, File},
+ io::Write,
+};
+
+use clap::{Parser, Subcommand};
+use laby::{html, internal::Buffer, Render};
#[derive(Parser)]
struct Args {
- input: String,
- output: String,
+ #[clap(short, long)]
+ output: Option<String>,
+ #[clap(subcommand)]
+ action: ArgAction,
+}
+
+#[derive(Subcommand)]
+enum ArgAction {
+ RenderArticle { input: String },
}
fn main() {
let args = Args::parse();
-
+ match args.action {
+ ArgAction::RenderArticle { input } => {
+ let md_source = read_to_string(input).unwrap();
+ let mut out = Buffer::new();
+ article(md_source).render(&mut out);
+ write_output(&args.output, out.into_string());
+ }
+ }
+}
+
+fn write_output(t: &Option<String>, o: String) {
+ if let Some(f) = t {
+ let mut f = File::create(f).unwrap();
+ f.write_fmt(format_args!("{o}")).unwrap()
+ } else {
+ println!("{o}")
+ }
}
fn scaffold(title: String, body: impl Render) -> impl Render {
- html!(head!(title!(title)), body!())
+ html!(head!(title!(title)), body!(body))
+}
+
+fn article(md_source: String) {
+
}