X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fversion-cmd.py;h=9b23ea2726ce65656e052b944e9fdcede7cc2888;hb=cb239f7e4b42a8b307a72dd0af65ba38f4fc1182;hp=1a68a6cbf787a432bb43202c62da58ded875d10c;hpb=6f6a1111ea20316499ad748a1cb118ec5d5c117f;p=bup.git diff --git a/cmd/version-cmd.py b/cmd/version-cmd.py index 1a68a6c..9b23ea2 100755 --- a/cmd/version-cmd.py +++ b/cmd/version-cmd.py @@ -1,7 +1,17 @@ -#!/usr/bin/env python -import sys +#!/bin/sh +"""": # -*-python-*- +bup_python="$(dirname "$0")/bup-python" || exit $? +exec "$bup_python" "$0" ${1+"$@"} +""" +# end of bup preamble + +from __future__ import print_function +import re, sys + from bup import options -from bup.helpers import * +from bup import version + +version_rx = re.compile(r'^[0-9]+\.[0-9]+(\.[0-9]+)?(-[0-9]+-g[0-9abcdef]+)?$') optspec = """ bup version [--date|--commit|--tag] @@ -18,9 +28,38 @@ total = (opt.date or 0) + (opt.commit or 0) + (opt.tag 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] + + if opt.date: - print version_date() + print(version_date()) elif opt.commit: - print version_commit() + print(version_commit()) else: - print version_tag() + print(version_tag())