MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / parse_cli_setting_value

Function parse_cli_setting_value

crates/openshell-cli/src/run.rs:6211–6261  ·  view source on GitHub ↗
(key: &str, raw_value: &str)

Source from the content-addressed store, hash-verified

6209}
6210
6211fn parse_cli_setting_value(key: &str, raw_value: &str) -> Result<SettingValue> {
6212 let setting = settings::setting_for_key(key).ok_or_else(|| {
6213 miette::miette!(
6214 "unknown setting key '{}'. Allowed keys: {}",
6215 key,
6216 settings::registered_keys_csv()
6217 )
6218 })?;
6219
6220 let value = match setting.kind {
6221 SettingValueKind::String => {
6222 // Reject typos client-side so `openshell settings set ...
6223 // proposal_approval_mode autom` errors immediately instead of
6224 // round-tripping through the server. The server enforces the
6225 // same check independently for non-CLI callers.
6226 setting
6227 .validate_string_value(raw_value)
6228 .map_err(|allowed| {
6229 miette::miette!(
6230 "invalid value '{}' for key '{}'; expected one of: {}",
6231 raw_value,
6232 key,
6233 allowed.join(", ")
6234 )
6235 })?;
6236 setting_value::Value::StringValue(raw_value.to_string())
6237 }
6238 SettingValueKind::Int => {
6239 let parsed = raw_value.trim().parse::<i64>().map_err(|_| {
6240 miette::miette!(
6241 "invalid int value '{}' for key '{}'; expected base-10 integer",
6242 raw_value,
6243 key
6244 )
6245 })?;
6246 setting_value::Value::IntValue(parsed)
6247 }
6248 SettingValueKind::Bool => {
6249 let parsed = settings::parse_bool_like(raw_value).ok_or_else(|| {
6250 miette::miette!(
6251 "invalid bool value '{}' for key '{}'; expected one of: true,false,yes,no,1,0",
6252 raw_value,
6253 key
6254 )
6255 })?;
6256 setting_value::Value::BoolValue(parsed)
6257 }
6258 };
6259
6260 Ok(SettingValue { value: Some(value) })
6261}
6262
6263fn format_setting_value(value: Option<&SettingValue>) -> String {
6264 let Some(value) = value.and_then(|v| v.value.as_ref()) else {

Calls 3

setting_for_keyFunction · 0.85
parse_bool_likeFunction · 0.85
validate_string_valueMethod · 0.80