| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/usr/bin/env python3
- import argparse
- import datetime
- import subprocess
- def git_short_rev():
- try:
- return subprocess.check_output([
- 'git',
- 'rev-parse',
- '--short',
- 'HEAD',
- ]).decode('utf-8').strip()
- except Exception:
- raise RuntimeError("Could not read git revision. Make sure you have git installed and you're working with a git clone of the repository.")
- def current_date():
- return datetime.date.today().strftime('%Y-%m-%d')
- def git_date(short=True):
- try:
- iso = subprocess.check_output([
- 'git',
- 'log',
- '-1',
- '--format=%ci',
- 'HEAD',
- ]).decode('utf-8').strip()
- if short:
- return iso.split(' ')[0]
- else:
- return iso
- except Exception:
- raise RuntimeError("Could not read git commit date. Make sure you have git installed and you're working with a git clone of the repository.")
- def git_release_version(search_prefix, fallback=None):
- try:
- tags = subprocess.check_output([
- 'git',
- 'tag',
- '--points-at',
- 'HEAD',
- ]).decode('utf-8').splitlines()
- for tag in tags:
- if tag.startswith(search_prefix):
- return tag[len(search_prefix):]
- return fallback
- except Exception:
- raise RuntimeError("Could not read git release tags. Make sure you have git installed and you're working with a git clone of the repository.")
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- subparsers = parser.add_subparsers(required=True, dest='option')
-
- parser_git_short_rev = subparsers.add_parser('git_short_rev')
-
- parser_git_date = subparsers.add_parser('git_date')
- parser_git_date.add_argument('--short', action='store_true')
- parser_git_release_version = subparsers.add_parser('git_release_version')
- parser_git_release_version.add_argument('search_prefix')
- args = parser.parse_args()
- if args.option == 'git_short_rev':
- print(git_short_rev())
- elif args.option == 'git_date':
- print(git_date(short=args.short))
- elif args.option == 'git_release_version':
- print(git_release_version(args.search_prefix, fallback='v#.#'))
- else:
- raise RuntimeError('Unexpected option')
|