use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(default, deny_unknown_fields)]
pub struct GitLabConfig {
pub enabled: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) group: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) project: Option<String>,
#[serde(skip_serializing_if = "String::is_empty")]
pub host: String,
#[serde(skip_serializing_if = "String::is_empty")]
pub build_command: String,
#[serde(skip_serializing_if = "BTreeMap::is_empty")]
pub artifacts: BTreeMap<String, BTreeMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) merge_request_title: Option<String>,
}
impl GitLabConfig {
pub fn enabled_config() -> Self {
Self {
enabled: true,
..Default::default()
}
}
pub fn group(&self) -> Option<&str> {
self.group.as_deref()
}
pub fn project(&self) -> Option<&str> {
self.project.as_deref()
}
pub fn merge_request_title(&self) -> &str {
self.merge_request_title
.as_deref()
.unwrap_or("Release updates")
}
pub fn with_group(mut self, group: String) -> Self {
self.group = Some(group);
self
}
pub fn with_project(mut self, project: String) -> Self {
self.project = Some(project);
self
}
pub fn with_host(mut self, host: String) -> Self {
self.host = host;
self
}
pub fn with_merge_request_title(mut self, title: String) -> Self {
self.merge_request_title = Some(title);
self
}
}