]> git.openstreetmap.org Git - nominatim.git/commitdiff
introduce dotenv parsing for setup.php
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 15 Dec 2020 12:57:34 +0000 (13:57 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 19 Dec 2020 13:33:04 +0000 (14:33 +0100)
This adds the notion of a project directory. This is the directory
that holds all necessary files for one specific installation of
Nominatim. Dotenv looks for an .env file in this directory and
adds it to the global environment together with the defaults from
Nominatim's data directory.

Add's symfony's dotenv library as a new dependency.

cmake/script.tmpl
lib/lib.php
utils/setup.php

index 1b0cab64a97ef2ddc90454fbd5816df8c78f7440..4d9224b03d2b8b92fdaf349940abfe1ba06e6045 100755 (executable)
@@ -3,7 +3,5 @@
 @define('CONST_BinDir', '@CMAKE_SOURCE_DIR@/utils');
 @define('CONST_LibDir', '@CMAKE_SOURCE_DIR@/lib');
 @define('CONST_DataDir', '@CMAKE_SOURCE_DIR@');
-@define('CONST_InstallDir', '@CMAKE_BINARY_DIR@');
 
-require_once(CONST_InstallDir.'/settings/settings.php');
 require_once(CONST_BinDir.'/@script_source@');
index fcd220667bcdede296654b8db9d80a827f9dab8e..9861cdd03f69f496b63ca038fadd5d84e89055ad 100644 (file)
@@ -1,5 +1,23 @@
 <?php
 
+require('Symfony/Component/Dotenv/autoload.php');
+
+function loadSettings($sProjectDir)
+{
+    if (!$sProjectDir) {
+        $sProjectDir = getcwd();
+    }
+
+    @define('CONST_InstallDir', $sProjectDir);
+
+    $dotenv = new \Symfony\Component\Dotenv\Dotenv();
+
+    if (file_exists($sProjectDir.'/.env')) {
+        $dotenv->load($sProjectDir.'/.env');
+    }
+    $dotenv->load(CONST_DataDir.'/settings/env.defaults');
+}
+
 function fail($sError, $sUserError = false)
 {
     if (!$sUserError) $sUserError = $sError;
index 95ad799259315c30afcd9865dac929dd1fc46a54..10d7e15598df2f6ce9bdbf67d3916edc7ba8cf7f 100644 (file)
@@ -44,11 +44,13 @@ $aCMDOptions
    array('create-country-names', '', 0, 1, 0, 0, 'bool', 'Create default list of searchable country names'),
    array('drop', '', 0, 1, 0, 0, 'bool', 'Drop tables needed for updates, making the database readonly (EXPERIMENTAL)'),
    array('setup-website', '', 0, 1, 0, 0, 'bool', 'Used to compile environment variables for the website'),
+   array('project-dir', '', 0, 1, 1, 1, 'realpath', 'Base directory for this Nominatim installation'),
   );
 
 // $aCMDOptions passed to getCmdOpt by reference
 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
 
+loadSettings($aCMDResult['project-dir'] ?? false);
 setupHTTPProxy();
 
 $bDidSomething = false;