From 3949d4b18d55dc1a4cf2bbb5191207776cdcbf21 Mon Sep 17 00:00:00 2001 From: mohsenari Date: Fri, 27 Sep 2024 17:31:25 -0400 Subject: [PATCH 1/4] Added support for reopen in devbox for cursor and vscodium also removed remote-ssh dependency to allow publishing the extension in open-vsx marketplace --- internal/boxcli/integrate.go | 15 +++++++++------ vscode-extension/package.json | 12 +++++++----- vscode-extension/src/devbox.ts | 13 +++++++++++-- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/internal/boxcli/integrate.go b/internal/boxcli/integrate.go index a6d8191af1b..908c4b0b664 100644 --- a/internal/boxcli/integrate.go +++ b/internal/boxcli/integrate.go @@ -23,6 +23,7 @@ import ( type integrateCmdFlags struct { config configFlags debugmode bool + ideName string } func integrateCmd() *cobra.Command { @@ -45,12 +46,13 @@ func integrateVSCodeCmd() *cobra.Command { command := &cobra.Command{ Use: "vscode", Hidden: true, - Short: "Integrate devbox environment with VSCode.", + Short: "Integrate devbox environment with VSCode or other VSCode-based editors.", RunE: func(cmd *cobra.Command, args []string) error { return runIntegrateVSCodeCmd(cmd, flags) }, } command.Flags().BoolVar(&flags.debugmode, "debugmode", false, "enable debug outputs to a file.") + command.Flags().StringVar(&flags.ideName, "ide", "code", "name of the currently open editor to reopen after it's closed.") flags.config.register(command) return command @@ -65,7 +67,7 @@ func runIntegrateVSCodeCmd(cmd *cobra.Command, flags integrateCmdFlags) error { enabled: flags.debugmode, } // Setup process communication with node as parent - dbug.logToFile("Devbox process initiated. Setting up communication channel with VSCode process") + dbug.logToFile("Devbox process initiated. Setting up communication channel with the code editor process") channel, err := go2node.RunAsNodeChild() if err != nil { dbug.logToFile(err.Error()) @@ -110,7 +112,7 @@ func runIntegrateVSCodeCmd(cmd *cobra.Command, flags integrateCmdFlags) error { }) // Send message to parent process to terminate - dbug.logToFile("Signaling VSCode to close") + dbug.logToFile("Signaling code editor to close") err = channel.Write(&go2node.NodeMessage{ Message: []byte(`{"status": "finished"}`), }) @@ -118,13 +120,14 @@ func runIntegrateVSCodeCmd(cmd *cobra.Command, flags integrateCmdFlags) error { dbug.logToFile(err.Error()) return err } - // Open vscode with devbox shell environment - cmnd := exec.Command("code", message.ConfigDir) + // Open editor with devbox shell environment + ideName := flags.ideName + cmnd := exec.Command(ideName, message.ConfigDir) cmnd.Env = append(cmnd.Env, envVars...) var outb, errb bytes.Buffer cmnd.Stdout = &outb cmnd.Stderr = &errb - dbug.logToFile("Re-opening VSCode in computed devbox environment") + dbug.logToFile("Re-opening code editor in computed devbox environment") err = cmnd.Run() if err != nil { dbug.logToFile(fmt.Sprintf("stdout: %s \n stderr: %s", outb.String(), errb.String())) diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 8e48d6a869a..3bad91114c5 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -2,7 +2,7 @@ "name": "devbox", "displayName": "devbox by Jetify", "description": "devbox integration for VSCode", - "version": "0.1.5", + "version": "0.1.6", "icon": "assets/icon.png", "repository": { "type": "git", @@ -21,9 +21,6 @@ "onStartupFinished" ], "main": "./out/extension.js", - "extensionDependencies": [ - "ms-vscode-remote.remote-ssh" - ], "contributes": { "commands": [ { @@ -133,6 +130,11 @@ "type": "boolean", "default": false, "description": "Enables debug mode for this extension which creates an extension.log in .devbox/ directory. Currently only works for 'Devbox: Reopen in Devbox shell environment' command." + }, + "devbox.executablePath": { + "type": "string", + "default": "${execPath}", + "description": "Location of this code editor's executable." } } } @@ -166,4 +168,4 @@ "node-fetch": "^2", "which": "^3.0.0" } -} +} \ No newline at end of file diff --git a/vscode-extension/src/devbox.ts b/vscode-extension/src/devbox.ts index fd85bd93fa9..2fb61a3784d 100644 --- a/vscode-extension/src/devbox.ts +++ b/vscode-extension/src/devbox.ts @@ -7,6 +7,13 @@ interface Message { status: string } +const appNameBinaryMap: {[key: string]: string} = { + "vscodium": "codium", + // eslint-disable-next-line @typescript-eslint/naming-convention + "visual studio code": "code", + "cursor": "cursor", +}; + export async function devboxReopen() { if (process.platform === 'win32') { const seeDocs = 'See Devbox docs'; @@ -38,7 +45,7 @@ export async function devboxReopen() { await setupDotDevbox(workingDir, dotdevbox); // setup required vscode settings - await logToFile(dotdevbox, 'Updating VSCode configurations'); + await logToFile(dotdevbox, 'Updating editor configurations'); progress.report({ message: 'Updating configurations...', increment: 50 }); updateVSCodeConf(); @@ -49,7 +56,9 @@ export async function devboxReopen() { const devbox = 'devbox'; // run devbox integrate and then close this window const debugModeFlag = workspace.getConfiguration("devbox").get("enableDebugMode"); - let child = spawn(devbox, ['integrate', 'vscode', '--debugmode='+debugModeFlag], { + // name of the currently open editor + const ideName = appNameBinaryMap[env.appName.toLocaleLowerCase()] || 'code'; + let child = spawn(devbox, ['integrate', 'vscode', '--debugmode='+debugModeFlag, '--ide='+ideName], { cwd: workingDir.path, stdio: [0, 1, 2, 'ipc'] }); From 2f79f540ef2cfdac862db6196e4d47b4aae593a4 Mon Sep 17 00:00:00 2001 From: mohsenari Date: Fri, 27 Sep 2024 17:38:25 -0400 Subject: [PATCH 2/4] simplified code --- internal/boxcli/integrate.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/boxcli/integrate.go b/internal/boxcli/integrate.go index 908c4b0b664..46040a0f579 100644 --- a/internal/boxcli/integrate.go +++ b/internal/boxcli/integrate.go @@ -121,8 +121,7 @@ func runIntegrateVSCodeCmd(cmd *cobra.Command, flags integrateCmdFlags) error { return err } // Open editor with devbox shell environment - ideName := flags.ideName - cmnd := exec.Command(ideName, message.ConfigDir) + cmnd := exec.Command(flags.ideName, message.ConfigDir) cmnd.Env = append(cmnd.Env, envVars...) var outb, errb bytes.Buffer cmnd.Stdout = &outb From d0f29eaf36d37d57177bb8983c25071125dba19b Mon Sep 17 00:00:00 2001 From: mohsenari Date: Fri, 27 Sep 2024 17:39:12 -0400 Subject: [PATCH 3/4] emptyline at the end of package.json --- vscode-extension/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vscode-extension/package.json b/vscode-extension/package.json index 3bad91114c5..fb71055f0ca 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -168,4 +168,4 @@ "node-fetch": "^2", "which": "^3.0.0" } -} \ No newline at end of file +} From 51549940b216e122bcf8a163d1162ed6f882486e Mon Sep 17 00:00:00 2001 From: mohsenari Date: Fri, 27 Sep 2024 17:39:45 -0400 Subject: [PATCH 4/4] cleanup --- vscode-extension/package.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/vscode-extension/package.json b/vscode-extension/package.json index fb71055f0ca..29a1a0f0ec6 100644 --- a/vscode-extension/package.json +++ b/vscode-extension/package.json @@ -130,11 +130,6 @@ "type": "boolean", "default": false, "description": "Enables debug mode for this extension which creates an extension.log in .devbox/ directory. Currently only works for 'Devbox: Reopen in Devbox shell environment' command." - }, - "devbox.executablePath": { - "type": "string", - "default": "${execPath}", - "description": "Location of this code editor's executable." } } }