diff --git a/src/bin/wasm-tools/metadata.rs b/src/bin/wasm-tools/metadata.rs index 364b902d82..7d3546d2e8 100644 --- a/src/bin/wasm-tools/metadata.rs +++ b/src/bin/wasm-tools/metadata.rs @@ -113,6 +113,8 @@ fn write_table(payload: &Payload, f: &mut Box) -> Result<()> { } = payload.metadata(); // Add the basic information to the table first + let name = name.as_deref().unwrap_or(""); + table.add_row(vec!["name", &name]); let kind = match payload { Payload::Component { .. } => "component", Payload::Module(_) => "module", @@ -122,8 +124,6 @@ fn write_table(payload: &Payload, f: &mut Box) -> Result<()> { "range", &format!("0x{:x}..0x{:x}", range.start, range.end), ]); - let name = name.as_deref().unwrap_or(""); - table.add_row(vec!["name", &name]); // Add the OCI annotations to the table if let Some(description) = description { @@ -176,6 +176,18 @@ fn write_table(payload: &Payload, f: &mut Box) -> Result<()> { } } + // Add child relationships to the table + if let Payload::Component { children, .. } = &payload { + for payload in children { + let name = payload.metadata().name.as_deref().unwrap_or(""); + let kind = match payload { + Payload::Component { .. } => "component", + Payload::Module(_) => "module", + }; + table.add_row(vec!["child", &format!("{name} [{kind}]")]); + } + } + // Write the table to the writer writeln!(f, "{table}")?; diff --git a/tests/cli/add-metadata-merge-sections.wat.stdout b/tests/cli/add-metadata-merge-sections.wat.stdout index c6491c6f4c..b3564981c0 100644 --- a/tests/cli/add-metadata-merge-sections.wat.stdout +++ b/tests/cli/add-metadata-merge-sections.wat.stdout @@ -1,12 +1,12 @@ ╭──────────┬───────────╮ │ KIND ┆ VALUE │ ╞══════════╪═══════════╡ +│ name ┆ │ +├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0x0..0x36 │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ │ -├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ language ┆ foo [3] │ ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ language ┆ bar [1] │ diff --git a/tests/cli/add-metadata-overwrite-name.wat.stdout b/tests/cli/add-metadata-overwrite-name.wat.stdout index 3b5e74ed85..b8a8496fbf 100644 --- a/tests/cli/add-metadata-overwrite-name.wat.stdout +++ b/tests/cli/add-metadata-overwrite-name.wat.stdout @@ -1,9 +1,9 @@ ╭───────┬───────────╮ │ KIND ┆ VALUE │ ╞═══════╪═══════════╡ +│ name ┆ foo │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0x0..0x15 │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ foo │ ╰───────┴───────────╯ diff --git a/tests/cli/add-metadata.wat.stdout b/tests/cli/add-metadata.wat.stdout index 3e88493cad..d78adae2a9 100644 --- a/tests/cli/add-metadata.wat.stdout +++ b/tests/cli/add-metadata.wat.stdout @@ -1,12 +1,12 @@ ╭──────────────┬────────────╮ │ KIND ┆ VALUE │ ╞══════════════╪════════════╡ +│ name ┆ foo │ +├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0x0..0x54 │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ foo │ -├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤ │ language ┆ bar [1] │ ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤ │ processed-by ┆ baz [1] │ diff --git a/tests/cli/metadata-add-component.wat.stdout b/tests/cli/metadata-add-component.wat.stdout index f0d29b4070..dec6045f26 100644 --- a/tests/cli/metadata-add-component.wat.stdout +++ b/tests/cli/metadata-add-component.wat.stdout @@ -1,20 +1,22 @@ -╭──────────┬───────────╮ -│ KIND ┆ VALUE │ -╞══════════╪═══════════╡ -│ kind ┆ component │ -├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ range ┆ 0x0..0x65 │ -├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ foo │ -├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ language ┆ foo [1] │ -╰──────────┴───────────╯ +╭──────────┬────────────────────╮ +│ KIND ┆ VALUE │ +╞══════════╪════════════════════╡ +│ name ┆ foo │ +├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ kind ┆ component │ +├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ range ┆ 0x0..0x65 │ +├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ language ┆ foo [1] │ +├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ child ┆ [module] │ +╰──────────┴────────────────────╯ ╭───────┬───────────╮ │ KIND ┆ VALUE │ ╞═══════╪═══════════╡ +│ name ┆ │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0xa..0x31 │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ │ ╰───────┴───────────╯ diff --git a/tests/cli/metadata-component.wat.stdout b/tests/cli/metadata-component.wat.stdout index 5dd1cdb2e5..27421471df 100644 --- a/tests/cli/metadata-component.wat.stdout +++ b/tests/cli/metadata-component.wat.stdout @@ -1,27 +1,31 @@ +╭───────┬────────────────────────────╮ +│ KIND ┆ VALUE │ +╞═══════╪════════════════════════════╡ +│ name ┆ my-name │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ kind ┆ component │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ range ┆ 0x0..0x88 │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ child ┆ submodule [module] │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ +│ child ┆ another submodule [module] │ +╰───────┴────────────────────────────╯ ╭───────┬───────────╮ │ KIND ┆ VALUE │ ╞═══════╪═══════════╡ -│ kind ┆ component │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ range ┆ 0x0..0x88 │ +│ name ┆ submodule │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ my-name │ -╰───────┴───────────╯ -╭───────┬───────────╮ -│ KIND ┆ VALUE │ -╞═══════╪═══════════╡ │ kind ┆ module │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0xa..0x25 │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ submodule │ ╰───────┴───────────╯ ╭───────┬───────────────────╮ │ KIND ┆ VALUE │ ╞═══════╪═══════════════════╡ +│ name ┆ another submodule │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0x27..0x4a │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ another submodule │ ╰───────┴───────────────────╯ diff --git a/tests/cli/metadata.wat.stdout b/tests/cli/metadata.wat.stdout index 4919b01d36..8cc41d314b 100644 --- a/tests/cli/metadata.wat.stdout +++ b/tests/cli/metadata.wat.stdout @@ -1,9 +1,9 @@ ╭───────┬───────────╮ │ KIND ┆ VALUE │ ╞═══════╪═══════════╡ +│ name ┆ │ +├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ kind ┆ module │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ │ range ┆ 0x0..0x8 │ -├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤ -│ name ┆ │ ╰───────┴───────────╯