in src/settings/config.rs [77:122]
fn try_from(value: &OwnedStruct) -> Result<Self, Self::Error> {
let mut config = ShellConfig::default();
if let Some(elem) = value.get("ui") {
let ui = elem
.as_struct()
.ok_or(usage_error("`ui` should be a struct"))?;
config.ui = UiConfig::try_from(ui)?;
}
if let Some(elem) = value.get("debug") {
let debug = elem
.as_struct()
.ok_or(usage_error("`debug` should be a struct"))?;
config.debug = DebugConfig::try_from(debug)?;
}
if let Some(elem) = value.get("default_ledger") {
config.default_ledger = Some(
elem.as_str()
.ok_or(usage_error("`default_ledger` should be a string"))?
.to_string(),
);
}
if let Some(elem) = value.get("ledgers") {
let ledgers = elem
.as_sequence()
.ok_or(usage_error("`ledgers` should be a list"))?;
let deser: Result<Vec<_>, ShellError> = ledgers
.iter()
.map(|elem| {
let ledger = elem
.as_struct()
.ok_or(usage_error("`ledgers` should be a list of structs"))?;
LedgerConfig::try_from(ledger)
})
.collect();
let deser = deser?;
if !deser.is_empty() {
config.ledgers = Some(deser);
}
}
Ok(config)
}