* deterministic id generator per module Signed-off-by: Jess Frazelle <github@jessfraz.com> * non Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * do not remake the planes if they are alreaady made; Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * do not remake the planes if they are alreaady made; Signed-off-by: Jess Frazelle <github@jessfraz.com> * clippy Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
use std::{env, fs::File, io::Read};
|
|
|
|
use kcl_lib::{ExecState, ExecutorContext, ExecutorSettings, Program};
|
|
|
|
// An extremely simple script, definitely not to be released or used for anything important, but
|
|
// sometimes useful for debugging. It reads in a file specified on the command line and runs it.
|
|
// It will report any errors in a developer-oriented way and discard the result.
|
|
//
|
|
// e.g., `cargo run -- foo.kcl`
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let mut args = env::args();
|
|
args.next();
|
|
let filename = args.next().unwrap_or_else(|| "main.kcl".to_owned());
|
|
|
|
let mut f = File::open(&filename).unwrap();
|
|
let mut text = String::new();
|
|
f.read_to_string(&mut text).unwrap();
|
|
|
|
let (program, errs) = Program::parse(&text).unwrap();
|
|
if !errs.is_empty() {
|
|
for e in errs {
|
|
eprintln!("{e:#?}");
|
|
}
|
|
}
|
|
let program = program.unwrap();
|
|
|
|
let project_directory = filename.rfind('/').map(|i| filename[..i].into());
|
|
let ctx = ExecutorContext::new_with_client(
|
|
ExecutorSettings {
|
|
project_directory,
|
|
..Default::default()
|
|
},
|
|
None,
|
|
None,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
let mut exec_state = ExecState::new(&ctx);
|
|
ctx.run(&program, &mut exec_state).await.unwrap();
|
|
}
|