Skip to content
Snippets Groups Projects
Commit f0e417c9 authored by Demian Katz's avatar Demian Katz
Browse files

Smarter, more flexible handling of modules in installer.

- Resolves VUFIND-1038
parent 1ffa1225
Branches
Tags instance/fid/staging/20200618
No related merge requests found
...@@ -47,7 +47,7 @@ try { ...@@ -47,7 +47,7 @@ try {
'Use VuFind Defaults to Configure (ignores any other arguments passed)', 'Use VuFind Defaults to Configure (ignores any other arguments passed)',
'overridedir=s' => 'overridedir=s' =>
"Where would you like to store your local settings? [{$baseDir}/local]", "Where would you like to store your local settings? [{$baseDir}/local]",
'module-name=w' => 'module-name=s' =>
'What module name would you like to use? Use disabled, to not use', 'What module name would you like to use? Use disabled, to not use',
'basepath=s' => 'basepath=s' =>
'What base path should be used in VuFind\'s URL? [/vufind]', 'What base path should be used in VuFind\'s URL? [/vufind]',
...@@ -82,7 +82,7 @@ if (!$opts->getOption('use-defaults')) { ...@@ -82,7 +82,7 @@ if (!$opts->getOption('use-defaults')) {
if ($opts->getOption('module-name')) { if ($opts->getOption('module-name')) {
if ($opts->getOption('module-name') !== 'disabled') { if ($opts->getOption('module-name') !== 'disabled') {
$module = $opts->getOption('module-name'); $module = $opts->getOption('module-name');
if (($result = validateModule($module)) !== true) { if (($result = validateModules($module)) !== true) {
die($result . "\n"); die($result . "\n");
} }
} }
...@@ -142,6 +142,9 @@ if (!$opts->getOption('use-defaults')) { ...@@ -142,6 +142,9 @@ if (!$opts->getOption('use-defaults')) {
// here is harmless if it was already initialized in interactive mode): // here is harmless if it was already initialized in interactive mode):
initializeOverrideDir($overrideDir, true); initializeOverrideDir($overrideDir, true);
// Normalize the module setting to remove whitespace:
$module = preg_replace('/\s/', '', $module);
// Build the Windows start file in case we need it: // Build the Windows start file in case we need it:
buildWindowsConfig($baseDir, $overrideDir, $module); buildWindowsConfig($baseDir, $overrideDir, $module);
...@@ -151,7 +154,7 @@ buildImportConfig($baseDir, $overrideDir, 'import_auth.properties'); ...@@ -151,7 +154,7 @@ buildImportConfig($baseDir, $overrideDir, 'import_auth.properties');
// Build the custom module, if necessary: // Build the custom module, if necessary:
if (!empty($module)) { if (!empty($module)) {
buildModule($baseDir, $module); buildModules($baseDir, $module);
} }
// Build the final configuration: // Build the final configuration:
...@@ -334,6 +337,25 @@ function getOverrideDir($overrideDir) ...@@ -334,6 +337,25 @@ function getOverrideDir($overrideDir)
} }
} }
/**
* Validate a comma-separated list of module names. Returns true on success, message
* on failure.
*
* @param string $modules Module name to validate.
*
* @return bool|string
*/
function validateModules($modules)
{
foreach (explode(',', $modules) as $module) {
$result = validateModule(trim($module));
if ($result !== true) {
return $result;
}
}
return true;
}
/** /**
* Validate the custom module name. Returns true on success, message on failure. * Validate the custom module name. Returns true on success, message on failure.
* *
...@@ -376,7 +398,7 @@ function getModule() ...@@ -376,7 +398,7 @@ function getModule()
"\nWhat module name would you like to use? [blank for none] " "\nWhat module name would you like to use? [blank for none] "
) )
); );
if (($result = validateModule($moduleInput)) === true) { if (($result = validateModules($moduleInput)) === true) {
return $moduleInput; return $moduleInput;
} }
echo "\n$result\n"; echo "\n$result\n";
...@@ -572,6 +594,25 @@ function buildDirs($dirs) ...@@ -572,6 +594,25 @@ function buildDirs($dirs)
return true; return true;
} }
/**
* Make sure all modules exist (and create them if they do not.
*
* @param string $baseDir The VuFind base directory
* @param string $modules The comma-separated list of modules (assumed valid!)
*
* @return void
*/
function buildModules($baseDir, $modules)
{
foreach (explode(',', $modules) as $module) {
$moduleDir = $baseDir . '/module/' . $module;
// Is module missing? If so, create it from the template:
if (!file_exists($moduleDir . '/Module.php')) {
buildModule($baseDir, $module);
}
}
}
/** /**
* Build the module for storing local code changes. * Build the module for storing local code changes.
* *
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment