Skip to main content

Interpolation tool

Project description

interpolatr
===========

Interpolatr is a command line tool and library for interpolating
configuration settings into templatized files. It uses the
`jinja2 <http://jinja.pocoo.org/docs/2.9/>`_ library for templating.

Usage
-----

The ``interpolatr`` command-line tool currently supports two
configuration sources (command line and YAML; see below) and a single
template sink ( file-based jinja2 templates). However, it is easy to
supply your own configuration sources or template sinks if necessary.

Usage:

::

interpolatr [OPTIONS] [<config-class> <config-args>]... [<supplier-class> <supplier-args>]...

For example, using builtin config and template suppliers:

::

interpolatr -D override_setting=value YamlConfigSource --path conf.yaml ExtensionFileSinkSupplier --target_dir root

Configuration Sources
~~~~~~~~~~~~~~~~~~~~~

There are currently two built-in configuration sources for
``interpolatr``:

1. *Command line*: You can specify configuration values when calling
``interpolatr`` using the ``-D`` flag: ``interpolator -D foo=bar``.

2. *YAML*: You can specify configuration values in a hierarchical
``yaml`` format.

The format looks like this: \`\`\`yaml settings: setting\_name:
setting\_value setting\_two: other\_value

Optional files to inherit settings from
=======================================

base: - file/to/inherit-from.yml

::

# Functionally, this is no different than flattening the list out
- [ some/more.yaml, and-even-more.yml ]

- final-base-file.yml

\`\`\`

These settings are populated into a ``ChainedMap``, so any settings
missing in your top-level configuration will be pulled from its
parent(s).

It is simple to define your own configuration sources: see
``config.py``. If using the command line, you can use a custom config
source by specifying the fully qualified class path on the command line.

Configuration Sinks
~~~~~~~~~~~~~~~~~~~

Configuration values can currently be written into templatized
configuration files. The templating is powered by ``jinja2``, so you may
use any valid ``jinja2`` expressions to define your configuration files.

It should be straightfoward to customize this process as well; see the
code in ``sink.py`` for reference.

Notes
-----

- This was developed under Python 2.7, but at least gives the
appearance of working under Python 3.
- This is an early version of this tool, so the interfaces are subject
to change.

Copyright and License
---------------------

Copyright 2017, Yahoo Inc.

Licensed under the terms of the Apache License, Version 2.0. See the
LICENSE file associated with the project for terms.

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

interpolatr-0.0.2.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

interpolatr-0.0.2-py2.py3-none-any.whl (16.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file interpolatr-0.0.2.tar.gz.

File metadata

  • Download URL: interpolatr-0.0.2.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for interpolatr-0.0.2.tar.gz
Algorithm Hash digest
SHA256 6c3375c05ac3c22b9e7b24da7942556b053d31415601b2a3e60ca3f5071a3b2d
MD5 d1b1e2545521ea2c3eecdd93f0ee7c92
BLAKE2b-256 cf3281228b6756f0b4d94a2704b8957dd5c5499aed010f22134adb64afec2774

See more details on using hashes here.

File details

Details for the file interpolatr-0.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for interpolatr-0.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8cfb80027f4484f4346046d26943d7ac1179f49a4299c04b96b7fefa024c98b7
MD5 85c7174e4fb6c5651720a4be7004370c
BLAKE2b-256 676fea8ae3fbac8de5d69ba91c9e39c503ed4665150b83e4f95093fd280e06f5

See more details on using hashes here.

Supported by

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