xianyun_core/config/
container.rs1use super::global::GlobalConfig;
5use super::latest::CaproniConfig;
6use crate::variables::resolver::Resolver;
7
8pub struct Container {
9 pub global: GlobalConfig,
10 pub caproni: CaproniConfig,
11 pub resolver: Box<dyn Resolver>,
12}
13
14pub fn new_container(mut global: GlobalConfig, caproni: CaproniConfig) -> Container {
17 use crate::variables::predefined::Options;
18 use crate::variables::resolver::new_resolver;
19
20 let tool_versions = global.tool_versions();
21
22 let opts = Options {
23 profile_name: global.profile_name.clone(),
24 cluster: Some(caproni.cluster.clone()),
25 };
26
27 let static_vars: std::collections::HashMap<String, String> = caproni
28 .variables
29 .as_ref()
30 .map(|vars| {
31 vars.iter()
32 .map(|(name, vc)| (name.clone(), vc.value.clone()))
33 .collect()
34 })
35 .unwrap_or_default();
36
37 let resolver = new_resolver(opts, Some(static_vars), Some(tool_versions));
38
39 Container {
40 global,
41 caproni,
42 resolver,
43 }
44}