#!/usr/bin/env php
<?php
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
error_reporting(E_ALL);
$pwd = realpath(getcwd());
$vendorName = 'vendor';
if (file_exists($composerPath = "{$pwd}/composer.json")) {
$composerJson = json_decode(file_get_contents($composerPath), true);
$vendorName = isset($composerJson['config']['vendor-dir']) ? $composerJson['config']['vendor-dir'] : $vendorName;
}
$autoload = require __DIR__ . '/../autoload.php';
$autoloader = $autoload("{$pwd}/{$vendorName}");
use Kahlan\Box\Box;
use Kahlan\Suite;
use Kahlan\Cli\Kahlan;
use Kahlan\Jit\ClassLoader;
require __DIR__ . '/../src/functions.php';
$GLOBALS['__composer_autoload_files']['337663d83d8353cc8c7847676b3b0937'] = true;
$box = \Kahlan\box('kahlan', new Box());
$box->service('suite.global', function() {
return new Suite();
});
$specs = new Kahlan([
'autoloader' => $autoloader,
'suite' => $box->get('suite.global')
]);
$specs->loadConfig($argv);
initKahlanGlobalFunctions();
if ($autoloader instanceof ClassLoader) {
$commandLine = $specs->commandLine();
$autoloader->patch([
'include' => $commandLine->get('include'),
'exclude' => array_merge($commandLine->get('exclude'), ['Kahlan\\']),
'persistent' => $commandLine->get('persistent'),
'cachePath' => rtrim(realpath(sys_get_temp_dir()), DS) . DS . 'kahlan',
'clearCache' => $commandLine->get('cc')
]);
$specs->initPatchers();
foreach ($autoloader->files() as $fileIdentifier => $file) {
if (!empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
continue;
}
$autoloader->loadFile($file);
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}
if (!file_exists("{$pwd}/{$vendorName}/autoload.php")) {
echo "\033[1;31mYou need to set up the project dependencies using the following commands: \033[0m" . PHP_EOL;
echo 'curl -s http://getcomposer.org/installer | php' . PHP_EOL;
echo 'php composer.phar install' . PHP_EOL;
exit(1);
}
$specs->run();
exit($specs->status());
|