summaryrefslogtreecommitdiff
path: root/js/os.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/os.ts')
-rw-r--r--js/os.ts26
1 files changed, 18 insertions, 8 deletions
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;
+}