Skip to main content

roder_ext_task_process/
lib.rs

1mod task;
2
3use std::sync::Arc;
4
5use roder_api::{
6    CapabilityRequest, ExtensionManifest, ExtensionRegistryBuilder, ProvidedService, RoderExtension,
7};
8
9pub use task::{PROCESS_TASK_EXECUTOR_ID, ProcessTaskExecutor};
10
11pub struct ProcessTaskExtension;
12
13impl RoderExtension for ProcessTaskExtension {
14    fn manifest(&self) -> ExtensionManifest {
15        ExtensionManifest {
16            id: "roder-ext-task-process".to_string(),
17            name: "Process Task Executor".to_string(),
18            version: semver::Version::new(0, 1, 0),
19            api_version: "0.1.0".to_string(),
20            description: Some("Background process task executor".to_string()),
21            provides: vec![ProvidedService::TaskExecutor(
22                PROCESS_TASK_EXECUTOR_ID.to_string(),
23            )],
24            required_capabilities: vec![CapabilityRequest::new("process.spawn.shell")],
25        }
26    }
27
28    fn install(&self, registry: &mut ExtensionRegistryBuilder) -> anyhow::Result<()> {
29        registry.task_executor(Arc::new(ProcessTaskExecutor));
30        Ok(())
31    }
32}