]> git.openstreetmap.org Git - nominatim.git/commitdiff
switch IMPORT_STYLE to use generic file search
authorSarah Hoffmann <lonvia@denofr.de>
Fri, 22 Oct 2021 14:49:57 +0000 (16:49 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Fri, 22 Oct 2021 14:49:57 +0000 (16:49 +0200)
Allows relative paths wrt project directory.

docs/customize/Settings.md
nominatim/config.py
test/python/test_config.py

index a71b2e1b1f9fa66704e60db028ac39c31cbb5b1e..3a45e8fecd80f1db79ceb8e06639660af38153cc 100644 (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
index 28f2fcc3a2a7b89412346c0cbea13be58bc7908d..66375f6ce336bc310f1994a17796d7bc150234e4 100644 (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):
index 8b5cb11bdb71f360094b59633ca364a588b6ab29..de7b93016658a177a77869109fe6ad2a5aae73de 100644 (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'
+
+    cfgfile.write_text('x')
 
-    monkeypatch.setenv('NOMINATIM_IMPORT_STYLE', value)
+    monkeypatch.setenv('NOMINATIM_IMPORT_STYLE', str(cfgfile))
 
-    assert str(config.get_import_style_file()) == value
+    assert str(config.get_import_style_file()) == str(cfgfile)
 
 
 def test_load_subconf_from_project_dir(make_config_path):