summaryrefslogtreecommitdiff
path: root/cli/js/os.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/os.ts')
-rw-r--r--cli/js/os.ts188
1 files changed, 183 insertions, 5 deletions
diff --git a/cli/js/os.ts b/cli/js/os.ts
index 4e17e2030..ed46268d9 100644
--- a/cli/js/os.ts
+++ b/cli/js/os.ts
@@ -133,11 +133,189 @@ export function start(preserveDenoNamespace = true, source?: string): Start {
* Requires the `--allow-env` flag.
*/
export function homeDir(): string {
- const path = sendSync(dispatch.OP_HOME_DIR);
- if (!path) {
- throw new Error("Could not get home directory.");
- }
- return path;
+ return sendSync(dispatch.OP_GET_DIR, { name: "home" });
+}
+
+/**
+ * Returns the current user's cache directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ----------------------------------- | ---------------------------- |
+ * | Linux | `$XDG_CACHE_HOME` or `$HOME`/.cache | /home/alice/.cache |
+ * | macOS | `$HOME`/Library/Caches | /Users/Alice/Library/Caches |
+ * | Windows | `{FOLDERID_LocalAppData}` | C:\Users\Alice\AppData\Local |
+ */
+export function cacheDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "cache" });
+}
+
+/**
+ * Returns the current user's config directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ------------------------------------- | -------------------------------- |
+ * | Linux | `$XDG_CONFIG_HOME` or `$HOME`/.config | /home/alice/.config |
+ * | macOS | `$HOME`/Library/Preferences | /Users/Alice/Library/Preferences |
+ * | Windows | `{FOLDERID_RoamingAppData}` | C:\Users\Alice\AppData\Roaming |
+ */
+export function configDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "config" });
+}
+
+/**
+ * Returns the current user's data directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------------------------- | ---------------------------------------- |
+ * | Linux | `$XDG_DATA_HOME` or `$HOME`/.local/share | /home/alice/.local/share |
+ * | macOS | `$HOME`/Library/Application Support | /Users/Alice/Library/Application Support |
+ * | Windows | `{FOLDERID_RoamingAppData}` | C:\Users\Alice\AppData\Roaming |
+ */
+export function dataDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "data" });
+}
+
+/**
+ * Returns the current user's local data directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------------------------- | ---------------------------------------- |
+ * | Linux | `$XDG_DATA_HOME` or `$HOME`/.local/share | /home/alice/.local/share |
+ * | macOS | `$HOME`/Library/Application Support | /Users/Alice/Library/Application Support |
+ * | Windows | `{FOLDERID_LocalAppData}` | C:\Users\Alice\AppData\Local |
+ */
+export function dataLocalDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "data_local" });
+}
+
+/**
+ * Returns the current user's audio directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ------------------ | -------------------- |
+ * | Linux | `XDG_MUSIC_DIR` | /home/alice/Music |
+ * | macOS | `$HOME`/Music | /Users/Alice/Music |
+ * | Windows | `{FOLDERID_Music}` | C:\Users\Alice\Music |
+ */
+export function audioDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "audio" });
+}
+
+/**
+ * Returns the current user's desktop directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | -------------------- | ---------------------- |
+ * | Linux | `XDG_DESKTOP_DIR` | /home/alice/Desktop |
+ * | macOS | `$HOME`/Desktop | /Users/Alice/Desktop |
+ * | Windows | `{FOLDERID_Desktop}` | C:\Users\Alice\Desktop |
+ */
+export function desktopDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "desktop" });
+}
+
+/**
+ * Returns the current user's document directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------- | ------------------------ |
+ * | Linux | `XDG_DOCUMENTS_DIR` | /home/alice/Documents |
+ * | macOS | `$HOME`/Documents | /Users/Alice/Documents |
+ * | Windows | `{FOLDERID_Documents}` | C:\Users\Alice\Documents |
+ */
+export function documentDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "document" });
+}
+
+/**
+ * Returns the current user's download directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------- | ------------------------ |
+ * | Linux | `XDG_DOWNLOAD_DIR` | /home/alice/Downloads |
+ * | macOS | `$HOME`/Downloads | /Users/Alice/Downloads |
+ * | Windows | `{FOLDERID_Downloads}` | C:\Users\Alice\Downloads |
+ */
+export function downloadDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "download" });
+}
+
+/**
+ * Returns the current user's font directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------------------------------------- | ------------------------------ |
+ * | Linux | `$XDG_DATA_HOME`/fonts or `$HOME`/.local/share/fonts | /home/alice/.local/share/fonts |
+ * | macOS | `$HOME/Library/Fonts` | /Users/Alice/Library/Fonts |
+ * | Windows | – | – |
+ */
+export function fontDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "font" });
+}
+
+/**
+ * Returns the current user's picture directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | --------------------- | ----------------------- |
+ * | Linux | `XDG_PICTURES_DIR` | /home/alice/Pictures |
+ * | macOS | `$HOME`/Pictures | /Users/Alice/Pictures |
+ * | Windows | `{FOLDERID_Pictures}` | C:\Users\Alice\Pictures |
+ */
+export function pictureDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "picture" });
+}
+
+/**
+ * Returns the current user's public directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | --------------------- | ------------------- |
+ * | Linux | `XDG_PUBLICSHARE_DIR` | /home/alice/Public |
+ * | macOS | `$HOME`/Public | /Users/Alice/Public |
+ * | Windows | `{FOLDERID_Public}` | C:\Users\Public |
+ */
+export function publicDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "public" });
+}
+
+/**
+ * Returns the current user's template directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ---------------------- | ---------------------------------------------------------- |
+ * | Linux | `XDG_TEMPLATES_DIR` | /home/alice/Templates |
+ * | macOS | – | – |
+ * | Windows | `{FOLDERID_Templates}` | C:\Users\Alice\AppData\Roaming\Microsoft\Windows\Templates |
+ */
+export function templateDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "template" });
+}
+
+/**
+ * Returns the current user's video directory.
+ * If the directory does not exist, an exception is thrown
+ * Requires the `--allow-env` flag.
+ * |Platform | Value | Example |
+ * | ------- | ------------------- | --------------------- |
+ * | Linux | `XDG_VIDEOS_DIR` | /home/alice/Videos |
+ * | macOS | `$HOME`/Movies | /Users/Alice/Movies |
+ * | Windows | `{FOLDERID_Videos}` | C:\Users\Alice\Videos |
+ */
+export function videoDir(): string {
+ return sendSync(dispatch.OP_GET_DIR, { name: "video" });
}
/**