use super::{DirCreateMode, FileContentMode};
#[derive(Clone, Debug, Default)]
pub(super) struct FileOp {
pub(super) action: Option<FileAction>,
pub(super) props: Vec<PropChange>,
}
#[derive(Clone, Debug)]
pub(super) enum FileAction {
Put {
contents: Vec<u8>,
mode: FileContentMode,
},
Copy {
from_path: String,
from_rev: u64,
},
}
#[derive(Clone, Debug, Default)]
pub(super) struct DirOp {
pub(super) action: Option<DirAction>,
pub(super) props: Vec<PropChange>,
}
#[derive(Clone, Debug)]
pub(super) enum DirAction {
Mkdir { mode: DirCreateMode },
Copy { from_path: String, from_rev: u64 },
}
#[derive(Clone, Debug)]
pub(super) struct PropChange {
pub(super) name: String,
pub(super) value: Option<Vec<u8>>,
}
#[derive(Clone, Debug)]
pub(super) struct CopyOp {
pub(super) from_path: String,
pub(super) from_rev: Option<u64>,
pub(super) to_path: String,
pub(super) kind: super::CopyKind,
}
#[derive(Clone, Debug)]
pub(super) struct ResolvedFile {
pub(super) path: String,
pub(super) exists: bool,
pub(super) action: Option<FileAction>,
pub(super) props: Vec<PropChange>,
}
#[derive(Clone, Debug)]
pub(super) enum Task {
Dir(String),
File(String),
Delete(String),
}
impl Task {
pub(super) fn path(&self) -> &str {
match self {
Task::Dir(path) | Task::File(path) | Task::Delete(path) => path.as_str(),
}
}
}
#[derive(Clone, Debug)]
pub(super) enum DirPlanKind {
Open,
Add { copy_from: Option<(String, u64)> },
}