Skip to content

Commit 41a3d87

Browse files
committed
feat: add inspect command
1 parent b3bedd4 commit 41a3d87

File tree

6 files changed

+55
-6
lines changed

6 files changed

+55
-6
lines changed

.vscodeignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
out/**
44
src/**
55
.gitignore
6-
.yarnrc
7-
vsc-extension-quickstart.md
86
**/tsconfig.json
97
**/.eslintrc.json
108
**/*.map

package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
"command": "coderWorkspaces.showWorkspaceLogs",
5959
"when": "view == coderWorkspaces"
6060
},
61+
{
62+
"command": "coderWorkspaces.showWorkspaceYaml",
63+
"when": "view == coderWorkspaces"
64+
},
6165
{
6266
"command": "coderWorkspaces.shutdownWorkspace",
6367
"group": "inline",
@@ -106,6 +110,10 @@
106110
"command": "coderWorkspaces.showWorkspaceLogs",
107111
"title": "Show Logs"
108112
},
113+
{
114+
"command": "coderWorkspaces.showWorkspaceYaml",
115+
"title": "Inspect"
116+
},
109117
{
110118
"command": "coderWorkspaces.shutdownWorkspace",
111119
"title": "Shutdown",
@@ -153,5 +161,8 @@
153161
"vscode-test": "^1.5.0",
154162
"webpack": "^5.19.0",
155163
"webpack-cli": "^4.4.0"
164+
},
165+
"dependencies": {
166+
"yaml": "^1.10.0"
156167
}
157168
}

src/extension.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,21 @@ import {
1212
shutdownWorkspace,
1313
CoderWorkspaceListItem,
1414
} from "./workspaces"
15-
import { coderWorkspaceLogsDocumentProvider, handleShowLogsCommand } from "./logs"
15+
import {
16+
coderWorkspaceInspectDocumentProvider,
17+
coderWorkspaceLogsDocumentProvider,
18+
handleInspectCommand,
19+
handleShowLogsCommand,
20+
} from "./logs"
1621

1722
export function activate(context: vscode.ExtensionContext) {
1823
preflightCheckCoderInstalled()
1924

2025
const workspaceProvider = new CoderWorkspacesProvider()
2126

2227
vscode.commands.registerCommand("coderWorkspaces.showWorkspaceLogs", handleShowLogsCommand)
28+
vscode.commands.registerCommand("coderWorkspaces.showWorkspaceYaml", handleInspectCommand)
29+
2330
vscode.window.registerTreeDataProvider("coderWorkspaces", workspaceProvider)
2431
vscode.window.registerTreeDataProvider("coderHelpFeedback", new CoderHelpProvider())
2532
vscode.commands.registerCommand("coderWorkspaces.openWorkspace", (item: CoderWorkspaceListItem) => {
@@ -39,7 +46,8 @@ export function activate(context: vscode.ExtensionContext) {
3946
workspaceProvider.refresh()
4047
})
4148

42-
vscode.workspace.registerTextDocumentContentProvider("coder", coderWorkspaceLogsDocumentProvider)
49+
vscode.workspace.registerTextDocumentContentProvider("coder-logs", coderWorkspaceLogsDocumentProvider)
50+
vscode.workspace.registerTextDocumentContentProvider("coder-inspect", coderWorkspaceInspectDocumentProvider)
4351
}
4452

4553
const preflightCheckCoderInstalled = () => {

src/logs.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import * as vscode from "vscode"
22
import * as cp from "child_process"
33
import { CoderWorkspace } from "./workspaces"
4+
import * as yaml from "yaml"
45

56
export const handleShowLogsCommand = async ({ workspace }: { workspace: CoderWorkspace }) => {
6-
const uri = vscode.Uri.parse("coder:" + workspace.name)
7+
const uri = vscode.Uri.parse("coder-logs:" + workspace.name)
78
const doc = await vscode.workspace.openTextDocument(uri)
89
await vscode.window.showTextDocument(doc, { preview: false })
910
}
@@ -15,3 +16,19 @@ export const coderWorkspaceLogsDocumentProvider = new (class implements vscode.T
1516
return output.toString("utf-8")
1617
}
1718
})()
19+
20+
export const handleInspectCommand = async ({ workspace }: { workspace: CoderWorkspace }) => {
21+
const uri = vscode.Uri.parse("coder-inspect:" + workspace.name + ".yaml")
22+
const doc = await vscode.workspace.openTextDocument(uri)
23+
await vscode.window.showTextDocument(doc, { preview: false })
24+
}
25+
26+
export const coderWorkspaceInspectDocumentProvider = new (class implements vscode.TextDocumentContentProvider {
27+
provideTextDocumentContent(uri: vscode.Uri): string {
28+
// TODO: add a --no-follow flag for cases where a build is in-progress
29+
const output = cp.execSync(`coder envs ls --output json`)
30+
const envs: CoderWorkspace[] = JSON.parse(output.toString())
31+
const env = envs.find((e) => e.name === uri.fsPath.replace(".yaml", ""))!
32+
return yaml.stringify(env)
33+
}
34+
})()

src/workspaces.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import * as vscode from "vscode"
2-
import * as cp from "child_process"
32
import * as path from "path"
43
import { exec, mediaDir, execJSON } from "./utils"
54

0 commit comments

Comments
 (0)