introduce custom object for cmdline arguments

Allows to define special functions over the arguments.

Also splits CLI tests in two files as they have become too many.
This commit is contained in:
Sarah Hoffmann
2021-02-24 10:38:19 +01:00
parent f6e894a53a
commit 7222235579
6 changed files with 173 additions and 105 deletions

View File

@@ -12,6 +12,7 @@ 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
LOG = logging.getLogger()
@@ -62,7 +63,8 @@ class CommandlineParser:
""" Parse the command line arguments of the program and execute the
appropriate subcommand.
"""
args = self.parser.parse_args(args=kwargs.get('cli_args'))
args = NominatimArgs()
self.parser.parse_args(args=kwargs.get('cli_args'), namespace=args)
if args.subcommand is None:
self.parser.print_help()

22
nominatim/clicmd/args.py Normal file
View File

@@ -0,0 +1,22 @@
"""
Provides custom functions over command-line arguments.
"""
class NominatimArgs:
""" Customized namespace class for the nominatim command line tool
to receive the command-line arguments.
"""
def osm2pgsql_options(self, default_cache, default_threads):
""" Return the standard osm2pgsql options that can be derived
from the command line arguments. The resulting dict can be
further customized and then used in `run_osm2pgsql()`.
"""
return dict(osm2pgsql=self.config.OSM2PGSQL_BINARY or self.osm2pgsql_path,
osm2pgsql_cache=self.osm2pgsql_cache or default_cache,
osm2pgsql_style=self.config.get_import_style_file(),
threads=self.threads or default_threads,
dsn=self.config.get_libpq_dsn(),
flatnode_file=self.config.FLATNODE_FILE)

View File

@@ -17,17 +17,6 @@ LOG = logging.getLogger()
# Using non-top-level imports to make pyosmium optional for replication only.
# pylint: disable=E0012,C0415
def _osm2pgsql_options_from_args(args, default_cache, default_threads):
""" Set up the standard osm2pgsql from the command line arguments.
"""
return dict(osm2pgsql=args.osm2pgsql_path,
osm2pgsql_cache=args.osm2pgsql_cache or default_cache,
osm2pgsql_style=args.config.get_import_style_file(),
threads=args.threads or default_threads,
dsn=args.config.get_libpq_dsn(),
flatnode_file=args.config.FLATNODE_FILE)
class UpdateReplication:
"""\
Update the database using an online replication service.
@@ -96,7 +85,7 @@ class UpdateReplication:
from ..tools import replication
from ..indexer.indexer import Indexer
params = _osm2pgsql_options_from_args(args, 2000, 1)
params = args.osm2pgsql_options(default_cache=2000, default_threads=1)
params.update(base_url=args.config.REPLICATION_URL,
update_interval=args.config.get_int('REPLICATION_UPDATE_INTERVAL'),
import_file=args.project_dir / 'osmosischange.osc',