X-Git-Url: https://git.cweiske.de/phorkie.git/blobdiff_plain/3cd888fdd3bcd9f8d8ed47acf1c3420c09f4030d..HEAD:/src/phorkie/SetupCheck.php diff --git a/src/phorkie/SetupCheck.php b/src/phorkie/SetupCheck.php index c459e2a..e5ed88f 100644 --- a/src/phorkie/SetupCheck.php +++ b/src/phorkie/SetupCheck.php @@ -4,15 +4,15 @@ namespace phorkie; class SetupCheck { protected $deps = array( - 'pear.php.net/VersionControl_Git' => 'VersionControl_Git', - 'pear.twig-project.org/Twig' => 'Twig_Autoloader', - 'pear.php.net/Date_HumanDiff' => 'Date_HumanDiff', - 'pear.php.net/HTTP_Request2' => 'HTTP_Request2', - 'pear.php.net/OpenID' => 'OpenID', - 'pear.php.net/Pager' => 'Pager', - 'pear.php.net/Services_Libravatar' => 'Services_Libravatar', - 'pear2.php.net/PEAR2_Services_Linkback' => '\\PEAR2\\Services\\Linkback\\Client', - 'zustellzentrum.cweiske.de/MIME_Type_PlainDetect' => 'MIME_Type_PlainDetect', + 'pear/versionControl_git' => 'VersionControl_Git', + 'twig/twig' => 'Twig_Autoloader', + 'pear/date_humanDiff' => 'Date_HumanDiff', + 'pear/http_request2' => 'HTTP_Request2', + 'pear/openid' => 'OpenID', + 'pear/pager' => 'Pager', + 'pear/services_libravatar' => 'Services_Libravatar', + 'pear2/services_linkback' => '\\PEAR2\\Services\\Linkback\\Client', + 'cweiske/mime_type_plaindetect' => 'MIME_Type_PlainDetect', ); protected $writableDirs; @@ -24,8 +24,9 @@ class SetupCheck { $cfg = $GLOBALS['phorkie']['cfg']; $this->writableDirs = array( - 'gitdir' => $cfg['gitdir'], - 'workdir' => $cfg['workdir'], + 'gitdir' => Tools::foldPath($cfg['gitdir']), + 'workdir' => Tools::foldPath($cfg['workdir']), + 'cachedir' => Tools::foldPath($cfg['cachedir']), ); $this->elasticsearch = $cfg['elasticsearch']; } @@ -39,17 +40,28 @@ class SetupCheck $sc->checkGit(); $sc->checkDatabase(); $sc->checkMimeTypeDetection(); + $sc->checkRemoteForking(); return $sc->messages; } public function checkConfigFiles() { + if (!isset($GLOBALS['phorkie']['cfgfiles']) + || count($GLOBALS['phorkie']['cfgfiles']) == 0 + ) { + $this->info('No config files registered'); + return; + } + foreach ($GLOBALS['phorkie']['cfgfiles'] as $file => $loaded) { if ($loaded) { - $this->ok('Loaded config file: ' . $file); + $this->ok('Loaded config file: ' . Tools::foldPath($file)); } else { - $this->info('Possible config file: ' . $file . ' (not loaded)'); + $this->info( + 'Possible config file: ' . Tools::foldPath($file) + . ' (not loaded)' + ); } } } @@ -58,11 +70,11 @@ class SetupCheck { foreach ($this->deps as $package => $class) { if (!class_exists($class, true)) { - $this->fail('PEAR package not installed: ' . $package); + $this->fail('Composer package not installed: ' . $package); } } - if (!class_exists('geshi', true)) { + if (!class_exists('GeSHi', true)) { $geshi = stream_resolve_include_path( $GLOBALS['phorkie']['cfg']['geshi'] ); @@ -97,8 +109,9 @@ class SetupCheck if ($retval !== 0) { $this->fail('Running git executable failed.'); } - if (!preg_match('#^git version ([0-9.]+(rc[0-9]+)?)$#', $line, $matches)) { + if (!preg_match('#^git version ([0-9.]+(rc[0-9]+)?)(?: \(Apple Git-\d+\))?$#', $line, $matches)) { $this->fail('git version output format unexpected: ' . $line); + return; } if (version_compare($matches[1], '1.7.5') < 0) { $this->fail( @@ -128,8 +141,25 @@ class SetupCheck public function checkMimeTypeDetection() { $rp = new Repository_Post(); - if ($rp->getType('') != 'php') { - $this->fail('MIME type detection fails'); + $type = $rp->getType('', true); + if ($type != 'php') { + $msg = 'MIME type detection fails'; + if ($type instanceof \PEAR_Error) { + $msg .= '. Error: ' . $type->getMessage(); + } + $this->fail($msg); + } + } + + public function checkRemoteForking() + { + if (!isset($GLOBALS['phorkie']['cfg']['git']['public']) + || $GLOBALS['phorkie']['cfg']['git']['public'] == '' + ) { + $this->fail( + 'No public git URL prefix configured.' + . ' Remote forking will not work' + ); } }