imag/doc/src/03100-lib-rt.md

2.8 KiB

librt

The runtime library provides types and functions which MUST be used by the modules to implement the commandline interface, configuration file parsing and logging.

The runtime library provides basic functionality for configuration file parsing and logging setup. The runtime library also provides helper functions for building a commandline interface.

Configuration file

The runtime library SHOULD read the configuration file, if it can be found. If the configuration file cannot be found, the following variables are set to their default values as shown in @tbl:librt:cfg:defaultvalues.

Variable Value
verbosity false
debugging false
store location $HOME/.imag/store/

Table: Default values for configuration if configuration file unavailable {#tbl:librt:cfg:defaultvalues}

Location of the configuration file

For the configuration file is searched at the following locations:

  1. Path: $runtimepath/config
  2. Path: $runtimepath/config.toml
  3. Path: $runtimepath/imagrc
  4. Path: $runtimepath/imagrc.toml
  5. Path: $HOME/.imag/config
  6. Path: $HOME/.imag/config.toml
  7. Path: $HOME/.imag/imagrc
  8. Path: $HOME/.imag/imagrc.toml
  9. Path: $XDG_CONFIG_DIR/imag/config
  10. Path: $XDG_CONFIG_DIR/imag/config.toml
  11. Path: $XDG_CONFIG_DIR/imag/imagrc
  12. Path: $XDG_CONFIG_DIR/imag/imagrc.toml
  13. Path in the environment variable $IMAG_CONFIG

If neither of these configuration files are found, the program MUST USE the default values for the minimum required variables (@tbl:librt:cfg:defaultvalues).

Contents of the configuration file

The contents of the configuration file MUST BE encoded in Unicode UTF-8. The contents of the configuration file are structured as TOML, regardless of the file extension.

The configuration file contains several sections:

  1. The base section, which contains basic variables (@tbl:librt:cfg:contents:base)
  2. The modules section, which contains a section for each module.
  3. The store section, which contains configuration on the behaviour of the store (@tbl:librt:cfg:contents:store)
Variable Type
verbosity boolean
debugging boolean
store location Path

Table: "Base" variables in the configuration file {#tbl:librt:cfg:contents:base}

Variable Type Meaning
git-vcs boolean Whether the store is version controlled with git

Table: "store" variables in the configuration file {#tbl:librt:cfg:contents:store}