Tweak config table (#3734)

* Tweak config table

* Restore active condition on xtal-frequenc

* Print values using display hint

* Fix clippy lints
This commit is contained in:
Dániel Buga 2025-07-02 12:11:54 +02:00 committed by GitHub
parent b76a738263
commit a7798f6902
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 32 additions and 29 deletions

View File

@ -145,7 +145,7 @@ fn parse_configs(
chip_from_args: Option<esp_metadata::Chip>,
config_file: Option<&str>,
) -> Result<Vec<CrateConfig>, Box<dyn Error>> {
let config_toml_path = path.join(config_file.as_deref().unwrap_or(DEFAULT_CONFIG_PATH));
let config_toml_path = path.join(config_file.unwrap_or(DEFAULT_CONFIG_PATH));
let config_toml_content = std::fs::read_to_string(config_toml_path)?;
let config_toml = config_toml_content.as_str().parse::<DocumentMut>()?;

View File

@ -28,10 +28,10 @@ impl Item {
match self {
Item::TopLevel(crate_name) => crate_name.clone(),
Item::CrateLevel(config_option) => {
let display_value = format_using_display_hint(
&config_option.actual_value,
&config_option.option.display_hint,
);
let display_value = config_option
.option
.display_hint
.format_value(&config_option.actual_value);
let default_indicator =
if config_option.actual_value == config_option.option.default_value {
ui_elements.default_value
@ -81,24 +81,11 @@ impl Item {
fn display_hint(&self) -> DisplayHint {
match self {
Item::TopLevel(_) => unreachable!(),
Item::CrateLevel(config_option) => config_option.option.display_hint.clone(),
Item::CrateLevel(config_option) => config_option.option.display_hint,
}
}
}
fn format_using_display_hint(value: &Value, hint: &DisplayHint) -> String {
match value {
Value::Bool(b) => b.to_string(),
Value::Integer(i) => match hint {
DisplayHint::None => format!("{}", i),
DisplayHint::Binary => format!("0b{:0b}", i),
DisplayHint::Hex => format!("0x{:x}", i),
DisplayHint::Octal => format!("0o{:o}", i),
},
Value::String(s) => s.clone(),
}
}
impl Repository {
pub fn new(options: Vec<crate::CrateConfig>) -> Self {
Self {
@ -474,11 +461,10 @@ impl App<'_> {
self.handle_error(set_res);
}
Value::Integer(_) => {
let display_value = format_using_display_hint(
&current,
&self.repository.current_level()[selected]
.display_hint(),
);
let display_value = self.repository.current_level()
[selected]
.display_hint()
.format_value(&current);
self.textarea =
make_text_area(&display_value, &self.colors);
self.editing_constraints = constraint;

View File

@ -3,8 +3,8 @@ use std::fmt::Write;
use crate::{ConfigOption, Value};
pub(crate) const DOC_TABLE_HEADER: &str = r#"
| Name | Description | Default&nbsp;value | Allowed&nbsp;value |
|------|-------------|--------------------|--------------------|
| Option | Stability | Default&nbsp;value | Allowed&nbsp;values |
|--------|:---------:|:------------------:|:-------------------:|
"#;
pub(crate) const SELECTED_TABLE_HEADER: &str = r#"
@ -21,11 +21,11 @@ pub(crate) fn write_doc_table_line(mut table: impl Write, name: &str, option: &C
writeln!(
table,
"| <p>{key}</p><p>{stability}</p> | <p>{description}</p> | <center>{default}</center> | <center>{allowed}</center>",
"| <p>**{key}**</p> <p>{description}</p> | {stability} | {default} | {allowed}",
description = option.description,
key = name,
stability = option.stability,
default = option.default_value,
default = option.display_hint.format_value(&option.default_value),
allowed = allowed_values
)
.unwrap();

View File

@ -440,7 +440,7 @@ impl Display for Stability {
}
/// A display hint (for tooling only)
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
pub enum DisplayHint {
/// No display hint
None,
@ -455,6 +455,22 @@ pub enum DisplayHint {
Octal,
}
impl DisplayHint {
/// Converts a [Value] to String applying the correct display hint.
pub fn format_value(self, value: &Value) -> String {
match value {
Value::Bool(b) => b.to_string(),
Value::Integer(i) => match self {
DisplayHint::None => format!("{i}"),
DisplayHint::Binary => format!("0b{i:0b}"),
DisplayHint::Hex => format!("0x{i:X}"),
DisplayHint::Octal => format!("0o{i:o}"),
},
Value::String(s) => s.clone(),
}
}
}
/// A configuration option.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct ConfigOption {

View File

@ -55,6 +55,7 @@ options:
validator: enumeration
value:
- '32'
active: 'chip == "esp32" || chip == "esp32c2"'
- name: spi-address-workaround
description: "Enables a workaround for the issue where SPI in