dprint_plugin_dockerfile/configuration/resolve_config.rs
1use super::Configuration;
2use dprint_core::configuration::*;
3
4/// Resolves configuration from a collection of key value strings.
5///
6/// # Example
7///
8/// ```
9/// use dprint_core::configuration::ConfigKeyMap;
10/// use dprint_core::configuration::resolve_global_config;
11/// use dprint_plugin_dockerfile::configuration::resolve_config;
12///
13/// let mut config_map = ConfigKeyMap::new(); // get a collection of key value pairs from somewhere
14/// let global_config_result = resolve_global_config(&mut config_map);
15///
16/// // check global_config_result.diagnostics here...
17///
18/// let config_map = ConfigKeyMap::new(); // get a collection of k/v pairs from somewhere
19/// let config_result = resolve_config(
20/// config_map,
21/// &global_config_result.config
22/// );
23///
24/// // check config_result.diagnostics here and use config_result.config
25/// ```
26pub fn resolve_config(config: ConfigKeyMap, global_config: &GlobalConfiguration) -> ResolveConfigurationResult<Configuration> {
27 let mut diagnostics = Vec::new();
28 let mut config = config;
29
30 let resolved_config = Configuration {
31 line_width: get_value(
32 &mut config,
33 "lineWidth",
34 global_config.line_width.unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.line_width),
35 &mut diagnostics,
36 ),
37 new_line_kind: get_value(
38 &mut config,
39 "newLineKind",
40 global_config.new_line_kind.unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.new_line_kind),
41 &mut diagnostics,
42 ),
43 };
44
45 diagnostics.extend(get_unknown_property_diagnostics(config));
46
47 ResolveConfigurationResult {
48 config: resolved_config,
49 diagnostics,
50 }
51}