<?php
$GLOBALS['phorkie']['cfg'] = array(
- 'debug' => false,
- 'gitdir' => __DIR__ . '/../repos/git/',
- 'workdir' => __DIR__ . '/../repos/work/',
- 'tpl' => __DIR__ . '/templates/',
- 'css' => 'http://twitter.github.com/bootstrap/assets/css/bootstrap.css',
- 'title' => 'phorkie',
- 'topbar' => '',
+ 'debug' => false,
+ 'gitdir' => __DIR__ . '/../repos/git/',
+ 'workdir' => __DIR__ . '/../repos/work/',
+ 'tpl' => __DIR__ . '/templates/',
+ 'css' => 'http://twitter.github.com/bootstrap/assets/css/bootstrap.css',
+ 'title' => 'phorkie',
+ 'topbar' => '',
+ 'setupcheck' => true,
);
$GLOBALS['phorkie']['tools'] = array(
'\\phorkie\\Tool_Xmllint' => true,
--- /dev/null
+<?php
+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',
+ );
+
+ protected $writableDirs;
+
+
+ public function __construct()
+ {
+ $cfg = $GLOBALS['phorkie']['cfg'];
+ $this->writableDirs = array(
+ 'gitdir' => $cfg['gitdir'],
+ 'workdir' => $cfg['workdir'],
+ );
+ }
+
+ public static function run()
+ {
+ $sc = new self();
+ $sc->checkDeps();
+ $sc->checkDirs();
+ }
+
+ public function checkDeps()
+ {
+ foreach ($this->deps as $package => $class) {
+ if (!class_exists($class, true)) {
+ $this->fail('PEAR package not installed: ' . $package);
+ }
+ }
+ }
+
+ public function checkDirs()
+ {
+ foreach ($this->writableDirs as $name => $dir) {
+ if (!is_dir($dir)) {
+ $this->fail($name . ' directory does not exist at ' . $dir);
+ }
+ if (!is_writable($dir)) {
+ $this->fail($name . ' directory is not writable at ' . $dir);
+ }
+ }
+ }
+
+ public function fail($msg)
+ {
+ throw new Exception($msg);
+ }
+}
+
+?>
} else {
header('HTTP/1.0 500 Internal server error');
}
+
+ if (!isset($GLOBALS['twig'])) {
+ echo '<h1>Exception</h1>';
+ echo '<p>' . $e->getMessage() . '</p>';
+ exit();
+ }
+
render(
'exception',
array(
if (file_exists(__DIR__ . '/../data/config.php')) {
require_once __DIR__ . '/../data/config.php';
}
-require_once 'VersionControl/Git.php';
-require_once 'Twig/Autoloader.php';
+if ($GLOBALS['phorkie']['cfg']['setupcheck']) {
+ SetupCheck::run();
+}
\Twig_Autoloader::register();
$loader = new \Twig_Loader_Filesystem($GLOBALS['phorkie']['cfg']['tpl']);