diff options
Diffstat (limited to 'src/config/not_validated.rs')
-rw-r--r-- | src/config/not_validated.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/config/not_validated.rs b/src/config/not_validated.rs new file mode 100644 index 0000000..6764578 --- /dev/null +++ b/src/config/not_validated.rs @@ -0,0 +1,79 @@ +use std::path::PathBuf; +use anyhow::Result; +use getset::Getters; +use handlebars::Handlebars; +use serde::Deserialize; + +use crate::config::Configuration; +use crate::config::ContainerConfig; +use crate::config::DockerConfig; +use crate::config::util::*; +use crate::phase::PhaseName; + +#[derive(Debug, Getters, Deserialize)] +pub struct NotValidatedConfiguration { + #[getset(get = "pub")] + repository: PathBuf, + + #[serde(default = "default_progress_format")] + #[getset(get = "pub")] + progress_format: String, + + #[serde(default = "default_package_print_format")] + #[getset(get = "pub")] + package_print_format: String, + + #[serde(rename = "releases")] + releases_directory: String, + + #[serde(rename = "staging")] + staging_directory: String, + + #[getset(get = "pub")] + #[serde(rename = "database_host")] + database_host: String, + + #[getset(get = "pub")] + #[serde(rename = "database_port")] + database_port: String, + + #[getset(get = "pub")] + #[serde(rename = "database_user")] + database_user: String, + + #[getset(get = "pub")] + #[serde(rename = "database_password")] + database_password: String, + + #[getset(get = "pub")] + #[serde(rename = "database_name")] + database_name: String, + + #[getset(get = "pub")] + docker: DockerConfig, + + #[getset(get = "pub")] + containers: ContainerConfig, + + #[getset(get = "pub")] + available_phases: Vec<PhaseName>, +} + +impl<'reg> NotValidatedConfiguration { + pub fn validate(self) -> Result<Configuration<'reg>> { + // TODO: Implement proper validation + + let hb = { + let mut hb = Handlebars::new(); + hb.register_template_string("releases", &self.releases_directory)?; + hb.register_template_string("staging", &self.staging_directory)?; + hb + }; + + Ok(Configuration { + inner: self, + hb, + }) + } +} + |