use std::collections::BTreeMap;
use std::path::PathBuf;
use serde::Serialize;
use crate::manifest::ManifestRow;
#[derive(Debug)]
pub enum Change {
Modified(ManifestRow), Added(ManifestRow), Removed(ManifestRow), }
pub type ChangeSet = BTreeMap<PathBuf, Change>;
#[derive(Debug, PartialEq, Eq, Default, Serialize)]
pub enum UpstreamState {
#[default]
UpToDate,
Behind,
Ahead,
Diverged,
Local,
Error,
}
#[derive(Debug, Default)]
pub struct InstalledPackageStatus {
pub upstream_state: UpstreamState,
pub changes: ChangeSet,
pub ignored_files: Vec<(PathBuf, String, u64)>,
pub junky_changes: Vec<(PathBuf, String)>,
}
impl InstalledPackageStatus {
pub fn new(upstream_state: UpstreamState, changes: ChangeSet) -> Self {
Self {
upstream_state,
changes,
ignored_files: Vec::new(),
junky_changes: Vec::new(),
}
}
pub fn error() -> Self {
Self {
upstream_state: UpstreamState::Error,
..Default::default()
}
}
pub fn local() -> Self {
Self {
upstream_state: UpstreamState::Local,
..Default::default()
}
}
}