This commit is contained in:
2025-06-27 20:41:04 +02:00
parent a843208422
commit e444d0d7ae
3 changed files with 73 additions and 5 deletions

View File

@@ -4,6 +4,9 @@ mod markdown;
use markdown::{get_all_posts, get_post_by_slug, get_posts_by_tag, watch_posts};
use serde_json;
use std::fs;
use std::io;
use std::io::Read; // STD AYOOOOOOOOOOOOOO - Tsodin
#[derive(Parser)]
#[command(name = "Markdown Backend")]
@@ -31,6 +34,15 @@ enum Commands {
Rsparseinfo,
/// Check backend health
Checkhealth,
/// Parse markdown from file or stdin
Parse {
#[arg(long)]
file: Option<String>,
#[arg(long)]
stdin: bool,
#[arg(long)]
ast: bool,
},
}
fn main() {
@@ -80,5 +92,39 @@ fn main() {
let health = markdown::checkhealth();
println!("{}", serde_json::to_string_pretty(&health).unwrap());
}
Commands::Parse { file, stdin, ast } => {
let input = if let Some(file_path) = file {
match std::fs::read_to_string(file_path) {
Ok(content) => content,
Err(e) => {
eprintln!("Failed to read file: {}", e);
std::process::exit(1);
}
}
} else if *stdin {
let mut buffer = String::new();
if let Err(e) = io::stdin().read_to_string(&mut buffer) {
eprintln!("Failed to read from stdin: {}", e);
std::process::exit(1);
}
buffer
} else {
eprintln!("Please provide --file <path> or --stdin");
std::process::exit(1);
};
if *ast {
// Print pulldown_cmark events as debug output
let parser = pulldown_cmark::Parser::new_ext(&input, pulldown_cmark::Options::all());
for event in parser {
println!("{:?}", event);
}
} else {
// Print HTML output
let parser = pulldown_cmark::Parser::new_ext(&input, pulldown_cmark::Options::all());
let mut html_output = String::new();
pulldown_cmark::html::push_html(&mut html_output, parser);
println!("{}", html_output);
}
}
}
}