Skip to main content

Check configuration files.

Project description

Check Config

It can be cumbersome when you have multiple projects and environments with configuration files which need to be upgraded and keep in sync regulary. Check-config will help you with i.e. making sure that the configuration file (pyroject.toml, packages.json, ...) have the (upgraded) settings.

Installation

The preferred installation is via pip(x), indifferent whether you are Windows, Linux or Mac:

pip install check_config

or

pipx install check_config

Alternatively you can use:

cargo install check_config

Usage

With the next command you can check your configuration files

check_config

This will use the checkers as defined in checkers.toml, but you can specify another path:

check_config -p <path>

Optionally you can not just check your files, but also try to fix them:

check_config --fix

Checkers

Check Config uses checkers which define the desired state of the configuration files. There are several checker types (and more to come):

name description fixable
file_absent the file must be absent yes
file_present the file must be present, indifferent the content yes
key_absent a specified key must be absent in a toml / yaml / json file yes
key_value_present a specified key with a specified value must be present in a toml / yaml / json file yes
key_value_regex_match the value of a specified key must be match the specified regex in a toml / yaml / json file no
entry_absent a specified entry must be absent in the array of a toml / yaml / json file yes
entry_present a specified entry must be present in the of a toml / yaml / json file yes
lines_absent the specified lines must be absent yes
lines_present the specified lines must be present yes

Checker.toml

The checkers.toml consist of zero or one check-config tables with configuration for check-config itself:

[check-config]
additional_checks = [  # optional list of toml files with additional checks
    "/home/me/.checkers/check.toml",  # absolute path
    "~/.checkers/check.toml",  # relative to home dir of current user
    "check.toml", # relative (to the parent toml) path
    "py://my_package:checkers/python.toml", # path to file in python package
]

And one or more checkers

["<file_path>".<checker_name>.<checker_keys>]
key = "value"

The syntax is slightly different per check type. See the next sections for help about the checker definitions.

You can use arrays of toml tables when when a check has to be done more than once, ie:

[[".gitignore".lines_present]]
__lines__ = "__pycache__"

[[".gitignore".lines_present]]
__lines__ = ".cache"

When using a path to a Python package to include checkers, the activated Python (virtual) environment will be used.

File Absent

file_absent will check if the file is absent.

The next example will check that test/absent_file will be absent.

["test/absent_file".file_absent]

File Present

file_present will check if the file is present.

The next example will check that test/present_file will be present. It will not check the contents.

["test/present_file".file_present]

Key Absent

key_absent will check if the key is not present in the file.

The next example will check that test/present_file has no key named key.

["test/present.toml".key_absent.key]

The key can be nested. In the next case it is sufficient that key is not present. super_key may be present or absent.

["test/present.toml".key_absent.super_key.key]

This checker type can handle different kind of mapping file types

Key Value Present

key_value_present will check that the keys specified are present with the specified values. Keys may be nested. Intermediate keys has to have mappings as values. When intermediate values are not present, they will be added.

["test/present.toml".key_value_present]
key1 = 1
key2 = "value"
["test/present.toml".key_value_present.super_key]
key1 = 1
key2 = "value"

This checker type can handle different kind of mapping file types

Entry Absent

entry_absent will check that specified __items__ are not present on the specified path.

["test/present.toml".entry_absent.key]
__items__ = [1, 2]

Entry Present

entry_present will check that specified __items__ are not present on the specified path.

["test/present.toml".entry_present.key]
__items__ = [1, 2]

Key Value Regex Match

key_value_regex_match will check that the keys specified are present and the value matches the specified regex. Of course, the regex can only match string values. Keys may be nested. Intermediate keys has to have mappings as values. When intermediate values are not present, they will be added.

["test/present.toml".key_value_regex_match]
key = 'v.*'
["test/present.toml".key_value_regex_match.super_key]
key = '[0-9]*'

Note: specify the regex as a raw string (single quotes) to be prevent escaping.

This checker type can handle different kind of mapping file types

Lines Absent

lines_absent will check that the file does not contain the lines as specified.

["test/present.txt".lines_absent]
__lines__ = """\
multi
line"""
["test/present.txt".lines_absent]
__lines__ = """single line"""

Lines Present

lines_present will check that the file does not contain the lines as specified.

["test/present.txt".lines_present]
__lines__ = """\
multi
line"""
["test/present.txt".lines_present]
__lines__ = """single line"""

Mapping File Types

The checker types with a key (key_absent, key_value_present, key_value_regex_match) can we used on several file types which contains mappings:

type extension
toml toml
yaml yaml, yml
json json

The filetype will be determined by the extension. You can override this by specifying the filetype:

["test/present.toml".key_value_present]
__filetype__ = "json"
key1 = 1
key2 = "value"

Examples

In the examples directory you can find some samples.

Suggestions? Questions?

Let us known!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

check_config-0.3.2.tar.gz (25.0 kB view hashes)

Uploaded Source

Built Distributions

check_config-0.3.2-py3-none-win_amd64.whl (1.1 MB view hashes)

Uploaded Python 3 Windows x86-64

check_config-0.3.2-py3-none-win32.whl (1.0 MB view hashes)

Uploaded Python 3 Windows x86

check_config-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

check_config-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.5 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ s390x

check_config-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.2 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ ppc64le

check_config-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ i686

check_config-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.1 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

check_config-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

check_config-0.3.2-py3-none-macosx_11_0_arm64.whl (988.5 kB view hashes)

Uploaded Python 3 macOS 11.0+ ARM64

check_config-0.3.2-py3-none-macosx_10_7_x86_64.whl (1.1 MB view hashes)

Uploaded Python 3 macOS 10.7+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page