blob: 2c1cc04f030d212ae05b93ce70e924ef431d577e [file] [log] [blame]
#!/usr/bin/env python3
import datetime
import sys
# Debian/Ubuntu: apt-get install python-git
# PIP: pip install GitPython
import git
repo = git.Repo('.', search_parent_directories=True)
def get_tag_for_commit(repo, commit):
for tag in repo.tags:
if tag.commit == commit:
return tag.name
return None
if repo.head.is_detached:
branch_or_tag = get_tag_for_commit(repo, repo.head.commit)
if branch_or_tag is None:
branch_or_tag = '?'
else:
branch_or_tag = repo.active_branch
dirty = repo.is_dirty()
ts = datetime.datetime.utcnow()
build_id = '%s/%s@%s%s' % (ts.strftime('%Y%m%d-%H%M%S'),
branch_or_tag,
str(repo.head.commit)[:8],
'+' if dirty else '')
version = None
if not dirty:
version = get_tag_for_commit(repo, repo.head.commit)
if version is None:
version = ts.strftime('%Y%m%d%H')
if len(sys.argv) == 1 or sys.argv[1] == '-':
f = sys.stdout
else:
f = open(sys.argv[1], 'w')
with open('version.go', 'w') as f:
f.write("""\
package main
const (
\tVersion = "{version}"
\tBuildId = "{build_id}"
)
""".format(version=version, build_id=build_id))
with open('version.txt', 'w') as f:
f.write(version)
f.close()