Skip to main content

Cocof

Build Status PyPI version

Cocof, short for consistent config file, is a python module that allows the modification of different key-value config files on the comand line.

Most importantly: For YAML and TOML it It will keep line breaks and comments the same. So the file will look more or less like the original (depending on the operations on it of course).

Currently supported formats are TOML, YAML, JSON and PLIST.

Install

$ pip install cocof

Usage

$ cocof --help
Usage: cocof [OPTIONS] FILEPATH JSONPATCH

  Cocof runs the provided 'jsonpatch' modifications on the configuration
  file given with the 'filepath' argument. Use the '--format' option to tell
  the file format. If not given cocof will try to guess the file format
  based on the file extension. Use '-' as filepath for stdin, in which case
  the output goes to stdout and you must provide the format of the data via
  the '--format' option.

Options:
  -f, --format [toml|yaml|json|plist]
                                  The format of the file. Obligatory if
                                  filepath is '-' (stdin).
  --help                          Show this message and exit.

Cocof takes a file path and a JSON patch string as arguments. It then modifies the datastructure given by the file's content accordingly and writies it back to the same file (in-place editing). You can also tell cocof to read from stdin, in which case it will output it's result to stdout. TOML, YAML and JSON expect their content to be utf-8 encoded. PLIST expects either an utf-8 encoded xml content or binary content.

Examples

# example.toml
title = "Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # Inline comment

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]

Using {"op": "add", "path": "/subtitle", "value": "Sub"} as modification yields:

$ cocof ./example.toml '[{"op": "add", "path": "/subtitle", "value": "Sub"}]'`
$ cat ./example.toml
# example.toml
title = "Example"
subtitle = "Sub"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # Inline comment

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]

Release files for cocof 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cocof 1.2.2
File Size Uploaded
cocof-1.2.2.tar.gz 5.2 kB Details

Release files / cocof-1.2.2.tar.gz

Download URL cocof-1.2.2.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
36a05eca9aa8000a1a204a97ca6d703a9513713d7908325d91bf26309ac29204
BLAKE2b-256 checksum
How to use checksums
e4cb6b267413a3987671f73bd5637f1ced076585b31702923ce8fa0869289076
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/2.7.14

Release history Release notifications | RSS feed

This release

1.2.2 This release

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.0.1

1 release file

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page