You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
use crate::{distro::OSConfig, error::AppResult};
|
|
|
|
|
|
|
|
use self::{base_task::BaseTask, custom_task::CustomTask, exec_builder::ExecBuilder};
|
|
|
|
pub mod base_task;
|
|
|
|
pub mod custom_task;
|
|
|
|
pub mod exec_builder;
|
|
|
|
pub mod task_executor;
|
|
|
|
|
|
|
|
pub trait TaskTrait {
|
|
|
|
fn up(&self, config: &OSConfig) -> AppResult<Option<ExecBuilder>>;
|
|
|
|
fn down(&self, config: &OSConfig) -> AppResult<Option<ExecBuilder>>;
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Clone, Debug)]
|
|
|
|
pub enum Task {
|
|
|
|
Base(BaseTask),
|
|
|
|
Custom(CustomTask),
|
|
|
|
}
|
|
|
|
|
|
|
|
impl TaskTrait for Task {
|
|
|
|
#[inline]
|
|
|
|
fn up(&self, config: &OSConfig) -> AppResult<Option<ExecBuilder>> {
|
|
|
|
match self {
|
|
|
|
Task::Base(b) => b.up(config),
|
|
|
|
Task::Custom(c) => c.up(config),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
fn down(&self, config: &OSConfig) -> AppResult<Option<ExecBuilder>> {
|
|
|
|
match self {
|
|
|
|
Task::Base(b) => b.down(config),
|
|
|
|
Task::Custom(c) => c.down(config),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|