hgkw/version.py
author Christian Ebert <blacktrash@gmx.net>
Fri, 20 Apr 2007 00:24:32 +0200
branchkwmap-templates
changeset 159 28fd5b5eb3ad
parent 124 99dc49c5bcfb
permissions -rw-r--r--
Simplify backward compatible import For an extension it's not worth the trouble to try for demandload.

# $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)