]> git.openstreetmap.org Git - nominatim.git/commitdiff
new nominatim --version CLI argument
authorMarc Tobias <mtmail@gmx.net>
Tue, 3 May 2022 23:33:25 +0000 (01:33 +0200)
committerMarc Tobias <mtmail@gmx.net>
Tue, 3 May 2022 23:33:25 +0000 (01:33 +0200)
nominatim/cli.py
test/python/cli/test_cli.py

index 315c1cfef45c21daf682b2df9e2b75a68b1327e3..2ddf5882376dab7b4174112016695dfb5d647a8d 100644 (file)
@@ -18,6 +18,7 @@ from nominatim.config import Configuration
 from nominatim.tools.exec_utils import run_legacy_script, run_php_server
 from nominatim.errors import UsageError
 from nominatim import clicmd
+from nominatim import version
 from nominatim.clicmd.args import NominatimArgs
 
 LOG = logging.getLogger()
@@ -36,6 +37,11 @@ class CommandlineParser:
         self.subs = self.parser.add_subparsers(title='available commands',
                                                dest='subcommand')
 
+        # Global arguments that only work if no sub-command given
+        self.parser.add_argument('--version', action='version',
+                                 version=CommandlineParser.nominatim_version_text(),
+                                 help='Print Nominatim version and exit')
+
         # Arguments added to every sub-command
         self.default_args = argparse.ArgumentParser(add_help=False)
         group = self.default_args.add_argument_group('Default arguments')
@@ -51,6 +57,11 @@ class CommandlineParser:
         group.add_argument('-j', '--threads', metavar='NUM', type=int,
                            help='Number of parallel threads to use')
 
+    @staticmethod
+    def nominatim_version_text():
+        """ Program name and version number as string
+        """
+        return "Nominatim version %s.%s.%s.%s\n" % version.NOMINATIM_VERSION
 
     def add_subcommand(self, name, cmd):
         """ Add a subcommand to the parser. The subcommand must be a class
index 7743d601189a0dd7ef92a6a48d0de55ca376bddf..e8e185049a15ba46f5672f4c397e83845d15e615 100644 (file)
@@ -26,6 +26,13 @@ def test_cli_help(cli_call, capsys):
     captured = capsys.readouterr()
     assert captured.out.startswith('usage:')
 
+def test_cli_version(cli_call, capsys):
+    """ Running nominatim tool --version prints a version string.
+    """
+    assert cli_call('--version') == 1
+
+    captured = capsys.readouterr()
+    assert captured.out.startswith('Nominatim version')
 
 @pytest.mark.parametrize("name,oid", [('file', 'foo.osm'), ('diff', 'foo.osc')])
 def test_cli_add_data_file_command(cli_call, mock_func_factory, name, oid):