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 |
file_regex_match | the content of the file must match the regex expression | when placeholder is prsent |
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 check_config.toml
consist of zero or one check-config
tables with configuration for check-config itself:
[check-config]
include = [ # 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 this parent toml, indifferent if it is a filesystem path or a webserver path
"py://my_package:checkers/python.toml", # path to file in python package
"https//example.com/check.toml", # path on webserver
]
And one or more checkers
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.
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.
When the file does not exists, running with fix will create the file. At default an empty file will be created. When a placeholder is given, the created file will contain the placeholder as content.
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
.
The key can be nested. In the next case it is sufficient that key
is not present.
super_key
may be present or absent.
This checker type can handle different kind of mapping file types
File Regex Match¶
Checks whether the contents of the file matches the regex expression.
Multiple regex can be given when the file.checker_type pair is an array, ie:
[[".bashrc".file_regex_match]]
__regex__ = 'export KEY=.*'
[[".bashrc".file_regex_match]]
__regex__ = 'export ANOTHER_KEY=.*'
When the file does not exists, running with fix will create the file if a __placeholder__
value is given
with that value as content. If no __placeholder__
is given, no file is created.
Note: specify the regex as a raw string (single quotes) to be prevent escaping.
This checker type can handle any text file.
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.
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.
Entry Present¶
entry_present
will check that specified __items__
are not present on the specified path.
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.
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.
Lines Present¶
lines_present
will check that the file does not contain the lines as specified.
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: