GenerationCommand.php 1.5 KB
<?php

namespace Lackoxygen\ShowDocGeneration\Commands;

use Illuminate\Console\Command;
use Lackoxygen\ShowDocGeneration\Logger;
use Lackoxygen\ShowDocGeneration\Parser\Paster;
use Lackoxygen\ShowDocGeneration\Writer\Writer;

class GenerationCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'doc {--v : print info}
                                {--prefix=}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'generate documentation';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {

        $v = $this->input->getOption('v');

        Logger::setMode($v ? Logger::DISPLAY : Logger::NONE);

        Logger::setOutput($this->output);

        Logger::writeln("input option v={$v}");

        $prefix = $this->input->getOption('prefix') ?? 'api';

        Logger::writeln("input option prefix={$prefix}");

        Logger::writeln('parse start');
        $cos = Paster::resolve($this->laravel, $prefix);

        Logger::writeln('parse end');

        Logger::writeln('write start');
        $writer = new Writer();

        $writer->puts($cos);

        Logger::writeln('write end');

        return 0;
    }
}