rotz 1.2.1

Fully cross platform dotfile manager written in rust.
use std::collections::HashSet;

#[cfg(test)]
use fake::Dummy;
use serde::Deserialize;
use strum::EnumIs;
use velcro::hash_set;

use super::InstallsComplex;

#[derive(Deserialize, Clone, Debug, EnumIs)]
#[serde(untagged)]
#[cfg_attr(test, derive(Dummy))]
#[serde(deny_unknown_fields)]
pub enum InstallsCanonical {
  None(bool),
  Full {
    cmd: String,
    #[serde(default)]
    depends: HashSet<String>,
  },
}

impl From<InstallsComplex> for InstallsCanonical {
  fn from(value: InstallsComplex) -> Self {
    match value {
      InstallsComplex::None(t) => InstallsCanonical::None(t),
      InstallsComplex::Simple(cmd) => InstallsCanonical::Full { cmd, depends: hash_set!() },
      InstallsComplex::Full { cmd, depends } => InstallsCanonical::Full { cmd, depends },
    }
  }
}