`fdroid --version` for installed releases and running from git

This will report the version embedded in the module if it is installed, and
will report `git describe` if being run from git.  If someone installs from
git using pip, this will probably report the version in setup.py, which
will be wrong.  But that is not a documented install method, and I haven't
heard of anyone using it.  The recommended way is to run straight from git.
This commit is contained in:
Hans-Christoph Steiner 2015-09-01 11:23:23 +02:00
parent 4a4bb3e7a5
commit 3fc2a99d71
3 changed files with 37 additions and 5 deletions

View File

@ -84,10 +84,10 @@ __vercode() {
__complete_options() {
case "${cur}" in
--*)
COMPREPLY=( $( compgen -W "--help ${lopts}" -- $cur ) )
COMPREPLY=( $( compgen -W "--help --version ${lopts}" -- $cur ) )
return 0;;
*)
COMPREPLY=( $( compgen -W "-h ${opts} --help ${lopts}" -- $cur ) )
COMPREPLY=( $( compgen -W "-h ${opts} --help --version ${lopts}" -- $cur ) )
return 0;;
esac
}

32
fdroid
View File

@ -21,7 +21,7 @@
import sys
import logging
from fdroidserver.common import FDroidException
import fdroidserver.common
from optparse import OptionError
commands = {
@ -45,7 +45,7 @@ commands = {
def print_help():
print "usage: fdroid [-h|--help] <command> [<args>]"
print "usage: fdroid [-h|--help|--version] <command> [<args>]"
print
print "Valid commands are:"
for cmd, summary in commands.items():
@ -64,6 +64,32 @@ def main():
if command in ('-h', '--help'):
print_help()
sys.exit(0)
elif command == '--version':
import os.path
output = 'no version info found!'
cmddir = os.path.realpath(os.path.dirname(__file__))
moduledir = os.path.realpath(os.path.dirname(fdroidserver.common.__file__) + '/..')
if cmddir == moduledir:
# running from git
os.chdir(cmddir)
if os.path.isdir('.git'):
import subprocess
try:
output = subprocess.check_output(['git', 'describe'],
stderr=subprocess.STDOUT)
except subprocess.CalledProcessError:
output = 'git commit ' + subprocess.check_output(['git', 'rev-parse', 'HEAD'])
elif os.path.exists('setup.py'):
import re
m = re.search(r'''.*[\s,\(]+version\s*=\s*["']([0-9a-z.]+)["'].*''',
open('setup.py').read(), flags=re.MULTILINE)
if m:
output = m.group(1) + '\n'
else:
from pkg_resources import get_distribution
output = get_distribution('fdroidserver').version + '\n'
print(output),
sys.exit(0)
else:
print "Command '%s' not recognised.\n" % command
print_help()
@ -92,7 +118,7 @@ def main():
try:
mod.main()
# These are ours, contain a proper message and are "expected"
except FDroidException, e:
except fdroidserver.common.FDroidException, e:
if verbose:
raise
else:

View File

@ -102,6 +102,12 @@ for testcase in $WORKSPACE/tests/*.TestCase; do
done
#------------------------------------------------------------------------------#
echo_header "print fdroid version"
$fdroid --version
#------------------------------------------------------------------------------#
echo_header "build the TeX manual"