Make sure version.py runs succesfully even if git is not installed.
[tinc] / version.py
1 #!/usr/bin/env python3
2
3 from os import path, environ
4 from sys import argv, stderr
5 import subprocess as subp
6
7 prefix = "release-"
8 source_root = path.dirname(path.realpath(__file__))
9 source_root = environ.get("MESON_SOURCE_ROOT", source_root)
10
11 cmd = [
12     "git",
13     "--git-dir",
14     path.join(source_root, ".git"),
15     "describe",
16     "--always",
17     "--tags",
18     "--match=" + prefix + "*",
19 ]
20
21 if "short" in argv:
22     cmd.append("--abbrev=0")
23
24 version = None
25
26 try:
27     result = subp.run(cmd, stdout=subp.PIPE, encoding="utf-8")
28     if not result.returncode:
29         version = result.stdout
30 except FileNotFoundError:
31     pass
32
33 if not version:
34     try:
35         with open(path.join(source_root, "VERSION"), "r") as f:
36             version = f.read().strip()
37     except OSError as e:
38         print("could not read version from file", e, file=stderr)
39 elif version.startswith(prefix):
40     version = version[len(prefix):].strip()
41
42 print(version if version else "unknown", end="")