MCPcopy Create free account
hub / github.com/Botloader/botloader / run_script

Method run_script

components/vm/src/vm.rs:347–392  ·  view source on GitHub ↗
(&mut self, script_id: u64)

Source from the content-addressed store, hash-verified

345
346 #[instrument(skip(self))]
347 async fn run_script(&mut self, script_id: u64) {
348 let (script, compiled) = {
349 let borrow = self.script_store.borrow();
350
351 if let Some(script) = borrow.get_script(script_id) {
352 if script.can_run() {
353 if let Some(source) = &script.compiled {
354 (script.clone(), source.clone())
355 } else {
356 error!("script marked as can run with no compiled source",);
357 return;
358 }
359 } else {
360 info!("skipping loading script");
361 return;
362 }
363 } else {
364 error!("tried to load non-existent script");
365 return;
366 }
367 };
368
369 {
370 self.script_store
371 .borrow_mut()
372 .set_state(script_id, ScriptLoadState::Loaded);
373 }
374
375 let res = self
376 .runtime
377 .load_side_es_module_from_code(&script.url, FastString::from(compiled.output))
378 .await;
379
380 match res {
381 Ok(id) => {
382 let rcv = self.runtime.mod_evaluate(id);
383 self.complete_module_eval(rcv).await;
384 }
385 Err(err) => {
386 self.log_guild_err(err);
387 self.script_store
388 .borrow_mut()
389 .set_state(script_id, ScriptLoadState::Failed);
390 }
391 }
392 }
393
394 fn dispatch_event(&mut self, event: VmDispatchEvent) {
395 let _ = self.tx.send(VmEvent::DispatchedEvent(event.seq));

Callers 3

handle_cmdMethod · 0.80
run_scriptsMethod · 0.80
restartMethod · 0.80

Calls 5

can_runMethod · 0.80
set_stateMethod · 0.80
complete_module_evalMethod · 0.80
log_guild_errMethod · 0.80
get_scriptMethod · 0.45

Tested by

no test coverage detected