X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/17cb59efbd5ebec4ee44cf56999e443a7993b050..cf98cff2a166eb35ed2c946e03f1610069bdd1d4:/nominatim/cli.py diff --git a/nominatim/cli.py b/nominatim/cli.py index d6d8e388..5626deb4 100644 --- a/nominatim/cli.py +++ b/nominatim/cli.py @@ -8,12 +8,11 @@ import sys import argparse from pathlib import Path -from .config import Configuration -from .tools.exec_utils import run_legacy_script, run_php_server -from .errors import UsageError -from . import clicmd -from .clicmd.args import NominatimArgs -from .tools import tiger_data +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.clicmd.args import NominatimArgs LOG = logging.getLogger() @@ -84,6 +83,11 @@ class CommandlineParser: args.config = Configuration(args.project_dir, args.config_dir, environ=kwargs.get('environ', os.environ)) + args.config.set_libdirs(module=args.module_dir, + osm2pgsql=args.osm2pgsql_path, + php=args.phplib_dir, + sql=args.sqllib_dir, + data=args.data_dir) log = logging.getLogger() log.warning('Using project directory: %s', str(args.project_dir)) @@ -99,7 +103,7 @@ class CommandlineParser: return 1 -##### Subcommand classes +# Subcommand classes # # Each class needs to implement two functions: add_args() adds the CLI parameters # for the subfunction, run() executes the subcommand. @@ -116,7 +120,7 @@ class UpdateAddData: """\ Add additional data from a file or an online source. - Data is only imported, not indexed. You need to call `nominatim-update index` + Data is only imported, not indexed. You need to call `nominatim index` to complete the process. """ @@ -142,12 +146,14 @@ class UpdateAddData: @staticmethod def run(args): + from nominatim.tokenizer import factory as tokenizer_factory + from nominatim.tools import tiger_data + if args.tiger_data: - return tiger_data.add_tiger_data(args.config.get_libpq_dsn(), - args.tiger_data, - args.threads or 1, - args.config, - args.sqllib_dir) + tokenizer = tokenizer_factory.get_tokenizer_for_db(args.config) + return tiger_data.add_tiger_data(args.tiger_data, + args.config, args.threads or 1, + tokenizer) params = ['update.php'] if args.file: @@ -179,16 +185,16 @@ class QueryExport: help='Type of places to output (default: street)') group.add_argument('--output-format', default='street;suburb;city;county;state;country', - help="""Semicolon-separated list of address types - (see --output-type). Multiple ranks can be - merged into one column by simply using a - comma-separated list.""") + help=("Semicolon-separated list of address types " + "(see --output-type). Multiple ranks can be " + "merged into one column by simply using a " + "comma-separated list.")) group.add_argument('--output-all-postcodes', action='store_true', - help="""List all postcodes for address instead of - just the most likely one""") + help=("List all postcodes for address instead of " + "just the most likely one")) group.add_argument('--language', - help="""Preferred language for output - (use local name, if omitted)""") + help=("Preferred language for output " + "(use local name, if omitted)")) group = parser.add_argument_group('Filter arguments') group.add_argument('--restrict-to-country', metavar='COUNTRY_CODE', help='Export only objects within country') @@ -242,11 +248,10 @@ class AdminServe: def run(args): run_php_server(args.server, args.project_dir / 'website') - -def nominatim(**kwargs): +def get_set_parser(**kwargs): """\ - Command-line tools for importing, updating, administrating and - querying the Nominatim database. + Initializes the parser and adds various subcommands for + nominatim cli. """ parser = CommandlineParser('nominatim', nominatim.__doc__) @@ -254,11 +259,11 @@ def nominatim(**kwargs): parser.add_subcommand('freeze', clicmd.SetupFreeze) parser.add_subcommand('replication', clicmd.UpdateReplication) - parser.add_subcommand('import-special-phrases', clicmd.ImportSpecialPhrases) + parser.add_subcommand('special-phrases', clicmd.ImportSpecialPhrases) parser.add_subcommand('add-data', UpdateAddData) parser.add_subcommand('index', clicmd.UpdateIndex) - parser.add_subcommand('refresh', clicmd.UpdateRefresh) + parser.add_subcommand('refresh', clicmd.UpdateRefresh()) parser.add_subcommand('admin', clicmd.AdminFuncs) @@ -274,6 +279,14 @@ def nominatim(**kwargs): else: parser.parser.epilog = 'php-cgi not found. Query commands not available.' - parser.add_subcommand('transition', clicmd.AdminTransition) + return parser + + +def nominatim(**kwargs): + """\ + Command-line tools for importing, updating, administrating and + querying the Nominatim database. + """ + parser = get_set_parser(**kwargs) return parser.run(**kwargs)