///|
fn main {
let args = @mini.args_get() catch { err => abort("args failed: \{err}") }
match parse_command(args) {
Toc(file) => {
let markdown = @mini.read_text_file(file) catch {
err => abort("read failed: \{err}")
}
write_output(toc_tool(file, markdown))
}
Section(file, query) => {
let markdown = @mini.read_text_file(file) catch {
err => abort("read failed: \{err}")
}
write_output(section_tool(file, markdown, query))
}
ParseOutput(output) => write_output(output)
}
}
///|
fn write_output(output : ToolOutput) -> Unit {
match output {
Stdout(text) => write_stdout(text)
Stderr(text) => write_stderr(text)
}
}
///|
fn write_stdout(text : String) -> Unit {
@mini.stdout.write_text(text) catch {
err => abort("stdout failed: \{err}")
}
}
///|
fn write_stderr(text : String) -> Unit {
@mini.stderr.write_text(text) catch {
err => abort("stderr failed: \{err}")
}
}