aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2012-04-18 22:07:07 +0200
committerChristian Weiske <cweiske@cweiske.de>2012-04-18 22:07:07 +0200
commitadd0708f631532b284b11d5507c5efefce36b7c1 (patch)
treefc4ed5e9a5a2b8cdcacfe5c6520368f8d5c38387 /src
parent3937fc938f4e5c1d61348029bc54bbb06d00fd09 (diff)
downloadphorkie-add0708f631532b284b11d5507c5efefce36b7c1.tar.gz
phorkie-add0708f631532b284b11d5507c5efefce36b7c1.zip
setup check
Diffstat (limited to 'src')
-rw-r--r--src/phorkie/SetupCheck.php58
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);
+ }
+}
+
+?>