diff --git a/.changeset/slimy-owls-matter.md b/.changeset/slimy-owls-matter.md new file mode 100644 index 00000000..201949c6 --- /dev/null +++ b/.changeset/slimy-owls-matter.md @@ -0,0 +1,5 @@ +--- +"chainlink-deployments-framework": patch +--- + +fix(mcms): render proposal parameters in collapsible code blocks diff --git a/engine/cld/mcms/proposalanalysis/engine_test.go b/engine/cld/mcms/proposalanalysis/engine_test.go index 491f5222..9d652a93 100644 --- a/engine/cld/mcms/proposalanalysis/engine_test.go +++ b/engine/cld/mcms/proposalanalysis/engine_test.go @@ -277,32 +277,40 @@ func TestAnalyzerEngineE2E_RunAndRenderMarkdown(t *testing.T) { }, analyzed) require.NoError(t, err) - expected := `## Proposal — mcms (staging) - - - -_Annotations:_ -- proposal.note: generated by analyzer - -
-

Batch 1 — ethereum-testnet-sepolia (16015286601757825753)

- - -#### Call 1 - -- [ ] ` + "`native_transfer`" + ` - -**Target:** ` + "`0x1234567890123456789012345678901234567890`" + ` - -**Inputs:** - -- **` + "`recipient`" + `** (` + "`AddressField`" + `): 0x1234567890123456789012345678901234567890 -- **` + "`amount_wei`" + `** (` + "`SimpleField`" + `): 1000000000000000000 -- **` + "`amount_eth`" + `** (` + "`SimpleField`" + `): 1.000000000000000000 - - -
-` + expected := "## Proposal — mcms (staging)\n\n\n\n" + + "_Annotations:_\n" + + "- proposal.note: generated by analyzer\n\n" + + "
\n" + + "

Batch 1 — ethereum-testnet-sepolia (16015286601757825753)

\n\n\n" + + "#### Call 1\n\n" + + "- [ ] `native_transfer`\n\n" + + "**Target:** `0x1234567890123456789012345678901234567890`\n\n" + + "**Inputs:**\n\n" + + "- **`recipient`** (`AddressField`):\n" + + "
\n" + + " Value\n" + + "\n" + + " ```text\n" + + " 0x1234567890123456789012345678901234567890\n" + + " ```\n" + + "
\n" + + "- **`amount_wei`** (`SimpleField`):\n" + + "
\n" + + " Value\n" + + "\n" + + " ```text\n" + + " 1000000000000000000\n" + + " ```\n" + + "
\n" + + "- **`amount_eth`** (`SimpleField`):\n" + + "
\n" + + " Value\n" + + "\n" + + " ```text\n" + + " 1.000000000000000000\n" + + " ```\n" + + "
\n\n\n" + + "
\n" require.Equal(t, expected, out.String()) } diff --git a/engine/cld/mcms/proposalanalysis/examples/ccip/analyzers/tokenpool/testdata/golden_markdown.md b/engine/cld/mcms/proposalanalysis/examples/ccip/analyzers/tokenpool/testdata/golden_markdown.md index 9f9f8afd..545bf3f9 100644 --- a/engine/cld/mcms/proposalanalysis/examples/ccip/analyzers/tokenpool/testdata/golden_markdown.md +++ b/engine/cld/mcms/proposalanalysis/examples/ccip/analyzers/tokenpool/testdata/golden_markdown.md @@ -13,8 +13,22 @@ **Inputs:** -- **`remoteChainSelectorsToRemove`** (`uint64[]`): -- **`chainsToAdd`** (`tuple[]`): (decoded) +- **`remoteChainSelectorsToRemove`** (`uint64[]`): +
+ Value + + ```text + + ``` +
+- **`chainsToAdd`** (`tuple[]`): +
+ Value + + ```text + (decoded) + ``` +
**Changes:** @@ -41,8 +55,22 @@ _Annotations:_ **Inputs:** -- **`remoteChainSelectorsToRemove`** (`uint64[]`): [ 3734025351759498498 ] -- **`chainsToAdd`** (`tuple[]`): +- **`remoteChainSelectorsToRemove`** (`uint64[]`): +
+ Value + + ```text + [ 3734025351759498498 ] + ``` +
+- **`chainsToAdd`** (`tuple[]`): +
+ Value + + ```text + + ``` +
_Annotations:_ diff --git a/engine/cld/mcms/proposalanalysis/renderer/funcmap.go b/engine/cld/mcms/proposalanalysis/renderer/funcmap.go index 723539be..b84496c7 100644 --- a/engine/cld/mcms/proposalanalysis/renderer/funcmap.go +++ b/engine/cld/mcms/proposalanalysis/renderer/funcmap.go @@ -34,7 +34,6 @@ func defaultFuncMap() template.FuncMap { "diffAnnotations": diffAnnotations, "renderDiff": renderDiff, "formatParam": formatParam, - "hasNewline": hasNewline, "indentLines": indentLines, "formatAnnotationValue": formatAnnotationValue, "resolveChainSelector": resolveChainSelector, @@ -87,10 +86,6 @@ func formatParam(param analyzer.AnalyzedParameter) string { return v } -func hasNewline(s string) bool { - return strings.Contains(s, "\n") -} - func indentLines(s, prefix string) string { if s == "" { return "" diff --git a/engine/cld/mcms/proposalanalysis/renderer/templates/markdown/parameter.tmpl b/engine/cld/mcms/proposalanalysis/renderer/templates/markdown/parameter.tmpl index 67ef817e..b5466cc3 100644 --- a/engine/cld/mcms/proposalanalysis/renderer/templates/markdown/parameter.tmpl +++ b/engine/cld/mcms/proposalanalysis/renderer/templates/markdown/parameter.tmpl @@ -1,13 +1,13 @@ {{- define "parameter" -}} {{- $formatted := formatParam . -}} -{{- if hasNewline $formatted -}} - **`{{ .Name }}`** (`{{ .Type }}`): +
+ Value + ```text {{ indentLines $formatted " " }} ``` -{{- else -}} -- **`{{ .Name }}`** (`{{ .Type }}`): {{ $formatted }} -{{- end -}} +
{{- if hasDisplayAnnotations .Annotations -}} {{- range .Annotations -}} {{- if not (isFrameworkAnnotation .Name) }} diff --git a/engine/cld/mcms/proposalanalysis/renderer/testdata/golden_markdown.md b/engine/cld/mcms/proposalanalysis/renderer/testdata/golden_markdown.md index 28e6e694..52937d53 100644 --- a/engine/cld/mcms/proposalanalysis/renderer/testdata/golden_markdown.md +++ b/engine/cld/mcms/proposalanalysis/renderer/testdata/golden_markdown.md @@ -17,12 +17,43 @@ _Annotations:_ **Inputs:** -- **`target`** (`address`): 0xAbCdEf1234567890abcdef1234567890abcdef12 +- **`target`** (`address`): +
+ Value + + ```text + 0xAbCdEf1234567890abcdef1234567890abcdef12 + ``` +
- _label: destination contract_ -- **`amount`** (`uint256`): 1,000,000,000,000,000,000 -- **`enabled`** (`bool`): true -- **`proof`** (`bytes`): 0xdeadbeef +- **`amount`** (`uint256`): +
+ Value + + ```text + 1,000,000,000,000,000,000 + ``` +
+- **`enabled`** (`bool`): +
+ Value + + ```text + true + ``` +
+- **`proof`** (`bytes`): +
+ Value + + ```text + 0xdeadbeef + ``` +
- **`destChainConfigArgs`** (`((uint64,(bool,uint16,uint32,uint32,uint32,uint8,uint8,uint16,uint32,uint16,uint16,bytes4,bool,uint16,uint32,uint32,uint64,uint32,uint32))[])`): +
+ Value + ```text [ { @@ -51,6 +82,7 @@ _Annotations:_ } ] ``` +
- _note: multi-chain destination configuration_ @@ -71,8 +103,22 @@ _Annotations:_ **Inputs:** -- **`to`** (`address`): 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef -- **`value`** (`uint256`): 500 +- **`to`** (`address`): +
+ Value + + ```text + 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef + ``` +
+- **`value`** (`uint256`): +
+ Value + + ```text + 500 + ``` +