Skip to main content

termesh_tasks/
service.rs

1use termesh_core::{Problem, TaskSpec};
2use termesh_filesystem::FileSystemService;
3use termesh_workspace::WorkspaceRoot;
4
5#[derive(Debug, Default, PartialEq, Eq)]
6pub struct DecodedTaskOutput {
7    pub display: Vec<u8>,
8    pub problems: Vec<Problem>,
9}
10
11pub trait TaskOutputDecoder: Send {
12    fn push(&mut self, bytes: &[u8]) -> DecodedTaskOutput;
13    fn finish(&mut self) -> DecodedTaskOutput;
14}
15
16pub trait TaskService: Send + Sync {
17    fn catalog(&self, root: &WorkspaceRoot, fs: &dyn FileSystemService) -> Vec<TaskSpec>;
18    fn decoder(&self, task: &TaskSpec) -> Option<Box<dyn TaskOutputDecoder>>;
19}