/**
* Prepares the context by given event or without event for other usage
*
* @param null|string $installDir The install dir to check for info files
* @param null|Event $event The event instance or null
*
* @return void
*/
public static function prepareContext($installDir = null, $event = null)
{
// initialize the installation directory
if (is_null($installDir)) {
$installDir = getcwd();
}
// check if we've a file with the actual version number
$version = '';
if (file_exists($filename = $installDir . '/etc/appserver/.release-version')) {
$version = file_get_contents($filename);
} else {
// load the version (GIT) of this package as fallback if called with event instance
if (!is_null($event)) {
$version = $event->getComposer()->getPackage()->getPrettyVersion();
}
}
// check if we've a file with the actual release name
if (file_exists($filename = $installDir . '/etc/appserver/.release-name')) {
$releaseName = file_get_contents($filename);
} else {
// set the release name to 'Unknown' if not
$releaseName = 'Unknown';
}
// prepare the context properties
$contextProperties = array(SetupKeys::VERSION => $version, SetupKeys::INSTALL_DIR => $installDir, SetupKeys::RELEASE_NAME => $releaseName);
// load the OS signature => sscanf is necessary to detect Windows, e. g. Windows NT for Windows 7
list($os, ) = sscanf(strtolower(php_uname('s')), '%s %s');
// check what OS we are running on
switch ($os) {
// installation running on Linux
case SetupKeys::OS_FAMILY_LINUX:
// get the distribution
$distribution = Setup::getLinuxDistro();
// if we cant find one of the supported systems
if ($distribution == null) {
// set debian as default
$distribution = SetupKeys::OS_DEBIAN;
// write a message to the console if called with event instance
if (!is_null($event)) {
$event->getIo()->write(sprintf('<warning>Unknown Linux distribution found, use Debian default values: ' . 'Please check user/group configuration in etc/appserver/appserver.xml</warning>'));
}
}
// merge the properties for the found Linux distribution
Setup::prepareProperties($distribution, $contextProperties);
break;
// installation running on Mac OS X
// installation running on Mac OS X
case SetupKeys::OS_FAMILY_DARWIN:
// merge the properties for Mac OS X
Setup::prepareProperties($os, $contextProperties);
break;
// installation running on Windows
// installation running on Windows
case SetupKeys::OS_FAMILY_WINDOWS:
// merge the properties for Windows
Setup::prepareProperties($os, $contextProperties);
break;
// all other OS are NOT supported actually
// all other OS are NOT supported actually
default:
break;
}
}