File tree Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Original file line number Diff line number Diff line change 54
54
"command" : " coderWorkspaces.rebuildWorkspace" ,
55
55
"when" : " view == coderWorkspaces"
56
56
},
57
+ {
58
+ "command" : " coderWorkspaces.showWorkspaceLogs" ,
59
+ "when" : " view == coderWorkspaces"
60
+ },
57
61
{
58
62
"command" : " coderWorkspaces.shutdownWorkspace" ,
59
63
"group" : " inline" ,
98
102
"dark" : " media/dark/refresh.svg"
99
103
}
100
104
},
105
+ {
106
+ "command" : " coderWorkspaces.showWorkspaceLogs" ,
107
+ "title" : " Show Logs"
108
+ },
101
109
{
102
110
"command" : " coderWorkspaces.shutdownWorkspace" ,
103
111
"title" : " Shutdown" ,
Original file line number Diff line number Diff line change @@ -11,10 +11,13 @@ import {
11
11
openWorkspace ,
12
12
shutdownWorkspace ,
13
13
} from "./workspaces"
14
+ import { coderWorkspaceLogsDocumentProvider , handleShowLogsCommand } from "./logs"
14
15
15
16
export function activate ( context : vscode . ExtensionContext ) {
16
17
preflightCheckCoderInstalled ( )
17
18
const workspaceProvider = new CoderWorkspacesProvider ( )
19
+
20
+ vscode . commands . registerCommand ( "coderWorkspaces.showWorkspaceLogs" , handleShowLogsCommand )
18
21
vscode . window . registerTreeDataProvider ( "coderWorkspaces" , workspaceProvider )
19
22
vscode . window . registerTreeDataProvider ( "coderHelpFeedback" , new CoderHelpProvider ( ) )
20
23
vscode . commands . registerCommand ( "coderWorkspaces.openWorkspace" , ( ws : CoderWorkspace ) => {
@@ -33,6 +36,8 @@ export function activate(context: vscode.ExtensionContext) {
33
36
vscode . commands . registerCommand ( "coderWorkspaces.refreshWorkspaces" , ( ) => {
34
37
workspaceProvider . refresh ( )
35
38
} )
39
+
40
+ vscode . workspace . registerTextDocumentContentProvider ( "coder" , coderWorkspaceLogsDocumentProvider )
36
41
}
37
42
38
43
const preflightCheckCoderInstalled = ( ) => {
Original file line number Diff line number Diff line change
1
+ import * as vscode from "vscode"
2
+ import * as cp from "child_process"
3
+ import { CoderWorkspace } from "./workspaces"
4
+
5
+ export const handleShowLogsCommand = async ( { workspace } : { workspace : CoderWorkspace } ) => {
6
+ const uri = vscode . Uri . parse ( "coder:" + workspace . name )
7
+ const doc = await vscode . workspace . openTextDocument ( uri )
8
+ await vscode . window . showTextDocument ( doc , { preview : false } )
9
+ }
10
+
11
+ export const coderWorkspaceLogsDocumentProvider = new ( class implements vscode . TextDocumentContentProvider {
12
+ provideTextDocumentContent ( uri : vscode . Uri ) : string {
13
+ // TODO: add a --no-follow flag for cases where a build is in-progress
14
+ const output = cp . execSync ( `coder envs watch-build ${ uri . fsPath } ` )
15
+ return output . toString ( "utf-8" )
16
+ }
17
+ } ) ( )
You can’t perform that action at this time.
0 commit comments