]> git.openstreetmap.org Git - nominatim.git/blobdiff - src/nominatim_db/cli.py
Merge pull request #3467 from mtmail/docs-datrie
[nominatim.git] / src / nominatim_db / cli.py
index 746fbe3297c4ad91f0152ec1836d6ef1dab1b54a..41684fa1dbe9e37bf9c1d3e1a2c9ded9e7767715 100644 (file)
@@ -16,8 +16,8 @@ import sys
 import argparse
 from pathlib import Path
 
 import argparse
 from pathlib import Path
 
-from nominatim_core.config import Configuration
-from nominatim_core.errors import UsageError
+from .config import Configuration
+from .errors import UsageError
 from .tools.exec_utils import run_php_server
 from . import clicmd
 from . import version
 from .tools.exec_utils import run_php_server
 from . import clicmd
 from . import version
@@ -207,15 +207,29 @@ def get_set_parser() -> CommandlineParser:
 
     parser.add_subcommand('admin', clicmd.AdminFuncs())
 
 
     parser.add_subcommand('admin', clicmd.AdminFuncs())
 
-    parser.add_subcommand('export', clicmd.QueryExport())
-    parser.add_subcommand('convert', clicmd.ConvertDB())
-    parser.add_subcommand('serve', AdminServe())
+    try:
+        exportcmd = importlib.import_module('nominatim_db.clicmd.export')
+        apicmd = importlib.import_module('nominatim_db.clicmd.api')
+        convertcmd = importlib.import_module('nominatim_db.clicmd.convert')
+
+        parser.add_subcommand('export', exportcmd.QueryExport())
+        parser.add_subcommand('convert', convertcmd.ConvertDB())
+        parser.add_subcommand('serve', AdminServe())
+
+        parser.add_subcommand('search', apicmd.APISearch())
+        parser.add_subcommand('reverse', apicmd.APIReverse())
+        parser.add_subcommand('lookup', apicmd.APILookup())
+        parser.add_subcommand('details', apicmd.APIDetails())
+        parser.add_subcommand('status', apicmd.APIStatus())
+    except ModuleNotFoundError as ex:
+        if not ex.name or 'nominatim_api' not in ex.name: # pylint: disable=E1135
+            raise ex
+
+        parser.parser.epilog = \
+            '\n\nNominatim API package not found. The following commands are not available:'\
+            '\n    export, convert, serve, search, reverse, lookup, details, status'\
+            "\n\nRun 'pip install nominatim-api' to install the package."
 
 
-    parser.add_subcommand('search', clicmd.APISearch())
-    parser.add_subcommand('reverse', clicmd.APIReverse())
-    parser.add_subcommand('lookup', clicmd.APILookup())
-    parser.add_subcommand('details', clicmd.APIDetails())
-    parser.add_subcommand('status', clicmd.APIStatus())
 
     return parser
 
 
     return parser