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,
Error,
}
#[derive(Debug, Default)]
pub struct InstalledPackageStatus {
pub upstream_state: UpstreamState,
pub changes: ChangeSet,
}
impl InstalledPackageStatus {
pub fn new(upstream_state: UpstreamState, changes: ChangeSet) -> Self {
Self {
upstream_state,
changes,
}
}
pub fn error() -> Self {
Self {
upstream_state: UpstreamState::Error,
changes: Default::default(),
}
}
}