dprint_plugin_sql/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_sql::configuration::resolve_config;
12///
13/// let config_map = ConfigKeyMap::new(); // get a collection of key value pairs from somewhere
14/// let global_config_result = resolve_global_config(config_map, &Default::default());
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(
27  config: ConfigKeyMap,
28  global_config: &GlobalConfiguration,
29) -> ResolveConfigurationResult<Configuration> {
30  let mut diagnostics = Vec::new();
31  let mut config = config;
32
33  let resolved_config = Configuration {
34    use_tabs: get_value(
35      &mut config,
36      "useTabs",
37      global_config
38        .use_tabs
39        .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.use_tabs),
40      &mut diagnostics,
41    ),
42    indent_width: get_value(
43      &mut config,
44      "indentWidth",
45      global_config
46        .indent_width
47        .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.indent_width),
48      &mut diagnostics,
49    ),
50    new_line_kind: get_value(
51      &mut config,
52      "newLineKind",
53      global_config
54        .new_line_kind
55        .unwrap_or(RECOMMENDED_GLOBAL_CONFIGURATION.new_line_kind),
56      &mut diagnostics,
57    ),
58    uppercase: get_value(&mut config, "uppercase", false, &mut diagnostics),
59    lines_between_queries: get_value(&mut config, "linesBetweenQueries", 1, &mut diagnostics),
60  };
61
62  diagnostics.extend(get_unknown_property_diagnostics(config));
63
64  ResolveConfigurationResult {
65    config: resolved_config,
66    diagnostics,
67  }
68}