#!/usr/bin/env php
<?php
/**
 * Yii Framework 2.0 API documentation generator
 *
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

defined('YII_DEBUG') or define('YII_DEBUG', false);

$composerAutoload = [
    __DIR__ . '/vendor/autoload.php', // standalone with "composer install" run
    __DIR__ . '/../../autoload.php', // script is installed as a composer binary
    __DIR__ . '/../../../../autoload.php', // script is run from yii2-dev/extensions
];
$vendorPath = null;
foreach ($composerAutoload as $autoload) {
    if (file_exists($autoload)) {
        require($autoload);
        $vendorPath = dirname($autoload);
        break;
    }
}
$yiiDirs = [
    __DIR__ . '/../../framework', // in yii2-dev repo
    __DIR__ . '/vendor/yiisoft/yii2', // standalone with "composer install" run
    __DIR__ . '/../../yiisoft/yii2', // script is installed as a composer binary
];
foreach ($yiiDirs as $dir) {
    if (file_exists($dir . '/Yii.php')) {
        require($dir . '/Yii.php');
        break;
    }
}
if (!class_exists('Yii')) {
    echo PHP_EOL . "The Yii Framework 2.0 does not seem to be installed. Try running composer install." . PHP_EOL . PHP_EOL;
    exit(1);
}

Yii::setAlias('@yii/apidoc', __DIR__);

$application = new yii\console\Application([
    'id'                  => 'yii2-apidoc',
    'basePath'            => __DIR__,
    'enableCoreCommands'  => false,
    'controllerNamespace' => 'yii\\apidoc\\commands',
]);
if ($vendorPath !== null) {
    $application->setVendorPath($vendorPath);
    $bowerDirs = [
        "$vendorPath/bower",
        "$vendorPath/bower-asset",
    ];
    foreach ($bowerDirs as $dir) {
        if (file_exists($dir)) {
            Yii::setAlias('@bower', $dir);
            break;
        }
    }
    $npmDirs = [
        "$vendorPath/npm",
        "$vendorPath/npm-asset",
    ];
    foreach ($npmDirs as $dir) {
        if (file_exists($dir)) {
            Yii::setAlias('@npm', $dir);
            break;
        }
    }
}
$exitCode = $application->run();
exit($exitCode);
