Commit c9b5f105 authored by Chris Withers's avatar Chris Withers

Merge pull request #72 from reinout/update-versions-file-without-show

Fix for #71 - looks good to me.
parents 488a1c8e 397648f1
......@@ -4,7 +4,7 @@ Change History
2.0.1 (2013-02-14)
==================
- Fixe for distutils scripts installation on Python 3, related to
- Fix for distutils scripts installation on Python 3, related to
``__pycache__`` directories.
- Fixed: encoding data in non-entry-point-based scripts was lost.
......
......@@ -325,8 +325,8 @@ class Buildout(DictMixin):
self.show_picked_versions = bool_option(options,
'show-picked-versions')
self.update_versions_file = options['update-versions-file']
zc.buildout.easy_install.show_picked_versions(
self.show_picked_versions)
zc.buildout.easy_install.store_picked_versions(
self.show_picked_versions or self.update_versions_file)
download_cache = options.get('download-cache')
if download_cache:
......@@ -996,8 +996,6 @@ class Buildout(DictMixin):
def _print_picked_versions(self):
Installer = zc.buildout.easy_install.Installer
if not self.show_picked_versions:
return
if not Installer._picked_versions:
# Don't print empty output.
return
......@@ -1016,11 +1014,13 @@ class Buildout(DictMixin):
output.extend(required_output)
if self.show_picked_versions:
print_("Versions had to be automatically picked.")
print_("The following part definition lists the versions picked:")
print_('\n'.join(output))
if self.update_versions_file:
# Also write to the versions file.
# Write to the versions file.
if os.path.exists(self.update_versions_file):
output[:1] = [
'',
......@@ -1030,7 +1030,7 @@ class Buildout(DictMixin):
f = open(self.update_versions_file, 'a')
f.write('\n'.join(output))
f.close()
print_("This information has been written to " +
print_("Picked versions have been written to " +
self.update_versions_file)
def setup(self, args):
......
......@@ -129,7 +129,7 @@ class Installer:
_prefer_final = True
_use_dependency_links = True
_allow_picked_versions = True
_show_picked_versions = False
_store_picked_versions = False
def __init__(self,
dest=None,
......@@ -734,10 +734,10 @@ def allow_picked_versions(setting=None):
Installer._allow_picked_versions = bool(setting)
return old
def show_picked_versions(setting=None):
old = Installer._show_picked_versions
def store_picked_versions(setting=None):
old = Installer._store_picked_versions
if setting is not None:
Installer._show_picked_versions = bool(setting)
Installer._store_picked_versions = bool(setting)
return old
......@@ -1260,7 +1260,7 @@ class MissingDistribution(zc.buildout.UserError):
def _log_requirement(ws, req):
if (not logger.isEnabledFor(logging.DEBUG) and
not Installer._show_picked_versions):
not Installer._store_picked_versions):
# Sorting the working set and iterating over it's requirements
# is expensive, so short circuit the work if it won't even be
# logged. When profiling a simple buildout with 10 parts with
......
......@@ -357,7 +357,7 @@ at the end.
The following part definition lists the versions picked:
[versions]
spam = 2
This information has been written to my_versions.cfg
Picked versions have been written to my_versions.cfg
The versions file now contains the extra pin:
......@@ -370,6 +370,37 @@ And re-running buildout doesn't report any picked versions anymore:
Updating foo.
recipe v2
If you've enabled ``update-versions-file`` but not ``show-picked-versions``,
buildout will append the versions to your versions file anyway (without
printing them to the console):
>>> write('my_versions.cfg',
... '''
... [versions]
... distribute = 0.6.34
... ''')
>>> write('buildout.cfg',
... '''
... [buildout]
... parts = foo
... extends = my_versions.cfg
... update-versions-file = my_versions.cfg
... find-links = %s
... show-picked-versions = false
...
... [foo]
... recipe = spam
... ''' % join('recipe', 'dist'))
>>> print_(system(buildout), end='') # doctest: +ELLIPSIS
Updating foo.
recipe v2
Picked versions have been written to my_versions.cfg
The versions file contains the extra pin:
>>> 'spam = 2' in open('my_versions.cfg').read()
True
Because buildout now includes buildout-versions' (and the older
buildout.dumppickedversions') functionality, it warns if these extensions are
configured.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment