Resolve configurations from abstract hierarchies and templates
Project description
|GitHub tag| |GitHub release| |PyPI| |Py Versions|
|Build Status| |Coverage Status| |Quality Gate| |Code Smells| |Function
Complexity| |Vulnerabilities| |Technical Dept| |Lines of code|
converge
========
*Resolve Configurations from Abstract Hierarchies and Templates*
Managing configuration is hard. You sometimes need simplicity, like a
few key-value properties. Sometimes you need more than a few, and you
realize that a lot of your key names and values are similar and you wish
you could share and reuse them.
Wouldn't it be great to define conf in a hierarchical fashion and then
have a logic engine spit out the resolved configuration? This is
**converge**. Abstract hierarchies of data chewed up and spit out to
simple key-values to your liking.
How it works
============
Getting started
===============
Examples
========
A Brief History of Pain
=======================
You may have hit some (or all, like me) of these stages in the persuit
of configurability:
*In short: from the file, to the GUI, back to the file you idiot.* \*
Externalizing configuration from your applications, to avoid re-releases
due to simple conf tuning \* Realizing that you're now managing a
million de-centralized files with no similar structure \* Create or use
a centralized, GUI/DB based confguration management system (woohoo!
configuration liberation!) \* Realizing that automating without a
middleman is both simpler and more efficient, and that you never should
have used a GUI/DB. Files we always the solution, just a different kind
of file, where they are in a non resolved state from which you can
generate an output that meets your needs.
Files are best because: \* you can use time tested versioning systems
like git or mercurial to branch, release, rollback, check history \* you
can automate the modification of files with any tool you want \* doing
migrations on DB values/REST endpoints sucks (because it's unecessarily
complex)
.. |GitHub tag| image:: https://img.shields.io/github/tag/drewboswell/converge.svg
:target:
.. |GitHub release| image:: https://img.shields.io/github/release/drewboswell/converge.svg
:target:
.. |PyPI| image:: https://img.shields.io/pypi/v/pyconverge.svg
:target: https://pypi.python.org/pypi/pyconverge/
.. |Py Versions| image:: https://img.shields.io/pypi/pyversions/pyconverge.svg
:target: https://pypi.python.org/pypi/pyconverge/
.. |Build Status| image:: https://travis-ci.org/drewboswell/converge.svg?branch=master
:target: https://travis-ci.org/drewboswell/converge
.. |Coverage Status| image:: https://coveralls.io/repos/github/drewboswell/converge/badge.svg?branch=master
:target: https://coveralls.io/github/drewboswell/converge?branch=master
.. |Quality Gate| image:: https://sonarqube.com/api/badges/gate?key=drewboswell_converge
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Code Smells| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=code_smells
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Function Complexity| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=function_complexity
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Vulnerabilities| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=vulnerabilities
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Technical Dept| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=sqale_debt_ratio
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Lines of code| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=ncloc
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
|Build Status| |Coverage Status| |Quality Gate| |Code Smells| |Function
Complexity| |Vulnerabilities| |Technical Dept| |Lines of code|
converge
========
*Resolve Configurations from Abstract Hierarchies and Templates*
Managing configuration is hard. You sometimes need simplicity, like a
few key-value properties. Sometimes you need more than a few, and you
realize that a lot of your key names and values are similar and you wish
you could share and reuse them.
Wouldn't it be great to define conf in a hierarchical fashion and then
have a logic engine spit out the resolved configuration? This is
**converge**. Abstract hierarchies of data chewed up and spit out to
simple key-values to your liking.
How it works
============
Getting started
===============
Examples
========
A Brief History of Pain
=======================
You may have hit some (or all, like me) of these stages in the persuit
of configurability:
*In short: from the file, to the GUI, back to the file you idiot.* \*
Externalizing configuration from your applications, to avoid re-releases
due to simple conf tuning \* Realizing that you're now managing a
million de-centralized files with no similar structure \* Create or use
a centralized, GUI/DB based confguration management system (woohoo!
configuration liberation!) \* Realizing that automating without a
middleman is both simpler and more efficient, and that you never should
have used a GUI/DB. Files we always the solution, just a different kind
of file, where they are in a non resolved state from which you can
generate an output that meets your needs.
Files are best because: \* you can use time tested versioning systems
like git or mercurial to branch, release, rollback, check history \* you
can automate the modification of files with any tool you want \* doing
migrations on DB values/REST endpoints sucks (because it's unecessarily
complex)
.. |GitHub tag| image:: https://img.shields.io/github/tag/drewboswell/converge.svg
:target:
.. |GitHub release| image:: https://img.shields.io/github/release/drewboswell/converge.svg
:target:
.. |PyPI| image:: https://img.shields.io/pypi/v/pyconverge.svg
:target: https://pypi.python.org/pypi/pyconverge/
.. |Py Versions| image:: https://img.shields.io/pypi/pyversions/pyconverge.svg
:target: https://pypi.python.org/pypi/pyconverge/
.. |Build Status| image:: https://travis-ci.org/drewboswell/converge.svg?branch=master
:target: https://travis-ci.org/drewboswell/converge
.. |Coverage Status| image:: https://coveralls.io/repos/github/drewboswell/converge/badge.svg?branch=master
:target: https://coveralls.io/github/drewboswell/converge?branch=master
.. |Quality Gate| image:: https://sonarqube.com/api/badges/gate?key=drewboswell_converge
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Code Smells| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=code_smells
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Function Complexity| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=function_complexity
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Vulnerabilities| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=vulnerabilities
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Technical Dept| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=sqale_debt_ratio
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
.. |Lines of code| image:: https://sonarqube.com/api/badges/measure?key=drewboswell_converge&metric=ncloc
:target: https://sonarqube.com/dashboard/index/drewboswell_converge
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyconverge-0.0.10.tar.gz
(19.6 kB
view hashes)