Configuration

Configuration files

The following configuration files are loaded, in order:

  • linecook.config.core: Package configuration
  • ~/.linecook/config.py: User configuration
  • ./.linecook/config.py: Local configuration

Each file should define a dictionary named LINECOOK_CONFIG containing keys such as transforms and recipes.

Files loaded later (lower on the list) override values loaded earlier. Note that the overriding happens at the second level of dictionaries. For example, if ~/.linecook/config.py is defined as:

from linecook.transforms.core import color_text

LINECOOK_CONFIG = {
    'transforms': {
        'warn_color': color_text(' WARN ', color='yellow'),
        'error_color': color_text(' ERROR ', on_color='on_red'),
    },
    'recipes': {
        'logs': ['warn_color', 'error_color'],
        'default': ['warn_color', 'error_color'],
    },
}

And then, ./.linecook/config.py is defined as:

from linecook.transforms.core import filter_line

LINECOOK_CONFIG = {
    'recipes': {
        'default': [filter_line(' DEBUG '), 'error_color']
    },
}

The loaded result would roughly translate to:

from linecook.transforms.core import color_text, filter_line

LINECOOK_CONFIG = {
    'transforms': {
        'warn_color': color_text(' WARN ', color='yellow'),
        'error_color': color_text(' ERROR ', on_color='on_red'),
    },
    'recipes': {
        'logs': ['warn_color', 'error_color'],
        'default': [filter_line(' DEBUG '), 'error_color']
    },
}

You’ll notice that recipes doesn’t match the recipes in the second config file: Instead, the second file only overrode the 'default' value in the first config file, but preseved the 'logs' value.