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}