1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
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,
#[serde(rename = "source_cache")]
#[getset(get = "pub")]
source_cache_root: 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,
})
}
}
|