use crate::config::{ApiToken, ForgeAlias, ForgeConfig, ForgeType, Hostname, User};
use super::CommitCount;
#[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(),
}
}
}