git-next-core 0.14.1

core for git-next, the trunk-based development manager
Documentation
use crate::config::{ApiToken, ForgeAlias, ForgeConfig, ForgeType, Hostname, User};

use super::CommitCount;

/// The derived information about a Forge, used to create interactions with it
#[derive(Clone, Default, Debug, derive_more::Constructor, derive_with::With)]
pub struct ForgeDetails {
    forge_alias: ForgeAlias,
    forge_type: ForgeType,
    hostname: Hostname,
    user: User,
    token: ApiToken,
    max_dev_commits: Option<CommitCount>,
}
impl ForgeDetails {
    #[must_use]
    pub const fn forge_alias(&self) -> &ForgeAlias {
        &self.forge_alias
    }

    #[must_use]
    pub const fn forge_type(&self) -> ForgeType {
        self.forge_type
    }

    #[must_use]
    pub const fn hostname(&self) -> &Hostname {
        &self.hostname
    }

    pub(crate) const fn user(&self) -> &User {
        &self.user
    }

    #[must_use]
    pub const fn token(&self) -> &ApiToken {
        &self.token
    }

    #[must_use]
    pub const fn max_dev_commits(&self) -> Option<&CommitCount> {
        self.max_dev_commits.as_ref()
    }
}
impl From<(&ForgeAlias, &ForgeConfig)> for ForgeDetails {
    fn from((forge_alias, forge_config): (&ForgeAlias, &ForgeConfig)) -> Self {
        Self {
            forge_alias: forge_alias.clone(),
            forge_type: forge_config.forge_type(),
            hostname: forge_config.hostname(),
            user: forge_config.user(),
            token: forge_config.token(),
            max_dev_commits: forge_config.max_dev_commits(),
        }
    }
}