X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/04690ad8c4734c15efc920bc0dab59cf78e3e7cb..c77877a93401dd2f87e3caefb7aa6f04d05f7c95:/nominatim/admin/exec_utils.py diff --git a/nominatim/admin/exec_utils.py b/nominatim/admin/exec_utils.py index 91225b7a..01582279 100644 --- a/nominatim/admin/exec_utils.py +++ b/nominatim/admin/exec_utils.py @@ -1,21 +1,27 @@ """ Helper functions for executing external programs. """ -from pathlib import Path import subprocess -def run_legacy_script(script, *args, nominatim_env=None): - """ Run a Nominatim PHP script with the given arguments. - """ - cmd = ['/usr/bin/env', 'php', '-Cq', - nominatim_env.phplib_dir / 'admin' / script] - cmd.extend(args) +def run_legacy_script(script, *args, nominatim_env=None, throw_on_fail=False): + """ Run a Nominatim PHP script with the given arguments. - env = nominatim_env.config.get_os_env() - env['NOMINATIM_DATADIR'] = str(nominatim_env.data_dir) - env['NOMINATIM_BINDIR'] = str(nominatim_env.data_dir / 'utils') + Returns the exit code of the script. If `throw_on_fail` is True + then throw a `CalledProcessError` on a non-zero exit. + """ + cmd = ['/usr/bin/env', 'php', '-Cq', + nominatim_env.phplib_dir / 'admin' / script] + cmd.extend([str(a) for a in args]) - proc = subprocess.run(cmd, cwd=str(nominatim_env.project_dir), env=env) + env = nominatim_env.config.get_os_env() + env['NOMINATIM_DATADIR'] = str(nominatim_env.data_dir) + env['NOMINATIM_BINDIR'] = str(nominatim_env.data_dir / 'utils') + if not env['NOMINATIM_DATABASE_MODULE_PATH']: + env['NOMINATIM_DATABASE_MODULE_PATH'] = nominatim_env.module_dir + if not env['NOMINATIM_OSM2PGSQL_BINARY']: + env['NOMINATIM_OSM2PGSQL_BINARY'] = nominatim_env.osm2pgsql_path - return proc.returncode + proc = subprocess.run(cmd, cwd=str(nominatim_env.project_dir), env=env, + check=throw_on_fail) + return proc.returncode