41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
![]() |
use rhai::Dynamic;
|
||
|
use rhai::Engine;
|
||
|
use serde_json::json;
|
||
|
|
||
|
use crate::services::state::AppState;
|
||
|
|
||
|
pub fn create_site_keyword(_state: &AppState, engine: &mut Engine) {
|
||
|
|
||
|
engine
|
||
|
.register_custom_syntax(
|
||
|
&[
|
||
|
"CREATE", "SITE", "$expr$", ",", "$expr$", ",", "$expr$", ",", "$expr$", ",",
|
||
|
"$expr$",
|
||
|
],
|
||
|
true, // Statement
|
||
|
|context, inputs| {
|
||
|
if inputs.len() < 5 {
|
||
|
return Err("Not enough arguments for CREATE SITE".into());
|
||
|
}
|
||
|
|
||
|
let name = context.eval_expression_tree(&inputs[0])?;
|
||
|
let company = context.eval_expression_tree(&inputs[1])?;
|
||
|
let website = context.eval_expression_tree(&inputs[2])?;
|
||
|
let template = context.eval_expression_tree(&inputs[3])?;
|
||
|
let prompt = context.eval_expression_tree(&inputs[4])?;
|
||
|
|
||
|
let result = json!({
|
||
|
"command": "create_site",
|
||
|
"name": name.to_string(),
|
||
|
"company": company.to_string(),
|
||
|
"website": website.to_string(),
|
||
|
"template": template.to_string(),
|
||
|
"prompt": prompt.to_string()
|
||
|
});
|
||
|
println!("CREATE SITE executed: {}", result.to_string());
|
||
|
Ok(Dynamic::UNIT)
|
||
|
},
|
||
|
)
|
||
|
.unwrap();
|
||
|
}
|