//! Parsed config use super::*; pub mod op { /// The crypt mode #[derive(Debug, PartialEq, Eq, Clone, Hash)] pub enum Mode { /// Detect based on file-type Autodetect, Encrypt, Decrypt, } impl Default for Mode { #[inline] fn default() -> Self { Mode::Autodetect } } #[derive(Debug, Clone,PartialEq, Eq, Default)] pub struct Normal { pub rsa: Vec<(String, Password)>, pub sign: Vec<(String, Password)>, pub aes: Vec<(String, Password)>, pub mode: Mode, pub files: Vec<(String, Option)>, } #[derive(Debug, Clone,PartialEq, Eq)] pub enum GenerateKey { Rsa(Rsa), Aes(Aes), } #[derive(Debug, PartialEq, Eq, Clone, Hash)] pub enum Password { No, Yes, Specific(String), } impl Default for Password { #[inline] fn default() -> Self { Self::No } } #[derive(Debug ,PartialEq, Eq, Clone, Hash, Default)] pub struct KeyDescription { pub name: String, pub email: String, pub description: String, other: String, } #[derive(Debug, Clone,PartialEq, Eq)] pub struct Rsa { input: Option<(String, Password)>, output_priv: String, output_pub: Option, password: Password, description: KeyDescription, } #[derive(Debug,Clone, PartialEq, Eq)] pub struct Aes { input: Option<(String, Password)>, output: String, password: Password, description: KeyDescription, } } #[derive(Debug, Clone,PartialEq, Eq)] pub enum Operation { Normal(op::Normal), GenerateKey(op::GenerateKey), KeyInfo(Vec<(String, op::Password)>), Help, }