Skip to content

Commit 402fd51

Browse files
foresthoffmankylecarbs
authored andcommitted
Adhere to XDG base directory spec for dataDir and logDir (#156)
1 parent fa54af0 commit 402fd51

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

packages/server/src/cli.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { requireModule, requireFork, forkModule } from "./vscode/bootstrapFork";
1212
import { SharedProcess, SharedProcessState } from "./vscode/sharedProcess";
1313
import { setup as setupNativeModules } from "./modules";
1414
import { fillFs } from "./fill";
15-
import { isCli, serveStatic, buildDir } from "./constants";
15+
import { isCli, serveStatic, buildDir, dataHome, cacheHome } from "./constants";
1616
import opn = require("opn");
1717

1818
export class Entry extends Command {
@@ -49,7 +49,7 @@ export class Entry extends Command {
4949
}
5050

5151
const { args, flags } = this.parse(Entry);
52-
const dataDir = path.resolve(flags["data-dir"] || path.join(os.homedir(), ".code-server"));
52+
const dataDir = path.resolve(flags["data-dir"] || path.join(dataHome, "code-server"));
5353
const workingDir = path.resolve(args["workdir"]);
5454

5555
setupNativeModules(dataDir);
@@ -81,7 +81,11 @@ export class Entry extends Command {
8181
fs.mkdirSync(dataDir);
8282
}
8383

84-
const logDir = path.join(dataDir, "logs", new Date().toISOString().replace(/[-:.TZ]/g, ""));
84+
if (!fs.existsSync(cacheHome)) {
85+
fs.mkdirSync(cacheHome);
86+
}
87+
88+
const logDir = path.join(cacheHome, "code-server/logs", new Date().toISOString().replace(/[-:.TZ]/g, ""));
8589
process.env.VSCODE_LOGS = logDir;
8690

8791
const certPath = flags.cert ? path.resolve(flags.cert) : undefined;

packages/server/src/constants.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import * as path from "path";
2+
import * as os from "os";
23

34
export const isCli = typeof process.env.CLI !== "undefined" && process.env.CLI !== "false";
45
export const serveStatic = typeof process.env.SERVE_STATIC !== "undefined" && process.env.SERVE_STATIC !== "false";
56
export const buildDir = process.env.BUILD_DIR ? path.resolve(process.env.BUILD_DIR) : "";
7+
const xdgResolve = (primary: string | undefined, fallback: string): string => {
8+
return primary ? path.resolve(primary) : path.resolve(process.env.HOME || os.homedir(), fallback);
9+
};
10+
export const dataHome = xdgResolve(process.env.XDG_DATA_HOME, ".local/share");
11+
export const cacheHome = xdgResolve(process.env.XDG_CACHE_HOME, ".cache");

0 commit comments

Comments
 (0)