use crate::schemes::template::{replace::Replace, variable::Variable};
use crate::Result;
use std::path::Path;
pub trait ToTask {
fn to_task(self, path: &Path) -> Task;
}
#[derive(PartialEq, Eq)]
pub enum Task {
Rename(Variable),
Move(Replace),
}
impl Task {
pub fn execute(&self) -> Result<()> {
match self {
Self::Rename(v) => v.execute(),
Self::Move(r) => r.execute(),
}
}
fn index(&self) -> u8 {
match *self {
Self::Rename(_) => 1,
Self::Move(_) => 2,
}
}
}
impl Ord for Task {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
self.index().cmp(&other.index())
}
}
impl PartialOrd for Task {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
Some(self.cmp(other))
}
}