Files
modeling-app/rust/kcl-lib/src/main.rs
Jess Frazelle 3f02bb2065 deterministic id generator per module (#5811)
* 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>
2025-03-15 17:08:39 +00:00

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();
}