Skip to content
This repository was archived by the owner on Nov 5, 2024. It is now read-only.

Commit 4df1bd5

Browse files
committed
added codegen example
1 parent 0aad53e commit 4df1bd5

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

examples/codegen.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
fn print_usage_and_exit() -> ! {
2+
eprintln!("Usage: codegen --template <template.liquid> --write-to <outfile>");
3+
std::process::exit(1);
4+
}
5+
6+
fn main() {
7+
let mut args = std::env::args().collect::<Vec<_>>();
8+
9+
let mut get_arg = |key: &str| {
10+
let key_idx = args
11+
.iter()
12+
.enumerate()
13+
.find(|&(_idx, e)| e == key)
14+
.unwrap_or_else(|| {
15+
eprintln!("Unable to get {} CLI argument", key);
16+
print_usage_and_exit()
17+
})
18+
.0;
19+
let _key = args.remove(key_idx);
20+
if key_idx >= args.len() {
21+
eprintln!("No {} CLI option given", key);
22+
print_usage_and_exit();
23+
}
24+
let value = args.remove(key_idx);
25+
value
26+
};
27+
28+
let template_path = get_arg("--template");
29+
let output_path = get_arg("--write-to");
30+
31+
let rendered = lib_ruby_parser_nodes::LiquidTemplate::new(template_path).render();
32+
std::fs::write(output_path, rendered).unwrap();
33+
}

0 commit comments

Comments
 (0)