X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/dd03aeb966c2a101759d447a0fa00340812c89da..0d567291d668dcb912375d0e8ec779525c7c0bba:/nominatim/cli.py diff --git a/nominatim/cli.py b/nominatim/cli.py index 7459711f..e162d1a6 100644 --- a/nominatim/cli.py +++ b/nominatim/cli.py @@ -13,6 +13,7 @@ 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 LOG = logging.getLogger() @@ -111,30 +112,6 @@ class CommandlineParser: # pylint: disable=C0111 # Using non-top-level imports to make pyosmium optional for replication only. # pylint: disable=E0012,C0415 - - -class SetupSpecialPhrases: - """\ - Maintain special phrases. - """ - - @staticmethod - def add_args(parser): - group = parser.add_argument_group('Input arguments') - group.add_argument('--from-wiki', action='store_true', - help='Pull special phrases from the OSM wiki.') - group = parser.add_argument_group('Output arguments') - group.add_argument('-o', '--output', default='-', - help="""File to write the preprocessed phrases to. - If omitted, it will be written to stdout.""") - - @staticmethod - def run(args): - if args.output != '-': - raise NotImplementedError('Only output to stdout is currently implemented.') - return run_legacy_script('specialphrases.php', '--wiki-import', nominatim_env=args) - - class UpdateAddData: """\ Add additional data from a file or an online source. @@ -166,8 +143,11 @@ class UpdateAddData: @staticmethod def run(args): if args.tiger_data: - os.environ['NOMINATIM_TIGER_DATA_PATH'] = args.tiger_data - return run_legacy_script('setup.php', '--import-tiger-data', nominatim_env=args) + return tiger_data.add_tiger_data(args.config.get_libpq_dsn(), + args.tiger_data, + args.threads or 1, + args.config, + args.sqllib_dir) params = ['update.php'] if args.file: @@ -199,16 +179,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') @@ -262,11 +242,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__) @@ -274,7 +253,7 @@ def nominatim(**kwargs): parser.add_subcommand('freeze', clicmd.SetupFreeze) parser.add_subcommand('replication', clicmd.UpdateReplication) - parser.add_subcommand('special-phrases', SetupSpecialPhrases) + parser.add_subcommand('special-phrases', clicmd.ImportSpecialPhrases) parser.add_subcommand('add-data', UpdateAddData) parser.add_subcommand('index', clicmd.UpdateIndex) @@ -296,4 +275,14 @@ def nominatim(**kwargs): 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)