chiark / gitweb /
`fdroid --version` for installed releases and running from git
authorHans-Christoph Steiner <hans@eds.org>
Tue, 1 Sep 2015 09:23:23 +0000 (11:23 +0200)
committerHans-Christoph Steiner <hans@eds.org>
Tue, 1 Sep 2015 17:45:00 +0000 (19:45 +0200)
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.

completion/bash-completion
fdroid
tests/run-tests

index f4dc01d82f2a2d3a09ceb1d569cfd2202c0f48c8..0fd88d3bf052835220ddf5099d123e6301e9f53d 100644 (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
 }
diff --git a/fdroid b/fdroid
index f97d747306a6f9be7926dbb0f59911bfa6259792..91dc992925d647bec40b9702ce2d4a774bfd4db3 100755 (executable)
--- a/fdroid
+++ b/fdroid
@@ -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:
index 65ab0d88a21b8989c00c35795ff4f23e32c566f8..ce1b0fd131edc06e68ee89e3ffdac765503c4274 100755 (executable)
@@ -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"