{ "info": { "author": "Patrick Gerken", "author_email": "patrick.gerken@zumtobelgroup.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4" ], "description": ".. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.\n If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide_addons.html\n This text does not appear on pypi or github. It is a comment.\n\nbuildout_helpers\n=============================\n\nDo you work with many buildouts? Are you suffering from keeping them all up to date to best practices? Is the output of buildout annotate not enough for you? Are you having trouble to keep your buildouts repoducible?\nThis package provide helpers that help you for each of these problems and maybe more!\n\nFeatures\n--------\n\n- normalize_buildout:\n\n The tool sorts sections and the keys in each section alphabetically, also some special multi line values, like eggs.\n sources sections for mister developer get aligned by attributes, so muliple source checkouts with similar branches get identified more easily, because the branch value for each source checkout gets printed in the same column.\n Some special sections are alwyays at the end or the beginning.\n\n- freeze:\n\n This tool downloads all buildout configurations and stores them locally. The buildout files get modified to link to the downloaded resources.\n Every downloaded resource has a header with information that allow freeze to update the resources!\n\n- version_info:\n\n This tool is similar to the annotate command of buildout. But this tool only gives information about versions. For each package it shows the version buildout will use and what version other buildout files pin. If your buildout file masks newer versions from buildout files it extends, the versions are printed in red. So if you have some version pins and update to a newer Patch version of Plone, you can look for red printouts, these can give you hints to outdated version pins in your own config files.\n\nDetailed features of normalize_buildout\n---------------------------------------\nnormalize_buildout by default will replace the given config files in place.\nIt buildout files cannot be parsed no file will be modified.\nIt 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.\n\nThe script understands the special meaning of some sections and keys:\n\n - buildout section is always the first\n - versions, and sources section are always the last\n - recipe key is always first\n - eggs, and zcml values get sorted.\n - keys of sources entries get sorted, values get indented so that branch settings are all on the same column.\n - mr.developer options are grouped and separated from the other buildout options\n\nEvery sorting happens case insensitive.\nComments above sections and above keys get shuffled together with key or section.\nYou 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.\n\nDetailed features of freeze\n---------------------------\nFreeze downloads all external files to a directory external_buildouts.\nAll buildout files that reference these get their extends values updated to point to the local resources.\n\nEvery downloaded resource gets a special header. It warns you to modify the file and it contains the URL from which the resource was downloaded and the ETAG value.\nUpon repeated invocation, we check, if the resource has actually been changed. So if servers responds with a 304, the resource will not be downloaded again.\nThis is important for heavy CI users, like the quaive project. They sometimes got throttled from github.\n\nDetailed features of version_info\n---------------------------------\n\nEverything has been said in the general feature section already.\n\nInstallation\n------------\n\nYou can install the package with pip or zc.buildout.\n\nPIP::\n\n $ pip install buildout_helpers\n\nBuildout::\n\n [buildout]\n\n ...\n [extras]\n recipe = zc.recipe.egg\n eggs =\n buildout_helpers\n\n\nand then running \"bin/buildout\"\n\nFor use with CI we suggest to use a requirements.txt file with pip to install both buildout_helpers, a defined version of setuptools and zc.buildout.\n\nUsage\n-----\n\nnormalize_buildout\n``````````````````\n\nYou can do three common action swith this command.\n\n1. Check if config files are normalized (for CI)::\n\n $ normalize_buildout --check *.cfg etc/*.cfg versions/*.cfg\n\n This will either return nothing, or a warning that the buildout is not normalized. It will have a falsy return code for CI.\n\n2. Normalize a config file in place::\n\n $ normalize_buildout buildout.cfg\n\n This will normalize the buildout file.\n\n3. Read a config file from stdin and print it on stdout, useful in vim::\n\n :%!normalize_buildout -\n\n On failure, this command will print out the config file unmodified.\n\nfreeze\n``````\n\nUse freeze initially to download external resources.\n\n $ freeze buildout.cfg\n\nThis command makes new ways to work with buildout more easy to handle.\nYou can now easily put company wide default buildout files on a central server.\nWithout a helper like the freeze command, you must choose between two bad choices:\n\n - reference the config files directly.\n\n If you update your buildout files in such a way that each referencing project needs to be updated, you immediately broke them all. Without a CI system that triggers builds periodically, you might not even notice before you break a new buildout run on production\n\n - copy the config file into the project\n\n You know what happens, you never update the file and suddenly you have N best practices.\n\nWith freeze and a proper CI system you can get the advantages of both options without the disadvantes. Use freeze to have a local copy. On your CI system, have two tests. One normal one, and one that will run freeze before running buildout. This way you test if your current configuration works and if your current configuration would work with the latest up to date buildout files!\n\nversion_info\n````````````\n\nThis command is helpful during project updates. If you want to update your Plone Site to the newest Plone Patch version, you reference the newest url from Plone, like `http://dist.plone.org/release/4.3.7/versions.cfg` and then you run the version_info command and look for version information printed in red. In these cases you might have to update or remove your own version pins.\n\nContribute\n----------\n\n- Issue Tracker: https://github.com/collective/buildout_helpers/issues\n- Source Code: https://github.com/collective/buildout_helpers\n\nContributors\n============\n\n- Patrick Gerken, patrick.gerken@zumtobelgroup.com\n\nChangelog\n=========\n\n\n1.0.1 (2016-05-02)\n------------------\n\n- Bugfix whif source repo fs\n [do3cc]\n\n\n1.0.0 (2016-03-01)\n------------------\n\n- This package is working well in production. No more betas.\n [do3cc]\n\n- Change cmd line parameter for normalizer from -c to -C.\n --check is unchanged and should be prefered in CI configs.\n [do3cc]\n\n\n1.0.0b5 (2015-12-16)\n--------------------\n\n- Slightly better error handling for normalize_buildout.\n [do3cc]\n\n- Fixed an error in version info, not handling remote urls properly.\n [do3cc]\n\n- Fixed an error in version info, extends order was backwards.\n [do3cc]\n\n- Normalize now sorts case insensitive.\n [do3cc]\n\n1.0.0b4 (2015-12-14)\n--------------------\n\n- Last release broke, I don't trust what is as 1.0.0b3 on pypi.\n [do3cc]\n\n\n1.0.0b3 (2015-12-14)\n--------------------\n\n- Now normalize_buildouts accepts many config files in one run.\n [do3cc]\n\n\n1.0.0b2 (2015-12-14)\n--------------------\n\n- Mostly refactor freeze command. Still hard to read and needs more love.\n [do3cc]\n\n\n1.0.0b1 (2015-12-14)\n--------------------\n\n- Add freeze command, downloads all external buildout files, with\n headers that allow the same freeze command to update it.\n [do3cc]\n\n- Add version info command that show which buildout file pins which\n version. Inspired from @jensens script\n [do3cc]\n\n- Rename package to buildout_helpers. Namespace packages cause trobule\n with pip and buildout\n [do3cc]\n\n0.3.0 (2015-09-22)\n------------------\n\n- Mr.developer variables in buildout sections are now separated\n and at the end of the buildout section\n [do3cc]\n\n- Sources sections are at the end now\n [do3cc]\n\n- Multiline options do not need an indent of 4 spaces, one is enough.\n Now this script correctly identifies them\n [do3cc]\n\n\n0.2.0 (2015-09-11)\n------------------\n\n- Support piping.\n [do3cc]\n\n- Remove unneeded dependency.\n [do3cc]\n\n- Fix 3 bugs resulting in bad buildout.cfgs.\n [do3cc]\n\n\n0.1 (2015-09-10)\n----------------\n\n- Initial release.\n [do3cc]", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/buildout_helpers", "keywords": "Python Plone", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "buildout-helpers", "package_url": "https://pypi.org/project/buildout-helpers/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/buildout-helpers/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/buildout_helpers" }, "release_url": "https://pypi.org/project/buildout-helpers/1.0.1/", "requires_dist": null, "requires_python": "", "summary": "A buildout config file normalizer", "version": "1.0.1" }, "last_serial": 2094976, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "ab4cbc1acb5db1bb9680c8882024b204", "sha256": "ad0146bf484cda5ecc3ed0d1ff9fdd01c549c39f6d2e352984abcdceefd35775" }, "downloads": -1, "filename": "buildout_helpers-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ab4cbc1acb5db1bb9680c8882024b204", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15474, "upload_time": "2016-03-01T21:18:58", "url": "https://files.pythonhosted.org/packages/48/96/b50001640d111d3ec08cec6bc101cbe27608d25d3a7e76757da76a7810a7/buildout_helpers-1.0.0.tar.gz" } ], "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "d512138201f75458d26a1d195182c703", "sha256": "b455051c5117bc82d4f4b93f557f9cde71f2bec1a528f57812ad7da9c9b1cd1a" }, "downloads": -1, "filename": "buildout_helpers-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "d512138201f75458d26a1d195182c703", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12769, "upload_time": "2015-12-14T02:40:19", "url": "https://files.pythonhosted.org/packages/ab/16/86835e1817a410c5c5a5af7aeff0d12db6327b120e7940ef3719907df1bd/buildout_helpers-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "6c9fd0ea633df4581daf905582a1098f", "sha256": "491f4c5a958bfed00bfdf9a9e6c1843b259bb9a6eba525e0b2e5a4a7c85eb8d2" }, "downloads": -1, "filename": "buildout_helpers-1.0.0b2.tar.gz", "has_sig": false, "md5_digest": "6c9fd0ea633df4581daf905582a1098f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12810, "upload_time": "2015-12-14T17:26:09", "url": "https://files.pythonhosted.org/packages/3b/6f/96203987b2b2f2bdeeae9a7e9b3f68ca6032c5125fc7fc8b888ede76fd13/buildout_helpers-1.0.0b2.tar.gz" } ], "1.0.0b3": [ { "comment_text": "", "digests": { "md5": "9d68d5aa54df687e53fa9ce4419fd3fe", "sha256": "dab5a3174fabafbe86120c0164eb88f2f93a650220621f5bfe88887f33decdb4" }, "downloads": -1, "filename": "buildout_helpers-1.0.0b3.tar.gz", "has_sig": false, "md5_digest": "9d68d5aa54df687e53fa9ce4419fd3fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13047, "upload_time": "2015-12-14T18:03:21", "url": "https://files.pythonhosted.org/packages/b4/c0/a782c063e5ef58bc69f77afb6ea718559b44be1b096b45e0f1ec61347d6e/buildout_helpers-1.0.0b3.tar.gz" } ], "1.0.0b4": [ { "comment_text": "", "digests": { "md5": "f342f766f66ea3a0e0673ee3b9112a71", "sha256": "e6d5d8d18ab3f2909fa919b6dfbb92e1407c50c5b5465a68eef16ac8d5443dad" }, "downloads": -1, "filename": "buildout_helpers-1.0.0b4.tar.gz", "has_sig": false, "md5_digest": "f342f766f66ea3a0e0673ee3b9112a71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13137, "upload_time": "2015-12-14T18:05:23", "url": "https://files.pythonhosted.org/packages/ef/28/b548d318964341ccef5a7120622fdc8976189eabc84f15d796df8f28ff71/buildout_helpers-1.0.0b4.tar.gz" } ], "1.0.0b5": [ { "comment_text": "", "digests": { "md5": "8cc1941fa289523399ab4469f2792f2c", "sha256": "f9da6454712867b59f732f95e110a3fcc230a47c83107b53e59720d7473e5c3b" }, "downloads": -1, "filename": "buildout_helpers-1.0.0b5.tar.gz", "has_sig": false, "md5_digest": "8cc1941fa289523399ab4469f2792f2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13360, "upload_time": "2015-12-16T14:13:38", "url": "https://files.pythonhosted.org/packages/5e/a6/e8cea0996185dc300342c912856c1a46623abb7994f8d4f1d5fd303bde72/buildout_helpers-1.0.0b5.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e7842620cf76c2281e7f62cafb83075e", "sha256": "27b73ca4ca6dda4914b05b543b158b36a6e0cac3f8d36c5b4a819d1434ac31b2" }, "downloads": -1, "filename": "buildout_helpers-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e7842620cf76c2281e7f62cafb83075e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15560, "upload_time": "2016-05-02T14:21:11", "url": "https://files.pythonhosted.org/packages/d4/61/6c491566ff94714cea0b496aeebc8a58192cde4acfceb3cfed0133bac703/buildout_helpers-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e7842620cf76c2281e7f62cafb83075e", "sha256": "27b73ca4ca6dda4914b05b543b158b36a6e0cac3f8d36c5b4a819d1434ac31b2" }, "downloads": -1, "filename": "buildout_helpers-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e7842620cf76c2281e7f62cafb83075e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15560, "upload_time": "2016-05-02T14:21:11", "url": "https://files.pythonhosted.org/packages/d4/61/6c491566ff94714cea0b496aeebc8a58192cde4acfceb3cfed0133bac703/buildout_helpers-1.0.1.tar.gz" } ] }