Source Edit

This module implements helpers for determining special directories used by apps.

Imports

osappdirs, paths, envvars

Procs

  1. proc getCacheDir(): Path {.inline, ...raises: [], tags: [ReadEnvEffect],
  2. forbids: [].}

Returns the cache directory of the current user for applications.

This makes use of the following environment variables:

  • On Windows: getEnv(“LOCALAPPDATA”)
  • On macOS: getEnv(“XDG_CACHE_HOME”, getEnv(“HOME”) / “Library/Caches”)
  • On other platforms: getEnv(“XDG_CACHE_HOME”, getEnv(“HOME”) / “.cache”)

See also:

Source Edit

  1. proc getCacheDir(app: Path): Path {.inline, ...raises: [], tags: [ReadEnvEffect],
  2. forbids: [].}

Returns the cache directory for an application app.

  • On Windows, this uses: getCacheDir() / app / “cache”
  • On other platforms, this uses: getCacheDir() / app

Source Edit

  1. proc getConfigDir(): Path {.inline, ...tags: [ReadEnvEffect, ReadIOEffect],
  2. raises: [], forbids: [].}

Returns the config directory of the current user for applications.

On non-Windows OSs, this proc conforms to the XDG Base Directory spec. Thus, this proc returns the value of the XDG_CONFIG_HOME environment variable if it is set, otherwise it returns the default configuration directory (“~/.config/“).

An OS-dependent trailing slash is always present at the end of the returned string: \\ on Windows and / on all other OSs.

See also:

Source Edit

  1. proc getDataDir(): Path {.inline, ...tags: [ReadEnvEffect, ReadIOEffect],
  2. raises: [], forbids: [].}

Returns the data directory of the current user for applications.

On non-Windows OSs, this proc conforms to the XDG Base Directory spec. Thus, this proc returns the value of the XDG_DATA_HOME environment variable if it is set, otherwise it returns the default configuration directory (“~/.local/share” or “~/Library/Application Support” on macOS).

See also:

Source Edit

  1. proc getHomeDir(): Path {.inline, ...tags: [ReadEnvEffect, ReadIOEffect],
  2. raises: [], forbids: [].}

Returns the home directory of the current user.

This proc is wrapped by the paths: expandTilde proc for the convenience of processing paths coming from user configuration files.

See also:

Source Edit

  1. proc getTempDir(): Path {.inline, ...tags: [ReadEnvEffect, ReadIOEffect],
  2. raises: [], forbids: [].}

Returns the temporary directory of the current user for applications to save temporary files in.

On Windows, it calls GetTempPath. On Posix based platforms, it will check TMPDIR, TEMP, TMP and TEMPDIR environment variables in order. On all platforms, /tmp will be returned if the procs fails.

You can override this implementation by adding -d:tempDir=mytempname to your compiler invocation.

Note: This proc does not check whether the returned path exists.

See also:

Source Edit