release-engineers/yaml-common
Extracts and merges common parts of YAML from one set of files into a common file. Note that this project attempts to preserve comments and order of properties in your YAML files, but can not preserve formatting.
Setup
pip install re-yaml-common
Usage
yaml-common merge <common file> <file 1> <file 2> ...
An example below for yaml-common merge tests/data/common.yaml tests/data/1.yaml tests/data/2.yaml.
Input
Content of common.yaml:
example-exists:
str-1: This property already exists in common.yaml
str-2: This property exists in all files
Content of 1.yaml:
example-common:
# common comment
depth:
more-depth:
array:
- yes
- for sure
str: common string
int: 123
float: 1.23
bool: true
null:
example-specific:
depth:
more-depth:
# specific comment to 1.yaml
str-specific: 1.yaml
example-exists:
str-2: This property exists in all files, and is overridden by 1.yaml
example-mixed:
array-common:
- yes
- for sure again
array-specific:
- no
- because this is specific to 1.yaml
str-common: common string
str-specific: 1.yaml
sre-common-multiline: |
-----BEGIN PUBLIC KEY-----
01234567890
-----END PUBLIC KEY-----
unique-to-1: this property is unique to 1.yaml
Content of 2.yaml:
example-common:
# common comment
depth:
more-depth:
array:
- yes
- for sure
str: common string
int: 123
float: 1.23
bool: true
null:
example-specific:
depth:
more-depth:
# specific comment to 2.yaml
str-specific: 2.yaml
example-exists:
str-2: This property exists in all files, and is overridden by 2.yaml
example-mixed:
array-common:
- yes
- for sure again
array-specific:
- no
- because this is specific to 2.yaml
str-common: common string
str-specific: 2.yaml
sre-common-multiline: |
-----BEGIN PUBLIC KEY-----
01234567890
-----END PUBLIC KEY-----
Output
After running the above example, the content of the files will have changed to:
Expected content of common.yaml:
example-exists:
str-1: This property already exists in common.yaml
str-2: This property exists in all files
example-common:
# common comment
depth:
more-depth:
array:
- yes
- for sure
str: common string
int: 123
float: 1.23
bool: true
null:
example-mixed:
array-common:
- yes
- for sure again
str-common: common string
sre-common-multiline: |
-----BEGIN PUBLIC KEY-----
01234567890
-----END PUBLIC KEY-----
Expected content of 1.yaml:
example-specific:
depth:
more-depth:
# specific comment to 1.yaml
str-specific: 1.yaml
example-exists:
str-2: This property exists in all files, and is overridden by 1.yaml
example-mixed:
array-specific:
- no
- because this is specific to 1.yaml
str-specific: 1.yaml
unique-to-1: this property is unique to 1.yaml
Expected content of 2.yaml:
example-specific:
depth:
more-depth:
# specific comment to 2.yaml
str-specific: 2.yaml
example-exists:
str-2: This property exists in all files, and is overridden by 2.yaml
example-mixed:
array-specific:
- no
- because this is specific to 2.yaml
str-specific: 2.yaml
Contributing
This is a Python Poetry project using Fire. See Poetry for more information.
Development requires:
Links
This project was created using template-poetry.
Metadata
Release files for re-yaml-common 2.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| re_yaml_common-2.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Release files / re_yaml_common-2.0.4-py3-none-any.whl
| Download URL | re_yaml_common-2.0.4-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b91c25a23dee9609a5d1eca524c928561489b1b98fbf432768b9f9da46fcf2da
|
|
BLAKE2b-256 checksum How to use checksums |
e2bced7c71765d52aa77dfb4bf7544437d5b2952076b70f18a44ee258b0ef929
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
|