NAME
cfget - get values from a config file
SYNOPSIS
cfget [options] section/key
cfget [options] --dump=STYLE [section/key [section/key...]]
cfget [options] --template=STYLE [infile [outfile]]
DESCRIPTION
Get values from a config file.
cfget is a simple tool to read values from configuration files. It is
useful, for example, to create configurable shellscripts or makefiles.
It can also be configured to support virtual configuration values that,
if not present in the config file, are automatically computed from the
existing values. This makes it convenient, for example, to get a
"duration" value from a configuration file that only contains a "start
date" and an "end date".
OPTIONS
--version
show program’s version number and exit
-h, --help
show this help message and exit
-q, --quiet
quiet mode: only output fatal errors
-v, --verbose
verbose mode
--debug
verbose mode
-C file, --cfg=file
config file to read; the option can be given more than once to
read more than one file. If missing, read a colon separated list
from the CFGET_CFG env variable.
-P file, --plugin=file
list of plugin files or directories to load. The option can be
given more than once to read more than one file. If missing,
read a colon separated list from the CFGET_PLUGINS env variable.
-d name, --dump=name
dump the contents of the database using the given style. Use
’--dump=list’ for a list of available styles. If one or more
paths are provided in the command line, dump only those paths,
otherwise dump all.
-t name, --template=name
read a template file, expand template placeholders using the
configuration data and output the result. Use ’--template=list’
for a list of available styles.
-f name, --format=name
use a custom configuration file format (default: ini). Use
’--format=list’ for a list of available formats. The
CFGET_FORMAT environment value, if defined, can be used to
provide a different default value.
-r path, --root=path
restrict all work to values under the given path
EXAMPLES
# Get a key from a config file
cfget -C file.ini general/name
# More can be specified, they will be searched in order
cfget -C general.ini -C local.ini general/name
# Use a plugin to add virtual entries
cfget -C file.ini --plugin=virtual.py general/name
# A plugin can also a directory containing .py files
# and plugins can also be specified more than once
cfget -C file.ini --plugin=virtual.py --plugin=virtual/ general/name
# In a shellscript, you may want to use environment variables if you
# invoke cfget many times:
#!/bin/sh
CFGET_CFG=general.ini:local.ini
CFGET_PLUGINS=virtual.py:virtual/
START=‘cfget general/start‘
END=‘cfget general/end‘
DURATION=‘cfget general/duration‘
# Quick way to copy all config values to the environment
eval ‘cfget --dump=exports -C file.ini‘
# Autoconf-style template substitution
cfget --template=autoconf -C file.ini script.in script
# Curly braces substitude literally
cfget -C file.ini "general/start_{general/type}"
# One can use simple expressions
cfget -C file.ini "general/start + general/duration"
cfget -C file.ini "round(general/age / 2)"
AUTHOR
cfget has been written by Enrico Zini <enrico@enricozini.org>.