switch IMPORT_STYLE to use generic file search

Allows relative paths wrt project directory.
This commit is contained in:
Sarah Hoffmann
2021-10-22 16:49:57 +02:00
parent 0ae8d7ac08
commit 507fdd4f40
3 changed files with 23 additions and 8 deletions

View File

@@ -328,9 +328,13 @@ project directory and then in the global settings directory.
| **Default:** | extratags |
The _style configuration_ describes which OSM objects and tags are taken
into consideration for the search database. This setting may either
be a string pointing to one of the internal styles or it may be a path
pointing to a custom style.
into consideration for the search database. Nominatim comes with a set
of pre-configured styles, that may be configured here.
You can also write your own custom style and point the setting to the file
with the style. When a relative path is given, then the style file is searched
first relative to the project directory and then in the global settings
directory.
See [Import Styles](Import-Styles.md)
for more information on the available internal styles and the format of the

View File

@@ -123,7 +123,7 @@ class Configuration:
if style in ('admin', 'street', 'address', 'full', 'extratags'):
return self.config_dir / 'import-{}.style'.format(style)
return Path(style)
return self.find_config_file('', 'IMPORT_STYLE')
def get_os_env(self):

View File

@@ -176,13 +176,24 @@ def test_get_import_style_intern(make_config, src_dir, monkeypatch):
assert config.get_import_style_file() == expected
@pytest.mark.parametrize("value", ['custom', '/foo/bar.stye'])
def test_get_import_style_extern(make_config, monkeypatch, value):
def test_get_import_style_extern_relative(make_config_path, monkeypatch):
config = make_config_path()
(config.project_dir / 'custom.style').write_text('x')
monkeypatch.setenv('NOMINATIM_IMPORT_STYLE', 'custom.style')
assert str(config.get_import_style_file()) == str(config.project_dir / 'custom.style')
def test_get_import_style_extern_absolute(make_config, tmp_path, monkeypatch):
config = make_config()
cfgfile = tmp_path / 'test.style'
monkeypatch.setenv('NOMINATIM_IMPORT_STYLE', value)
cfgfile.write_text('x')
assert str(config.get_import_style_file()) == value
monkeypatch.setenv('NOMINATIM_IMPORT_STYLE', str(cfgfile))
assert str(config.get_import_style_file()) == str(cfgfile)
def test_load_subconf_from_project_dir(make_config_path):