/vendor/laravel/framework/src/Illuminate/Console/Command.php
https://gitlab.com/techniconline/kmc · PHP · 386 lines · 144 code · 58 blank · 184 comment · 2 complexity · 06d9f9e8863e7d0e6323f859b737c5d5 MD5 · raw file
- <?php namespace Illuminate\Console;
- use Symfony\Component\Console\Helper\Table;
- use Symfony\Component\Console\Input\ArrayInput;
- use Symfony\Component\Console\Output\NullOutput;
- use Symfony\Component\Console\Question\Question;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Output\OutputInterface;
- use Symfony\Component\Console\Question\ChoiceQuestion;
- use Symfony\Component\Console\Question\ConfirmationQuestion;
- use Illuminate\Contracts\Foundation\Application as LaravelApplication;
- class Command extends \Symfony\Component\Console\Command\Command
- {
- /**
- * The Laravel application instance.
- *
- * @var \Illuminate\Contracts\Foundation\Application
- */
- protected $laravel;
- /**
- * The input interface implementation.
- *
- * @var \Symfony\Component\Console\Input\InputInterface
- */
- protected $input;
- /**
- * The output interface implementation.
- *
- * @var \Symfony\Component\Console\Output\OutputInterface
- */
- protected $output;
- /**
- * The console command name.
- *
- * @var string
- */
- protected $name;
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description;
- /**
- * Create a new console command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct($this->name);
- // We will go ahead and set the name, description, and parameters on console
- // commands just to make things a little easier on the developer. This is
- // so they don't have to all be manually specified in the constructors.
- $this->setDescription($this->description);
- $this->specifyParameters();
- }
- /**
- * Specify the arguments and options on the command.
- *
- * @return void
- */
- protected function specifyParameters()
- {
- // We will loop through all of the arguments and options for the command and
- // set them all on the base command instance. This specifies what can get
- // passed into these commands as "parameters" to control the execution.
- foreach ($this->getArguments() as $arguments) {
- call_user_func_array(array($this, 'addArgument'), $arguments);
- }
- foreach ($this->getOptions() as $options) {
- call_user_func_array(array($this, 'addOption'), $options);
- }
- }
- /**
- * Run the console command.
- *
- * @param \Symfony\Component\Console\Input\InputInterface $input
- * @param \Symfony\Component\Console\Output\OutputInterface $output
- * @return int
- */
- public function run(InputInterface $input, OutputInterface $output)
- {
- $this->input = $input;
- $this->output = $output;
- return parent::run($input, $output);
- }
- /**
- * Execute the console command.
- *
- * @param \Symfony\Component\Console\Input\InputInterface $input
- * @param \Symfony\Component\Console\Output\OutputInterface $output
- * @return mixed
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $method = method_exists($this, 'handle') ? 'handle' : 'fire';
- return $this->laravel->call([$this, $method]);
- }
- /**
- * Call another console command.
- *
- * @param string $command
- * @param array $arguments
- * @return int
- */
- public function call($command, array $arguments = array())
- {
- $instance = $this->getApplication()->find($command);
- $arguments['command'] = $command;
- return $instance->run(new ArrayInput($arguments), $this->output);
- }
- /**
- * Call another console command silently.
- *
- * @param string $command
- * @param array $arguments
- * @return int
- */
- public function callSilent($command, array $arguments = array())
- {
- $instance = $this->getApplication()->find($command);
- $arguments['command'] = $command;
- return $instance->run(new ArrayInput($arguments), new NullOutput);
- }
- /**
- * Get the value of a command argument.
- *
- * @param string $key
- * @return string|array
- */
- public function argument($key = null)
- {
- if (is_null($key)) return $this->input->getArguments();
- return $this->input->getArgument($key);
- }
- /**
- * Get the value of a command option.
- *
- * @param string $key
- * @return string|array
- */
- public function option($key = null)
- {
- if (is_null($key)) return $this->input->getOptions();
- return $this->input->getOption($key);
- }
- /**
- * Confirm a question with the user.
- *
- * @param string $question
- * @param bool $default
- * @return bool
- */
- public function confirm($question, $default = false)
- {
- $helper = $this->getHelperSet()->get('question');
- $question = new ConfirmationQuestion("<question>{$question}</question> ", $default);
- return $helper->ask($this->input, $this->output, $question);
- }
- /**
- * Prompt the user for input.
- *
- * @param string $question
- * @param string $default
- * @return string
- */
- public function ask($question, $default = null)
- {
- $helper = $this->getHelperSet()->get('question');
- $question = new Question("<question>$question</question> ", $default);
- return $helper->ask($this->input, $this->output, $question);
- }
- /**
- * Prompt the user for input with auto completion.
- *
- * @param string $question
- * @param array $choices
- * @param string $default
- * @return string
- */
- public function askWithCompletion($question, array $choices, $default = null)
- {
- $helper = $this->getHelperSet()->get('question');
- $question = new Question("<question>$question</question> ", $default);
- $question->setAutocompleterValues($choices);
- return $helper->ask($this->input, $this->output, $question);
- }
- /**
- * Prompt the user for input but hide the answer from the console.
- *
- * @param string $question
- * @param bool $fallback
- * @return string
- */
- public function secret($question, $fallback = true)
- {
- $helper = $this->getHelperSet()->get('question');
- $question = new Question("<question>$question</question> ");
- $question->setHidden(true)->setHiddenFallback($fallback);
- return $helper->ask($this->input, $this->output, $question);
- }
- /**
- * Give the user a single choice from an array of answers.
- *
- * @param string $question
- * @param array $choices
- * @param string $default
- * @param mixed $attempts
- * @param bool $multiple
- * @return bool
- */
- public function choice($question, array $choices, $default = null, $attempts = null, $multiple = null)
- {
- $helper = $this->getHelperSet()->get('question');
- $question = new ChoiceQuestion("<question>$question</question> ", $choices, $default);
- $question->setMaxAttempts($attempts)->setMultiselect($multiple);
- return $helper->ask($this->input, $this->output, $question);
- }
- /**
- * Format input to textual table.
- *
- * @param array $headers
- * @param array $rows
- * @param string $style
- * @return void
- */
- public function table(array $headers, array $rows, $style = 'default')
- {
- $table = new Table($this->output);
- $table->setHeaders($headers)->setRows($rows)->setStyle($style)->render();
- }
- /**
- * Write a string as information output.
- *
- * @param string $string
- * @return void
- */
- public function info($string)
- {
- $this->output->writeln("<info>$string</info>");
- }
- /**
- * Write a string as standard output.
- *
- * @param string $string
- * @return void
- */
- public function line($string)
- {
- $this->output->writeln($string);
- }
- /**
- * Write a string as comment output.
- *
- * @param string $string
- * @return void
- */
- public function comment($string)
- {
- $this->output->writeln("<comment>$string</comment>");
- }
- /**
- * Write a string as question output.
- *
- * @param string $string
- * @return void
- */
- public function question($string)
- {
- $this->output->writeln("<question>$string</question>");
- }
- /**
- * Write a string as error output.
- *
- * @param string $string
- * @return void
- */
- public function error($string)
- {
- $this->output->writeln("<error>$string</error>");
- }
- /**
- * Get the console command arguments.
- *
- * @return array
- */
- protected function getArguments()
- {
- return array();
- }
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- return array();
- }
- /**
- * Get the output implementation.
- *
- * @return \Symfony\Component\Console\Output\OutputInterface
- */
- public function getOutput()
- {
- return $this->output;
- }
- /**
- * Get the Laravel application instance.
- *
- * @return \Illuminate\Contracts\Foundation\Application
- */
- public function getLaravel()
- {
- return $this->laravel;
- }
- /**
- * Set the Laravel application instance.
- *
- * @param \Illuminate\Contracts\Foundation\Application $laravel
- * @return void
- */
- public function setLaravel(LaravelApplication $laravel)
- {
- $this->laravel = $laravel;
- }
- }