use {
    super::{Group, User},
    crate::{Dependency, Version},
    serde::{Deserialize, Serialize},
    std::path::PathBuf,
};

#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct Specs {
    /// The name of the package minus all version information
    pub name: String,
    /// The `Version` of the package
    pub version: Version,
    /// The release number for this package
    pub release: u8,
    /// a single line description of the package
    pub description: String,
    /// a more verbose description of the package
    pub long_description: String,
    /// all of this package's runtime dependencies
    pub dependencies: Vec<Dependency>,
    /// an optional list of users to be created upon installation
    pub users: Option<Vec<User>>,
    /// an optional list of groups to be created upon installation
    pub groups: Option<Vec<Group>>,
    /// applicable only if this package contains a shell
    pub shells: Option<Vec<PathBuf>>,
    /// an optional post installation shell script to be run
    pub post_install: Option<String>,
}
