Add open_recent option to VS Code desktop (#248)

pull/254/head
Asher 11 months ago committed by GitHub
parent 0d7bc37f9c
commit beaa33b682
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -18,13 +18,55 @@ describe("vscode-desktop", async () => {
agent_id: "foo", agent_id: "foo",
}); });
expect(state.outputs.vscode_url.value).toBe( expect(state.outputs.vscode_url.value).toBe(
"vscode://coder.coder-remote/open?owner=default&workspace=default&token=$SESSION_TOKEN", "vscode://coder.coder-remote/open?owner=default&workspace=default&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
); );
const resources: any = state.resources; const resources: any = state.resources;
expect(resources[1].instances[0].attributes.order).toBeNull(); expect(resources[1].instances[0].attributes.order).toBeNull();
}); });
it("adds folder", async () => {
const state = await runTerraformApply(import.meta.dir, {
agent_id: "foo",
folder: "/foo/bar",
});
expect(state.outputs.vscode_url.value).toBe(
"vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
);
});
it("adds folder and open_recent", async () => {
const state = await runTerraformApply(import.meta.dir, {
agent_id: "foo",
folder: "/foo/bar",
open_recent: true,
});
expect(state.outputs.vscode_url.value).toBe(
"vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&openRecent&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
);
});
it("adds folder but not open_recent", async () => {
const state = await runTerraformApply(import.meta.dir, {
agent_id: "foo",
folder: "/foo/bar",
openRecent: false,
});
expect(state.outputs.vscode_url.value).toBe(
"vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
);
});
it("adds open_recent", async () => {
const state = await runTerraformApply(import.meta.dir, {
agent_id: "foo",
open_recent: true,
});
expect(state.outputs.vscode_url.value).toBe(
"vscode://coder.coder-remote/open?owner=default&workspace=default&openRecent&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
);
});
it("expect order to be set", async () => { it("expect order to be set", async () => {
const state = await runTerraformApply(import.meta.dir, { const state = await runTerraformApply(import.meta.dir, {
agent_id: "foo", agent_id: "foo",

@ -20,6 +20,12 @@ variable "folder" {
default = "" default = ""
} }
variable "open_recent" {
type = bool
description = "Open the most recent workspace or folder. Falls back to the folder if there is no recent workspace or folder to open."
default = false
}
variable "order" { variable "order" {
type = number type = number
description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)." description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)."
@ -35,22 +41,17 @@ resource "coder_app" "vscode" {
slug = "vscode" slug = "vscode"
display_name = "VS Code Desktop" display_name = "VS Code Desktop"
order = var.order order = var.order
url = var.folder != "" ? join("", [ url = join("", [
"vscode://coder.coder-remote/open?owner=", "vscode://coder.coder-remote/open",
"?owner=",
data.coder_workspace.me.owner, data.coder_workspace.me.owner,
"&workspace=", "&workspace=",
data.coder_workspace.me.name, data.coder_workspace.me.name,
"&folder=", var.folder != "" ? join("", ["&folder=", var.folder]) : "",
var.folder, var.open_recent ? "&openRecent" : "",
"&url=", "&url=",
data.coder_workspace.me.access_url, data.coder_workspace.me.access_url,
"&token=$SESSION_TOKEN", "&token=$SESSION_TOKEN",
]) : join("", [
"vscode://coder.coder-remote/open?owner=",
data.coder_workspace.me.owner,
"&workspace=",
data.coder_workspace.me.name,
"&token=$SESSION_TOKEN",
]) ])
} }

Loading…
Cancel
Save