From 4519f9a50db8852c5b70ff47481f0fc9d0fbe2f2 Mon Sep 17 00:00:00 2001 From: "Kevin (Kun) \"Kassimo\" Qian" Date: Tue, 6 Aug 2019 14:05:47 -0700 Subject: Make Deno.execPath a function (#2743) And throws without allow-env --- js/os.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'js/os.ts') diff --git a/js/os.ts b/js/os.ts index 551cb1ea6..11407cfb0 100644 --- a/js/os.ts +++ b/js/os.ts @@ -13,16 +13,10 @@ export let pid: number; /** Reflects the NO_COLOR environment variable: https://no-color.org/ */ export let noColor: boolean; -/** Path to the current deno process's executable file. - * Requires the `--allow-env` flag, otherwise it'll be set to an empty `string`. - */ -export let execPath: string; - -function setGlobals(pid_: number, noColor_: boolean, execPath_: string): void { +function setGlobals(pid_: number, noColor_: boolean): void { assert(!pid); pid = pid_; noColor = noColor_; - execPath = execPath_; } /** Check if running in terminal. @@ -127,7 +121,7 @@ export function start( util.setLogDebug(startResMsg.debugFlag(), source); - setGlobals(startResMsg.pid(), startResMsg.noColor(), startResMsg.execPath()!); + setGlobals(startResMsg.pid(), startResMsg.noColor()); if (preserveDenoNamespace) { util.immutableDefine(window, "Deno", window.Deno); @@ -164,3 +158,19 @@ export function homeDir(): string { return path; } + +export function execPath(): string { + const builder = flatbuffers.createBuilder(); + const inner = msg.ExecPath.createExecPath(builder); + const baseRes = sendSync(builder, msg.Any.ExecPath, inner)!; + assert(msg.Any.ExecPathRes === baseRes.innerType()); + const res = new msg.ExecPathRes(); + assert(baseRes.inner(res) != null); + const path = res.path(); + + if (!path) { + throw new Error("Could not get home directory."); + } + + return path; +} -- cgit v1.2.3