74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Authors: Douglas Creager <dcreager@dcreager.net>
|
|
# Calum Lind <calumlind@gmail.com>
|
|
#
|
|
# This file is placed into the public domain.
|
|
#
|
|
# Calculates the current version number by first checking output of “git describe”,
|
|
# modified to conform to PEP 386 versioning scheme. If “git describe” fails
|
|
# (likely due to using release tarball rather than git working copy), then fall
|
|
# back on reading the contents of the RELEASE-VERSION file.
|
|
#
|
|
# Usage: Import in setup.py, and use result of get_version() as package version:
|
|
#
|
|
# from version import *
|
|
#
|
|
# setup(
|
|
# ...
|
|
# version=get_version(),
|
|
# ...
|
|
# )
|
|
#
|
|
# Script will automatically update the RELEASE-VERSION file, if needed.
|
|
# Note that RELEASE-VERSION file should *not* be checked into git; please add
|
|
# it to your top-level .gitignore file.
|
|
#
|
|
# You'll probably want to distribute the RELEASE-VERSION file in your
|
|
# sdist tarballs; to do this, just create a MANIFEST.in file that
|
|
# contains the following line:
|
|
#
|
|
# include RELEASE-VERSION
|
|
#
|
|
|
|
__all__ = ("get_version")
|
|
|
|
from subprocess import PIPE, Popen
|
|
|
|
VERSION_FILE = "RELEASE-VERSION"
|
|
|
|
|
|
def call_git_describe(prefix="", suffix=""):
|
|
cmd = "git describe --tags --match %s[0-9]*" % prefix
|
|
try:
|
|
output = Popen(cmd.split(), stdout=PIPE, stderr=PIPE).communicate()
|
|
version = output[0].strip().replace(prefix, "")
|
|
if "-" in version:
|
|
version = ".dev".join(version.replace(suffix, "").split("-")[:2])
|
|
return version
|
|
except OSError:
|
|
return None
|
|
|
|
|
|
def get_version(prefix="", suffix=""):
|
|
try:
|
|
with open(VERSION_FILE, "r") as f:
|
|
release_version = f.readline().strip()
|
|
except IOError:
|
|
release_version = None
|
|
|
|
version = call_git_describe(prefix, suffix)
|
|
|
|
if not version:
|
|
version = release_version
|
|
if not version:
|
|
raise ValueError("Cannot find the version number!")
|
|
|
|
if version != release_version:
|
|
with open(VERSION_FILE, "w") as f:
|
|
f.write("%s\n" % version)
|
|
|
|
return version
|
|
|
|
if __name__ == "__main__":
|
|
print get_version(prefix="deluge-", suffix=".dev0")
|