devcontainers / devcontainers/cli

Read configuration outputs logs as well as configuration

Open
#873 1 comment 0 reactions 0 assignees View on GitHub
info-needed
Dominant language
TypeScript
Stars
3k
Forks
457
Avg merge
13h 17m
Merged PRs (30d)
6

Description

When running `devcontainer read-configuration --include-merged-configuration --log-format json --workspace-folder ../workspace 2>/dev/null > server/configuration.json` as suggested in the example usage folder, it outputs logs in json format, then at the end, the JSON configuration. Similarly if I remove `--log-format json` .

Example output:
```json
{"type":"text","level":3,"timestamp":1724085707436,"text":"@devcontainers/cli 0.65.0. Node.js v20.14.0. darwin 24.1.0 arm64."}
{"type":"start","level":2,"timestamp":1724085707436,"text":"Run: git rev-parse --show-cdup"}
{"type":"stop","level":2,"timestamp":1724085707448,"text":"Run: git rev-parse --show-cdup","startTimestamp":1724085707436}
{"type":"start","level":2,"timestamp":1724085707449,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/DEVCONTAINER_CLI_PATH/workspace/.devcontainer/devcontainer.json"}
{"type":"stop","level":2,"timestamp":1724085707476,"text":"Run: docker ps -q -a --filter label=devcontainer.local_folder=/DEVCONTAINER_CLI_PATH/workspace/.devcontainer/devcontainer.json","startTimestamp":1724085707449}
{"type":"start","level":2,"timestamp":1724085707476,"text":"Run: docker inspect --type container a183f5305ed0"}
{"type":"stop","level":2,"timestamp":1724085707503,"text":"Run: docker inspect --type container a183f5305ed0","startTimestamp":1724085707476}
{"configuration":{"name":"devcontainer CLI Demo","build":{"dockerfile":"Dockerfile"},"customizations":{"vscode":{"extensions":["streetsidesoftware.code-spell-checker","mutantdino.resourcemonitor"],"settings":{"resmon.show.battery":false,"resmon.show.cpufreq":false}},"openvscodeserver":{"extensions":["streetsidesoftware.code-spell-checker"],"settings":{}}},"features":{"ghcr.io/devcontainers/features/go:1":{"version":"1.18.4"},"ghcr.io/devcontainers/features/node:1":{"version":"16.15.1","nodeGypDependencies":false},"ghcr.io/devcontainers/features/desktop-lite:1":{},"ghcr.io/devcontainers/features/docker-in-docker:2":{},"ghcr.io/devcontainers/features/sshd:1":{}},"appPort":["127.0.0.1:2222:2222",8000,6080],"remoteUser":"vscode","configFilePath":{"$mid":1,"fsPath":"/Users/tjs/Documents/.coding/open-source-repl/data/templates/workspace/.devcontainer/devcontainer.json","path":"/Users/tjs/Documents/.coding/open-source-repl/data/templates/workspace/.devcontainer/devcontainer.json","scheme":"vscode-fileHost"}},"workspace":{"workspaceFolder":"/workspaces/.coding/open-source-repl/data/templates/workspace","workspaceMount":"type=bind,source=/Users/tjs/Documents/.coding,target=/workspaces/.coding,consistency=consistent"},"mergedConfiguration":{"name":"devcontainer CLI Demo","build":{"dockerfile":"Dockerfile"},"features":{"ghcr.io/devcontainers/features/go:1":{"version":"1.18.4"},"ghcr.io/devcontainers/features/node:1":{"version":"16.15.1","nodeGypDependencies":false},"ghcr.io/devcontainers/features/desktop-lite:1":{},"ghcr.io/devcontainers/features/docker-in-docker:2":{},"ghcr.io/devcontainers/features/sshd:1":{}},"appPort":["127.0.0.1:2222:2222",8000,6080],"remoteUser":"vscode","configFilePath":{"$mid":1,"fsPath":"/Users/tjs/Documents/.coding/open-source-repl/data/templates/workspace/.devcontainer/devcontainer.json","path":"/Users/tjs/Documents/.coding/open-source-repl/data/templates/workspace/.devcontainer/devcontainer.json","scheme":"vscode-fileHost"},"init":true,"privileged":true,"capAdd":["SYS_PTRACE"],"securityOpt":["seccomp=unconfined"],"entrypoints":["/usr/local/share/desktop-init.sh","/usr/local/share/docker-init.sh","/usr/local/share/ssh-init.sh"],"mounts":[{"source":"dind-var-lib-docker-1r24dt41uav7vdhklt8d2bd3dnr3h8f1hftte0fss9ufcg2rom8j","target":"/var/lib/docker","type":"volume"}],"customizations":{"vscode":[{"extensions":["ms-azuretools.vscode-docker"]},{"extensions":["golang.Go"]},{"extensions":["dbaeumer.vscode-eslint"]},{"extensions":["streetsidesoftware.code-spell-checker","mutantdino.resourcemonitor"],"settings":{"resmon.show.battery":false,"resmon.show.cpufreq":false}}],"openvscodeserver":[{"extensions":["streetsidesoftware.code-spell-checker"],"settings":{}}]},"onCreateCommands":[],"updateContentCommands":[],"postCreateCommands":[],"postStartCommands":[],"postAttachCommands":[],"remoteEnv":{},"containerEnv":{},"portsAttributes":{}}}

```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the `devcontainer read-configuration --include-merged-configuration --log-format json` command from the example usage, including its redirected output, then trace the read-configuration CLI entry point and its output handling. Confirm whether logs and configuration are intentionally combined, and define completion as output that matches the command's documented example without the reported ambiguity.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.