diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2012-04-18 22:07:07 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2012-04-18 22:07:07 +0200 |
| commit | add0708f631532b284b11d5507c5efefce36b7c1 (patch) | |
| tree | fc4ed5e9a5a2b8cdcacfe5c6520368f8d5c38387 /src | |
| parent | 3937fc938f4e5c1d61348029bc54bbb06d00fd09 (diff) | |
| download | phorkie-add0708f631532b284b11d5507c5efefce36b7c1.tar.gz phorkie-add0708f631532b284b11d5507c5efefce36b7c1.zip | |
setup check
Diffstat (limited to 'src')
| -rw-r--r-- | src/phorkie/SetupCheck.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/phorkie/SetupCheck.php b/src/phorkie/SetupCheck.php new file mode 100644 index 0000000..959ff42 --- /dev/null +++ b/src/phorkie/SetupCheck.php @@ -0,0 +1,58 @@ +<?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); + } +} + +?> |
