Skip to main content

A buildout config file normalizer

Project description

buildout_helpers

Do you have multiple buildouts and you want an easy way to apply new best practices to each buildout in a simple way, but you cannot, because every buildout file is configured slightly different?

Then this package is for you. The normalize_buildout is a script that will normalize your buildout file.

The tool sorts sections and the keys in each section alphabetically, also some special multi line values, like eggs.

Features

normalize_buildout by default will replace the given config file in place. It has a command line option for not changing the file and only reporting via exit code if the file is not normalized. This can easily be integrated in check tools or ci tools.

The script understands the special meaning of some sections and keys:

  • buildout section is always the first
  • versions, and sources section are always the last
  • recipe key is always first
  • eggs, and zcml values get sorted.
  • keys of sources entries get sorted, values get indented so that branch settings are all on the same column.
  • mr.developer options are grouped and separated from the other buildout options

Comments above sections and above keys get shuffled together with key or section. You can document why you need to pin a specific version of a package and after normalization, the comment is still above the right version specifier. - Can be bullet points

Installation

You can install the package with pip or zc.buildout.

PIP:

$ pip install buildout_helpers

Buildout:

[buildout]

 ...
 [extras]
 recipe = zc.recipe.egg
 eggs =
     buildout_helpers

and then running “bin/buildout”

Usage

You can do three things with this command.

  1. Check if a config file is normalized (for CI):

    $ normalize_buildout -c buildout.cfg
    

    This will either return nothing, or a warning that the buildout is not normalized. It will have a falsy return code for CI.

  2. Normalize a config file in place:

    $ normalize_buildout buildout.cfg
    

    This will normalize the buildout file.

  3. Read a config file from stdin and print it on stdout, useful in vim:

    :%!normalize_buildout -
    

    On failure, this command will print out the config file unmodified.

Contributors

Changelog

1.0.0b5 (2015-12-16)

  • Slightly better error handling for normalize_buildout. [do3cc]
  • Fixed an error in version info, not handling remote urls properly. [do3cc]
  • Fixed an error in version info, extends order was backwards. [do3cc]
  • Normalize now sorts case insensitive. [do3cc]

1.0.0b4 (2015-12-14)

  • Last release broke, I don’t trust what is as 1.0.0b3 on pypi. [do3cc]

1.0.0b3 (2015-12-14)

  • Now normalize_buildouts accepts many config files in one run. [do3cc]

1.0.0b2 (2015-12-14)

  • Mostly refactor freeze command. Still hard to read and needs more love. [do3cc]

1.0.0b1 (2015-12-14)

  • Add freeze command, downloads all external buildout files, with headers that allow the same freeze command to update it. [do3cc]
  • Add version info command that show which buildout file pins which version. Inspired from @jensens script [do3cc]
  • Rename package to buildout_helpers. Namespace packages cause trobule with pip and buildout [do3cc]

0.3.0 (2015-09-22)

  • Mr.developer variables in buildout sections are now separated and at the end of the buildout section [do3cc]
  • Sources sections are at the end now [do3cc]
  • Multiline options do not need an indent of 4 spaces, one is enough. Now this script correctly identifies them [do3cc]

0.2.0 (2015-09-11)

  • Support piping. [do3cc]
  • Remove unneeded dependency. [do3cc]
  • Fix 3 bugs resulting in bad buildout.cfgs. [do3cc]

0.1 (2015-09-10)

  • Initial release. [do3cc]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for buildout-helpers, version 1.0.0b5
Filename, size File type Python version Upload date Hashes
Filename, size buildout_helpers-1.0.0b5.tar.gz (13.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page