diff options
Diffstat (limited to 'cli/js/os.ts')
-rw-r--r-- | cli/js/os.ts | 188 |
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" }); } /** |