coodev-runner 0.1.42

A simple runner for coodev
Documentation
use crate::{Runner, WorkflowMessage, WorkflowRunner};

pub trait Plugin: Send {
  fn on_init(&self, _runner: &Runner) {}
  fn on_event(&self, _event: &WorkflowMessage) {}
  fn on_workflow_runner_init(&self, _runner: &WorkflowRunner) {}
}

pub struct PluginManager {
  plugins: Vec<Box<dyn Plugin>>,
}

impl PluginManager {
  pub fn new() -> Self {
    PluginManager { plugins: vec![] }
  }

  pub fn register(&mut self, plugin: Box<dyn Plugin>) {
    self.plugins.push(plugin);
  }

  // pub fn init(&self, runner: &Runner) {
  //   for plugin in &self.plugins {
  //     plugin.init(runner);
  //   }
  // }

  pub fn on_workflow_runner_init(&self, runner: &WorkflowRunner) {
    for plugin in &self.plugins {
      plugin.on_workflow_runner_init(runner);
    }
  }
}