mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 23:42:48 +08:00
83 lines
2.7 KiB
PHP
83 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace base\common\provider;
|
|
|
|
use app\common\console\Input;
|
|
use app\common\console\Output;
|
|
use think\Console as ThinkConsole;
|
|
use think\console\input\Argument as InputArgument;
|
|
use think\console\input\Definition as InputDefinition;
|
|
use think\console\input\Option as InputOption;
|
|
|
|
class ConsoleBase extends ThinkConsole
|
|
{
|
|
public function call(string $command, array $parameters = [], string $driver = 'buffer')
|
|
{
|
|
array_unshift($parameters, $command);
|
|
|
|
$input = new Input($parameters);
|
|
$output = new Output($driver);
|
|
|
|
$this->setCatchExceptions(false);
|
|
$this->find($command)->run($input, $output);
|
|
|
|
return $output;
|
|
}
|
|
|
|
public function run()
|
|
{
|
|
$input = new Input();
|
|
$output = new Output();
|
|
|
|
$this->configureIO($input, $output);
|
|
|
|
try {
|
|
$exitCode = $this->doRun($input, $output);
|
|
} catch (\Exception $e) {
|
|
if (!$this->catchExceptions) {
|
|
throw $e;
|
|
}
|
|
|
|
$output->renderException($e);
|
|
|
|
$exitCode = $e->getCode();
|
|
if (is_numeric($exitCode)) {
|
|
$exitCode = (int) $exitCode;
|
|
if (0 === $exitCode) {
|
|
$exitCode = 1;
|
|
}
|
|
} else {
|
|
$exitCode = 1;
|
|
}
|
|
}
|
|
|
|
if ($this->autoExit) {
|
|
if ($exitCode > 255) {
|
|
$exitCode = 255;
|
|
}
|
|
|
|
exit($exitCode);
|
|
}
|
|
|
|
return $exitCode;
|
|
}
|
|
|
|
protected function getDefaultInputDefinition(): InputDefinition
|
|
{
|
|
$definition = new InputDefinition([
|
|
new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'),
|
|
new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message'),
|
|
new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this console version'),
|
|
new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'),
|
|
new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'),
|
|
new InputOption('--ansi', '', InputOption::VALUE_NONE, 'Force ANSI output'),
|
|
new InputOption('--no-ansi', '', InputOption::VALUE_NONE, 'Disable ANSI output'),
|
|
new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'),
|
|
new InputOption('--force-force', 'ff', InputOption::VALUE_NONE, 'Skip all interactive confirmation prompts (can skip all confirmations)'),
|
|
]);
|
|
|
|
return $definition;
|
|
}
|
|
|
|
}
|