forked from openlp/openlp
Implement natural sorting so that our version number is correct.
This commit is contained in:
parent
c1db424460
commit
14088e71bb
46
setup.py
46
setup.py
@ -28,10 +28,53 @@
|
||||
###############################################################################
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
import re
|
||||
|
||||
VERSION_FILE = 'openlp/.version'
|
||||
|
||||
try:
|
||||
def natural_sort_key(s):
|
||||
"""
|
||||
Return a tuple by which s is sorted.
|
||||
|
||||
``s``
|
||||
A string value from the list we want to sort.
|
||||
"""
|
||||
def try_int(s):
|
||||
"""
|
||||
Convert string s to an integer if possible. Fail silently and return
|
||||
the string as-is if it isn't an integer.
|
||||
|
||||
``s``
|
||||
The string to try to convert.
|
||||
"""
|
||||
try:
|
||||
return int(s)
|
||||
except:
|
||||
return s
|
||||
return map(try_int, re.findall(r'(\d+|\D+)', s))
|
||||
|
||||
def natural_compare(a, b):
|
||||
"""
|
||||
Compare two strings naturally and return the result.
|
||||
|
||||
``a``
|
||||
A string to compare.
|
||||
|
||||
``b``
|
||||
A string to compare.
|
||||
"""
|
||||
return cmp(natural_sort_key(a), natural_sort_key(b))
|
||||
|
||||
def natural_sort(seq, compare=natural_compare):
|
||||
"""
|
||||
Returns a copy of seq, sorted by natural string sort.
|
||||
"""
|
||||
import copy
|
||||
temp = copy.copy(seq)
|
||||
temp.sort(compare)
|
||||
return temp
|
||||
|
||||
from bzrlib.branch import Branch
|
||||
b = Branch.open_containing('.')[0]
|
||||
b.lock_read()
|
||||
@ -46,7 +89,8 @@ try:
|
||||
if revision_id in tags:
|
||||
version = u'%s' % tags[revision_id][0]
|
||||
else:
|
||||
version = '%s-bzr%s' % (sorted(b.tags.get_tag_dict().keys())[-1], revno)
|
||||
version = '%s-bzr%s' % \
|
||||
(natural_sort(b.tags.get_tag_dict().keys())[-1], revno)
|
||||
ver_file = open(VERSION_FILE, u'w')
|
||||
ver_file.write(version)
|
||||
ver_file.close()
|
||||
|
Loading…
Reference in New Issue
Block a user