1212
1313from __future__ import print_function , with_statement
1414
15+ import os
1516import os .path as osp
1617import re
1718import shutil
@@ -128,10 +129,27 @@ def diff_package_dicts(dict1, dict2):
128129 text += package .to_wiki ()
129130 text += '\r \n '
130131 return text
132+
131133
132-
133- def compare_package_indexes (version1 , version2 , rootdir = None ):
134+ def find_closer_version (version1 ):
135+ """Find version which is the closest to `version`"""
136+ builddir = osp .join (get_basedir (version1 ), 'build' )
137+ func = lambda name : re .match (r'WinPython-([0-9\.]*)\.txt' , name )
138+ versions = [func (name ).groups ()[0 ]
139+ for name in os .listdir (builddir ) if func (name )]
140+ try :
141+ index = versions .index (version1 )
142+ except ValueError :
143+ raise ValueError ("Unknown version %s" % version1 )
144+ if index == 0 :
145+ raise ValueError ("No version prior to %s" % version1 )
146+ return versions [index - 1 ]
147+
148+
149+ def compare_package_indexes (version2 , version1 = None , rootdir = None ):
134150 """Compare two package index Wiki pages"""
151+ if version1 is None :
152+ version1 = find_closer_version (version2 )
135153 text = '\r \n ' .join (["== History of changes for WinPython %s ==" % version2 ,
136154 "" , "The following changes were made to WinPython " \
137155 "distribution since version %s." % version1 , "" , "" ])
@@ -147,10 +165,18 @@ def compare_package_indexes(version1, version2, rootdir=None):
147165 return text
148166
149167
150- def write_changelog (version1 , version2 , rootdir = None ):
168+ def _copy_all_changelogs (version , basedir ):
169+ basever = '.' .join (version .split ('.' )[:2 ])
170+ for name in os .listdir (CHANGELOGS_DIR ):
171+ if re .match (r'WinPython-%s([0-9\.]*)\.txt' % basever , name ):
172+ shutil .copyfile (osp .join (CHANGELOGS_DIR , name ),
173+ osp .join (basedir , 'build' , name ))
174+
175+ def write_changelog (version2 , version1 = None , rootdir = None ):
151176 """Write changelog between version1 and version2 of WinPython"""
152- text = compare_package_indexes (version1 , version2 , rootdir = rootdir )
153- basedir = get_basedir (version1 , rootdir = rootdir )
177+ text = compare_package_indexes (version2 , version1 , rootdir = rootdir )
178+ basedir = get_basedir (version2 , rootdir = rootdir )
179+ _copy_all_changelogs (version2 , basedir )
154180 fname = osp .join (basedir , 'build' , 'WinPython-%s_History.txt' % version2 )
155181 with open (fname , 'wb' ) as fdesc :
156182 fdesc .write (text )
@@ -172,15 +198,17 @@ def test_parse_package_index_wiki(version, rootdir=None):
172198 print ('' )
173199
174200
175- def test_compare (basedir , version1 , version2 ):
176- print (compare_package_indexes (basedir , version1 , version2 ))
201+ def test_compare (basedir , version2 , version1 ):
202+ print (compare_package_indexes (basedir , version2 , version1 ))
177203
178204
179205if __name__ == '__main__' :
180206# test_parse_package_index_wiki('2.7.3.3')
181- # print(compare_package_indexes('2.7.3.1', '2.7.3.3'))
182- # write_changelog('2.7.4.0', '2.7.4.1')
183- write_changelog ('2.7.4.1' , '2.7.5.0' )
184- # write_changelog('3.3.0.0beta1', '3.3.0.0beta2')
185- # write_changelog('3.3.1.0', '3.3.1.1')
186- write_changelog ('3.3.1.1' , '3.3.2.0' )
207+ # print(compare_package_indexes('2.7.3.3', '2.7.3.1'))
208+ # write_changelog('2.7.4.1', '2.7.4.0')
209+ # write_changelog('2.7.5.0', '2.7.4.1')
210+ write_changelog ('2.7.5.1' )#, '2.7.5.0')
211+ # write_changelog('3.3.0.0beta2', '3.3.0.0beta1')
212+ # write_changelog('3.3.1.1', '3.3.1.0')
213+ # write_changelog('3.3.2.0', '3.3.1.1')
214+ # write_changelog('3.3.2.1', '3.3.2.0')
0 commit comments