Auto merge of #92 - matthiasbeyer:doc-define-modules, r=matthiasbeyer
Doc define modules Includes definition of runtime library.
This commit is contained in:
commit
3f446f1fd8
2 changed files with 91 additions and 0 deletions
73
doc/src/03100-lib-rt.md
Normal file
73
doc/src/03100-lib-rt.md
Normal file
|
@ -0,0 +1,73 @@
|
|||
# librt {#sec: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 {#sec:librt:cfg}
|
||||
|
||||
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 {#sec:librt:cfg:location}
|
||||
|
||||
For the configuration file is searched at the following locations:
|
||||
|
||||
1. Path: `$HOME/.imag/config`
|
||||
1. Path: `$HOME/.imag/config.toml`
|
||||
1. Path: `$HOME/.imag/imagrc`
|
||||
1. Path: `$HOME/.imag/imagrc.toml`
|
||||
1. Path: `$XDG_CONFIG_DIR/imag/config`
|
||||
1. Path: `$XDG_CONFIG_DIR/imag/config.toml`
|
||||
1. Path: `$XDG_CONFIG_DIR/imag/imagrc`
|
||||
1. Path: `$XDG_CONFIG_DIR/imag/imagrc.toml`
|
||||
1. 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 {#sec:librt:cfg:contents}
|
||||
|
||||
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)
|
||||
1. The `modules` section, which contains a section for each module.
|
||||
1. 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}
|
||||
|
|
@ -1,2 +1,20 @@
|
|||
# Modules {#sec:modules}
|
||||
|
||||
A module is a functionality of the program.
|
||||
|
||||
A module MAY store data in the store (@sec:thestore).
|
||||
It MAY include user input in the data it stores in the store.
|
||||
A module MUST HAVE a commandline interface, though a module always consists of
|
||||
two parts:
|
||||
|
||||
- A Library
|
||||
- A Binary, which
|
||||
* is executable by the user
|
||||
* implements a commandline frontend to the libray of the module
|
||||
|
||||
By definition, the Binary depends on the Library.
|
||||
By definition, the Library depends on the libstore (@sec:libstore).
|
||||
|
||||
A module MUST use the runtime library to implement the commandline
|
||||
interface as defined in @sec:librt.
|
||||
|
||||
|
|
Loading…
Reference in a new issue