#!/usr/bin/env php
<?php

/**
 * Load correct autoloader depending on install location.
 */
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
    require __DIR__ . '/vendor/autoload.php';
} else {
    require __DIR__ . '/../../autoload.php';
}

use ElevenLab\Documentarian\Documentarian;
use Silly\Application;

$documentarian = new Documentarian();

$app = new Application('Documentarian', 'v0.1.0');

$app->command('create [folder]', function ($folder) use ($documentarian) {
    $folder = getcwd() . '/' . $folder;
    $documentarian->create($folder);
    //$documentarian->generate($folder);
    info('Created documentation in folder: ' . $folder);
})->defaults([
    'folder' => '',
]);

$app->command('create_version folder api_version', function($folder, $api_version) use ($documentarian){

    $folder = getcwd() . '/' . $folder . '/source/';
    if(!is_dir($folder)){
        output('<fg=red>Documentarian is not installed in the current folder.</>');
        output('<fg=red>Use `documentarian create` to initiate a new API documentation.</>');
    }else {
        $folder = $folder . $api_version;
        $documentarian->createVersion($folder);
        info('Created documentation version in folder: ' . $folder);
    }

});

$app->command('generate folder [--api-version=]*', function ($folder, $apiVersion = []) use ($documentarian) {

    if (!is_dir(getcwd() . '/' . $folder . '/source')) {
        output('<fg=red>Documentarian is not installed in the specified folder.</>');
        output('<fg=red>Use `documentarian create` to initiate a new API documentation.</>');
    } else {
        $documentarian->generate(getcwd() . '/' . $folder . '/source', $apiVersion);
        info('Generated documentation.');
    }

});

$app->command('get_versions [folder]', function($folder) use ($documentarian){

    if(!is_dir(getcwd() . '/' . $folder . '/source')){
        output('<fg=red>Documentarian is not installed in the specified folder.</>');
        output('<fg=red>Use `documentarian create` to initiate a new API documentation.</>');
    }else{
        $versions = $documentarian->getVersions(getcwd() . '/' . $folder . '/source');
        foreach($versions as $version) {
            info('Found version \'' . $version. '\' for documentation \'' . basename(realpath(getcwd() . '/' . $folder)) . '\'');
        }
    }

})->defaults([
    'folder' => ''
]);

$app->run();