settings.rs

 1use anyhow::Result;
 2use serde_json::Value;
 3
 4pub fn make_file_finder_include_ignored_an_enum(value: &mut Value) -> Result<()> {
 5    let Some(file_finder) = value.get_mut("file_finder") else {
 6        return Ok(());
 7    };
 8
 9    let Some(file_finder_obj) = file_finder.as_object_mut() else {
10        anyhow::bail!("Expected file_finder to be an object");
11    };
12
13    let Some(include_ignored) = file_finder_obj.get_mut("include_ignored") else {
14        return Ok(());
15    };
16    *include_ignored = match include_ignored {
17        Value::Bool(true) => Value::String("all".to_string()),
18        Value::Bool(false) => Value::String("indexed".to_string()),
19        Value::Null => Value::String("smart".to_string()),
20        Value::String(s) if s == "all" || s == "indexed" || s == "smart" => return Ok(()),
21        _ => anyhow::bail!("Expected include_ignored to be a boolean or null"),
22    };
23    Ok(())
24}