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