Add open_recent option to VS Code desktop (#248)
This commit is contained in:
@@ -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",
|
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user