Skip to main content

Extends the common .yaml syntax to provide more complex configuration options

Project description

Description

Extends the common .yaml syntax to provide more complex configuration options. The yaml_extender can be used to resolve the extended yaml syntax as shown in Usage.rst. The following options for extended yaml syntax are available.

References

Yaml values can be referenced by using {{ref}} Additionally a default value can be given using a colon symbol within the reference {{ref:default}}

Simple Example:

my_reference: test_value
my_path: path/to/my/{{ my_reference }}
copy_reference: "{{my_reference}}"
my_config: path/to/{{ configured_value:default.cfg }}

Results in:

my_reference: test_value
my_path: path/to/my/test_value
copy_reference: test_value
my_config: path/to/default.cfg

More complex references can be done using dictionaries as well as lists.

Complex Example:

ref_val_1: "{{dict_1.subvalue_2[0].config}}"
ref_val_2: "{{dict_1.subvalue_2[1].path}}"
ref_val_3: "{{dict_1.subvalue_2[2].path:default_value}}"
dict_1:
  subvalue_1: const_val
  subvalue_2:
  - path: first/path
    config: first.cfg
  - path: second/path
    config: second.cfg

Results in:

ref_val_1: first.cfg
ref_val_2: second/path
ref_val_3: default_value
dict_1:
  subvalue_1: const_val
  subvalue_2:
  - path: first/path
    config: first.cfg
  - path: second/path
    config: second.cfg

Also you can use default values by giving a value separated by a colon. Example:

ref_val_1: {{ not_existing:123 }}

results in:

ref_val_1: 123

Environment variables

In extended yaml syntax environment variables can be referenced using the key xyml.env.

An Environment ENV_VAR variable can be referenced like this:

my_value: echo environment variable = {{ xyml.env.ENV_VAR}}

Parameters

In extended yaml syntax additional parameters can be referenced using the key xyml.param.

When including yaml_extender in another python script the parameters can be passed as dictionary when creating a XYmlFile object. When using yaml_extender over command line all named parameters will be used to resolve xyml.param statements.

Warning Only named parameters are allowed, positional arguments will cause problems.

An parameter given as “–my_param 123” or {“my_param”: 123} can be referenced like this:

my_value: echo This is a parameter {{ xyml.param.my_param }}

Includes

Yaml files can include other .yaml files by using the xyml.include: file.yaml statement. Additionally all reference values within the included file can be overwritten using parameters. Parameters are contained within the include statement xyml.include: file.yaml<<my_ref=param1>>

Example

root.yaml:

ref_1: value1
dict_1:
  subvalue_1: abc
  xyml.include:
  - file1.yaml
  - file2.yaml

file1.yaml:

subvalue_2: 123
subvalue_3: 456

file2.yaml:

subvalue_4:
- abc
- xyz

Results in:

ref_1: value1
dict_1:
  subvalue_1: abc
  subvalue_2: 123
  subvalue_3: 456
  subvalue_4:
  - abc
  - xyz

For loops

Certain entries in your config can be repeated based on array values in you config. You can directly repeat dictionary values by adding a xyml.loop statement. Of course subvalues can be accessed in the same way as in normal references.

Example::

array_1:
- value: abc
  path: first/path
- value: xyz
  path: second/path

commands:
  xyml.for: iterator:array_1
  cmd: sh {{ iterator.value }}
  from: "{{ iterator.path }}"

will result in:

array_1:
- value: abc
  path: first/path
- value: xyz
  path: second/path

commands:
- cmd: sh abc
  from: first/path
- cmd: sh xyz
  from: second/path

Flat Loops

Loops can also flatten itself. If you want to repeat arrays you can use the keyword xyml.content to provide the content of the loop.

Example:

array_1:
- abc
- xyz
commands:
  xyml.for: iterator:array_1
  xyml.content:
  - cmd: sh {{ iterator }}
  - cmd: echo {{ iterator }}

Will result in:

array_1:
- abc
- xyz
commands:
  - cmd: sh abc
  - cmd: echo abc
  - cmd: sh xyz
  - cmd: echo xyz

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

yaml-extender-0.0.7.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

yaml_extender-0.0.7-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file yaml-extender-0.0.7.tar.gz.

File metadata

  • Download URL: yaml-extender-0.0.7.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for yaml-extender-0.0.7.tar.gz
Algorithm Hash digest
SHA256 c36a4931ff547ec995b081390122fb8b7bd55258a947bb9ce67c991802476f4d
MD5 a4fd4c32066718632d1a7a5f406be970
BLAKE2b-256 61caabf457c7b828f04ae12e47aed6d4c8100240a0e38599c4f68007508d6a1e

See more details on using hashes here.

File details

Details for the file yaml_extender-0.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for yaml_extender-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d0e0ca6b1ee7c330b99059abfc08f2067705a8afd7b3e4d98e5c483305b1dc03
MD5 e278f8343cd7f9015011b22ac281f5c0
BLAKE2b-256 073b9e5d3e148607526a62187ae12b15ebd724b9a59ec98cf55cd078b15e0d8a

See more details on using hashes here.

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