From 9c462c0e2be0ca9d7e177d9c22e361f0c5f5b8b6 Mon Sep 17 00:00:00 2001 From: Joe Previte Date: Mon, 10 May 2021 16:27:47 -0700 Subject: [PATCH] chore: update CHANGELOG --- CHANGELOG.md | 27 ++++++++++++++++++++- src/node/socket.ts | 2 +- src/node/util.ts | 48 +++++++++++++++++++++---------------- test/unit/node/util.test.ts | 9 +++---- 4 files changed, 59 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0deca6a63eac..4957d4c2c1d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,16 @@ # Changelog - [Changelog](#changelog) - - [3.10.0](#3100) + - [3.11.0](#3110) - [New Features](#new-features) - [Bug Fixes](#bug-fixes) - [Documentation](#documentation) - [Development](#development) + - [3.10.0](#3100) + - [New Features](#new-features-1) + - [Bug Fixes](#bug-fixes-1) + - [Documentation](#documentation-1) + - [Development](#development-1) - [Previous versions](#previous-versions) @@ -47,6 +52,26 @@ VS Code v0.00.0 --> +## 3.11.0 + +VS Code v1.56 + +### New Features + +- item + +### Bug Fixes + +- fix(socket): use xdgBasedir.runtime instead of tmp #3304 @jsjoeio + +## Documentation + +- item + +## Development + +- item + ## 3.10.0 VS Code v1.56 diff --git a/src/node/socket.ts b/src/node/socket.ts index 39f23dfbe1ee..1651046d02b2 100644 --- a/src/node/socket.ts +++ b/src/node/socket.ts @@ -76,7 +76,7 @@ export class SocketProxyProvider { .then((pipe) => { this.proxyPipe = pipe return Promise.all([ - fs.mkdir(paths.runtime, { recursive: true }), + fs.mkdir(path.dirname(this.proxyPipe), { recursive: true }), fs.rmdir(this.proxyPipe, { recursive: true }), ]) }) diff --git a/src/node/util.ts b/src/node/util.ts index 2633d3d5c1fa..f1882471d969 100644 --- a/src/node/util.ts +++ b/src/node/util.ts @@ -7,9 +7,8 @@ import * as os from "os" import * as path from "path" import * as util from "util" import xdgBasedir from "xdg-basedir" -import { tmpdir } from "./constants" -interface Paths { +export interface Paths { data: string config: string runtime: string @@ -23,26 +22,33 @@ export const paths = getEnvPaths() * ones. Most CLIs do this as in practice only GUI apps use the standard macOS directories. */ export function getEnvPaths(): Paths { - let paths: Paths - if (process.platform === "win32") { - paths = { - ...envPaths("code-server", { - suffix: "", - }), - runtime: tmpdir, - } - } else { - if (xdgBasedir.data === undefined || xdgBasedir.config === undefined) { - throw new Error("No home folder?") - } - paths = { - data: path.join(xdgBasedir.data, "code-server"), - config: path.join(xdgBasedir.config, "code-server"), - runtime: xdgBasedir.runtime ? path.join(xdgBasedir.runtime, "code-server") : tmpdir, - } + const paths = envPaths("code-server", { suffix: "" }) + const append = (p: string): string => path.join(p, "code-server") + switch (process.platform) { + case "darwin": + return { + // envPaths uses native directories so force Darwin to use the XDG spec + // to align with other CLI tools. + data: xdgBasedir.data ? append(xdgBasedir.data) : paths.data, + config: xdgBasedir.config ? append(xdgBasedir.config) : paths.config, + // Fall back to temp if there is no runtime dir. + runtime: xdgBasedir.runtime ? append(xdgBasedir.runtime) : paths.temp, + } + case "win32": + return { + data: paths.data, + config: paths.config, + // Windows doesn't have a runtime dir. + runtime: paths.temp, + } + default: + return { + data: paths.data, + config: paths.config, + // Fall back to temp if there is no runtime dir. + runtime: xdgBasedir.runtime ? append(xdgBasedir.runtime) : paths.temp, + } } - - return paths } /** diff --git a/test/unit/node/util.test.ts b/test/unit/node/util.test.ts index e26add808482..0c5827549509 100644 --- a/test/unit/node/util.test.ts +++ b/test/unit/node/util.test.ts @@ -1,10 +1,11 @@ -import { getEnvPaths } from "../../../src/node/util" +import { getEnvPaths, Paths } from "../../../src/node/util" describe("getEnvPaths", () => { it("should return an object with the data, config and runtime path", () => { const actualPaths = getEnvPaths() - expect(actualPaths.hasOwnProperty("data")).toBe(true) - expect(actualPaths.hasOwnProperty("config")).toBe(true) - expect(actualPaths.hasOwnProperty("runtime")).toBe(true) + const expectedProperties = ["data", "config", "runtime"] + expectedProperties.forEach((property) => { + expect(actualPaths[property as keyof Paths]).toBeDefined() + }) }) })