features generate-docs: `$` sequences in NOTES.md and descriptions are expanded as String.replace patterns, splicing the README template into the output
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 82/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
- Bereich
- cli
Rechercherichtung
Das Template wird in src/spec-node/collectionCommonUtils/generateDocsCommandImpl.ts um die Zeilen 170–182 gefüllt, wo .replace() mit String-Werten aufgerufen wird. Ersetze diese Aufrufe für benutzerseitige Inhalte (Notizen, Name, Beschreibung, Optionsbeschreibungen) durch eine Replacer-Funktion und führe dann den Repro erneut aus: Eine NOTES.md mit $ sollte wörtlich in der generierten README.md erscheinen, ohne zweite Kopie des Templates. Fertig, wenn die Ausgabe dem erwarteten Text entspricht und auch $', $& und $$ unverändert durchkommen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
If a Feature's NOTES.md contains $` (for example the markdown `$`), the generated README.md gets a second copy of the README template at that point: the title, the description, and an "Example Usage" block with literal #{Registry}/#{Namespace}/<id>:#{Version} and #{Customizations}. $', $& and $$ also misbehave, and so do name, description and option descriptions in devcontainer-feature.json.
Repro (CLI 0.89.0; same on main at 155f8b2)
mkdir -p src/demo
echo '{ "id": "demo", "version": "1.0.0", "name": "Demo", "description": "A demo." }' > src/demo/devcontainer-feature.json
echo 'Escape quotes, `$` or backslashes.' > src/demo/NOTES.md
devcontainer features generate-docs -p src -n x/y
- Expected:
Escape quotes, `$` or backslashes. - Actual:
Escape quotes, `, then the template copy (# Demo (demo),## Example Usage,#{Registry}/#{Namespace}/demo:#{Version},#{Customizations}), then` or backslashes.
Cause
src/spec-node/collectionCommonUtils/generateDocsCommandImpl.ts:170-182 fills the template with .replace('#{…}', value). With a string replacement, String.prototype.replace expands $`, $', $& and $$ (MDN). The same code is in devcontainers/action src/generateDocs.ts:152-162.
Suggested fix
Pass a replacer function, as in .replace('#{Notes}', () => generateNotesMarkdown()), for every placeholder that takes user content.
Not the same as #1324, which is about how option values are sourced at build time.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3k
- Forks
- 462
- Ø Merge
- 13 Std. 28 Min.
- Gemergte PRs (30 T.)
- 2
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus devcontainers/cli
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
devcontainers/cli#1203 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 68/100
devcontainers/cli#1178 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 45/100
devcontainers/cli#1324 ·
Maintainer antworten meist innerhalb von 1 Tag
-
`devcontainer build` fails on Buildx 0.37.2 because the generated Dockerfile is outside the Compose bake contextEvtl. vergeben @v-Kaniska244 hat das vor 5 Tagen übernommen. Offen
devcontainers/cli#1320 · 2 Reaktionen · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
devcontainers/cli#1319 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in devcontainers/cli
Ähnliche Issues
-
area:tui enhancement platform:macos
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
anthropics/claude-code#101490 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
netlify/netlify-mcp#75 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
atlassian-labs/compiled#1960 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
pnp/cli-microsoft365#7639 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
nextjs-tracking
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
cloudflare/vinext#3887 ·
Maintainer antworten meist innerhalb von 1 Tag