X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fcmd%2Fversion-cmd.py;h=bc1329c7cce8bf5c4ca230894ce1da3242b69d14;hb=4da04257d78f1f2e16925ab12817966f875cc4b3;hp=f7555a8aeaef8078d617cc41c1b7df089139cc46;hpb=887534c033738bd6b19464ca180b049e131d06a5;p=bup.git diff --git a/lib/cmd/version-cmd.py b/lib/cmd/version-cmd.py index f7555a8..bc1329c 100755 --- a/lib/cmd/version-cmd.py +++ b/lib/cmd/version-cmd.py @@ -1,65 +1,49 @@ #!/bin/sh """": # -*-python-*- -bup_python="$(dirname "$0")/bup-python" || exit $? -exec "$bup_python" "$0" ${1+"$@"} +# https://sourceware.org/bugzilla/show_bug.cgi?id=26034 +export "BUP_ARGV_0"="$0" +arg_i=1 +for arg in "$@"; do + export "BUP_ARGV_${arg_i}"="$arg" + shift + arg_i=$((arg_i + 1)) +done +# Here to end of preamble replaced during install +bup_python="$(dirname "$0")/../../config/bin/python" || exit $? +exec "$bup_python" "$0" """ # end of bup preamble from __future__ import absolute_import, print_function -import re, sys +import os.path, re, sys -from bup import options -from bup import version +sys.path[:0] = [os.path.dirname(os.path.realpath(__file__)) + '/..'] + +from bup import compat, options, version +from bup.io import byte_stream version_rx = re.compile(r'^[0-9]+\.[0-9]+(\.[0-9]+)?(-[0-9]+-g[0-9abcdef]+)?$') optspec = """ -bup version [--date|--commit|--tag] +bup version [--date|--commit] -- date display the date this version of bup was created commit display the git commit id of this version of bup -tag display the tag name of this version. If no tag is available, display the commit id """ o = options.Options(optspec) -(opt, flags, extra) = o.parse(sys.argv[1:]) +opt, flags, extra = o.parse(compat.argv[1:]) -total = (opt.date or 0) + (opt.commit or 0) + (opt.tag or 0) +total = (opt.date or 0) + (opt.commit or 0) if total > 1: o.fatal('at most one option expected') - -def version_date(): - """Format bup's version date string for output.""" - return version.DATE.split(' ')[0] - - -def version_commit(): - """Get the commit hash of bup's current version.""" - return version.COMMIT - - -def version_tag(): - """Format bup's version tag (the official version number). - - When generated from a commit other than one pointed to with a tag, the - returned string will be "unknown-" followed by the first seven positions of - the commit hash. - """ - names = version.NAMES.strip() - assert(names[0] == '(') - assert(names[-1] == ')') - names = names[1:-1] - l = [n.strip() for n in names.split(',')] - for n in l: - if n.startswith('tag: ') and version_rx.match(n[5:]): - return n[5:] - return 'unknown-%s' % version.COMMIT[:7] - +sys.stdout.flush() +out = byte_stream(sys.stdout) if opt.date: - print(version_date()) + out.write(version.date.split(b' ')[0] + b'\n') elif opt.commit: - print(version_commit()) + out.write(version.commit + b'\n') else: - print(version_tag()) + out.write(version.version + b'\n')