X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/6e89310a9285f1ad15d8002bf68f578eada367a0..8e5a19b39209f20f41b7bd10ff7dbcdb8a3dcb9c:/src/nominatim_db/cli.py diff --git a/src/nominatim_db/cli.py b/src/nominatim_db/cli.py index 548f1165..41684fa1 100644 --- a/src/nominatim_db/cli.py +++ b/src/nominatim_db/cli.py @@ -16,8 +16,8 @@ import sys 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 @@ -180,7 +180,7 @@ class AdminServe: else: port = 8088 - server_module = importlib.import_module(f'nominatim.server.{args.engine}.server') + server_module = importlib.import_module(f'nominatim_api.server.{args.engine}.server') app = server_module.get_application(args.project_dir) uvicorn.run(app, host=host, port=port) @@ -207,15 +207,29 @@ def get_set_parser() -> CommandlineParser: 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