aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/project
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2023-03-02 22:56:06 +0100
committerEgor Tensin <Egor.Tensin@gmail.com>2023-03-02 23:06:26 +0100
commitbc3c7c7190c5acaeb03ef82dc41cc716aaff76c6 (patch)
treee732851b92346135bcff5686181db6074df9724b /project
parentworkflows/basic: test more Python versions (diff)
downloadcmake-common-bc3c7c7190c5acaeb03ef82dc41cc716aaff76c6.tar.gz
cmake-common-bc3c7c7190c5acaeb03ef82dc41cc716aaff76c6.zip
add runtime version information
Diffstat (limited to 'project')
-rw-r--r--project/boost/build.py3
-rw-r--r--project/boost/download.py3
-rw-r--r--project/ci/boost.py3
-rw-r--r--project/ci/cmake.py3
-rw-r--r--project/cmake/build.py3
-rw-r--r--project/version.py15
6 files changed, 30 insertions, 0 deletions
diff --git a/project/boost/build.py b/project/boost/build.py
index fd73b6e..bd4fd6b 100644
--- a/project/boost/build.py
+++ b/project/boost/build.py
@@ -37,6 +37,7 @@ from project.os import on_linux_like
from project.platform import Platform
from project.toolset import Toolset, ToolsetVersion
from project.utils import normalize_path, setup_logging
+import project.version
DEFAULT_PLATFORMS = (Platform.AUTO,)
@@ -150,6 +151,8 @@ def _parse_args(argv=None):
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
+ project.version.add_to_arg_parser(parser)
+
platform_options = '/'.join(map(str, Platform.all()))
configuration_options = '/'.join(map(str, Configuration.all()))
# These are used to put the built libraries into proper stage/
diff --git a/project/boost/download.py b/project/boost/download.py
index 3f1366e..b5bf684 100644
--- a/project/boost/download.py
+++ b/project/boost/download.py
@@ -27,6 +27,7 @@ import urllib.request
from project.boost.archive import Archive, PermanentStorage, TemporaryStorage
from project.boost.version import Version
from project.utils import normalize_path, mkdir_parent, retry, setup_logging
+import project.version
class Download:
@@ -127,6 +128,8 @@ def _parse_args(argv=None):
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
+ project.version.add_to_arg_parser(parser)
+
parser.add_argument('--unpack', metavar='DIR', dest='unpack_dir',
type=normalize_path,
help='directory to unpack the archive to')
diff --git a/project/ci/boost.py b/project/ci/boost.py
index 0d89b75..65f4da0 100644
--- a/project/ci/boost.py
+++ b/project/ci/boost.py
@@ -11,6 +11,7 @@ from project.boost.download import Download, download
from project.ci.dirs import Dirs
from project.linkage import Linkage
from project.utils import setup_logging
+import project.version
def _parse_args(argv=None):
@@ -21,6 +22,8 @@ def _parse_args(argv=None):
description=Dirs.get_boost_help(),
formatter_class=argparse.RawDescriptionHelpFormatter)
+ project.version.add_to_arg_parser(parser)
+
parser.add_argument('--link', metavar='LINKAGE',
nargs='*', type=Linkage.parse,
help='how the libraries are linked')
diff --git a/project/ci/cmake.py b/project/ci/cmake.py
index 1f49f78..13929f7 100644
--- a/project/ci/cmake.py
+++ b/project/ci/cmake.py
@@ -10,6 +10,7 @@ import sys
from project.ci.dirs import Dirs
from project.cmake.build import BuildParameters, build
from project.utils import setup_logging
+import project.version
def _parse_args(argv=None):
@@ -20,6 +21,8 @@ def _parse_args(argv=None):
description=Dirs.get_cmake_help(),
formatter_class=argparse.RawDescriptionHelpFormatter)
+ project.version.add_to_arg_parser(parser)
+
# The hint parameter is basically a workaround for when this is run on a
# CI, _but_ testing another CI is desired. This shouldn't be used in a
# real CI workflow.
diff --git a/project/cmake/build.py b/project/cmake/build.py
index 3c4853d..9c98ba3 100644
--- a/project/cmake/build.py
+++ b/project/cmake/build.py
@@ -30,6 +30,7 @@ from project.configuration import Configuration
from project.platform import Platform
from project.toolset import Toolset, ToolsetVersion
from project.utils import normalize_path, mkdir_parent, run, setup_logging
+import project.version
DEFAULT_PLATFORM = Platform.AUTO
@@ -211,6 +212,8 @@ def _parse_args(argv=None):
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
+ project.version.add_to_arg_parser(parser)
+
parser.add_argument('--build', metavar='DIR', dest='build_dir',
type=normalize_path,
help='build directory (temporary directory unless specified)')
diff --git a/project/version.py b/project/version.py
new file mode 100644
index 0000000..8cff333
--- /dev/null
+++ b/project/version.py
@@ -0,0 +1,15 @@
+try:
+ import importlib.metadata as metadata
+except ImportError:
+ import importlib_metadata as metadata
+
+
+try:
+ __version__ = metadata.version('cmake_common')
+except Exception:
+ __version__ = 'unknown'
+
+
+def add_to_arg_parser(parser):
+ parser.add_argument('--version', '-V', action='version',
+ version=f'%(prog)s {__version__}')