hgkw/version.py
author Christian Ebert <blacktrash@gmx.net>
Wed, 18 Jul 2007 16:12:14 +0200
branchkwmap-templates
changeset 186 c1b7b1d052de
parent 124 99dc49c5bcfb
permissions -rw-r--r--
Avoid global vars by passing opt args to kwrepo.file "Normal" reading of filelog just expands keywords in given data. Reading filelog for overwrite on commit, kwshrink, kwexpand triggers kwtemplater.process, which returns read data (expanding in case of commit, kwexpand; not expanding for kwshrink) and a count of keywords. If kwcnt is positive file will be overwritten.

# $Id$

'''version.py - hgkw version.
Code stolen from Mercurial, and simplified for my needs.
'''

import os, time

unknown_version = 'unknown'

def getversion(doreload=False):
    try:
        import hgkw.__version__
        if doreload:
            reload(hgkw.__version__)
        version = hgkw.__version__.version
    except ImportError:
        version = unknown_version
    return version

def rememberversion(version=None):
    if not version and os.path.isdir('.hg'):
        # get version from Mercurial
        p = os.popen('hg --quiet identify 2> %s' % os.devnull)
        ident = p.read()[:-1]
        if not p.close() and ident:
            if ident[-1] != '+':
                version = ident
            else:
                version = ident[:-1]
                version += time.strftime('+%Y%m%d')
    if version and version != getversion(): # write version
        directory = os.path.dirname(__file__)
        for suff in ['py', 'pyc', 'pyo']:
            try:
                os.unlink(os.path.join(directory, '__version__.%s' % suff))
            except OSError:
                pass
        f = open(os.path.join(directory, '__version__.py'), 'w')
        try:
            f.write('# this file is auto-generated\n')
            f.write('version = %r\n' % version)
        finally:
            f.close()
        # reload file
        getversion(doreload=True)