summaryrefslogtreecommitdiff
path: root/os/mod.ts
diff options
context:
space:
mode:
authorEvgeniy Karagodin <ekaragodin@gmail.com>2019-06-24 22:08:06 +0700
committerRyan Dahl <ry@tinyclouds.org>2019-06-24 08:08:06 -0700
commit58bac5dc298a5ef16efd664bc9ea951856f901ee (patch)
treef291ff7084fbe8f4445b0fb387e5015227336a3d /os/mod.ts
parent69d4d88b4f00b26112ad1d31fd551b032884f0d8 (diff)
Add userHomeDir (denoland/deno_std#521)
Original: https://github.com/denoland/deno_std/commit/ff7fb5a5d696256b232f8435c53087d5b12848ab
Diffstat (limited to 'os/mod.ts')
-rw-r--r--os/mod.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/os/mod.ts b/os/mod.ts
new file mode 100644
index 000000000..a2bb0457b
--- /dev/null
+++ b/os/mod.ts
@@ -0,0 +1,26 @@
+// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+
+/**
+ * Returns the current user's home directory.
+ * On Unix, including macOS, it returns the $HOME environment variable.
+ * On Windows, it returns %USERPROFILE%.
+ * Needs permissions to access env (--allow-env).
+ *
+ * Ported from Go: https://github.com/golang/go/blob/go1.12.5/src/os/file.go#L389
+ */
+export function userHomeDir(): string {
+ let env = "HOME";
+ let envErr = "$HOME";
+
+ if (Deno.platform.os === "win") {
+ env = "USERPROFILE";
+ envErr = "%USERPROFILE%";
+ }
+
+ const value = Deno.env()[env];
+ if (value !== "") {
+ return value;
+ }
+
+ throw new Error(`Environment variable '${envErr}' is not defined.`);
+}