+++ /dev/null
-<?php
-
-/*
- * This file is part of Psy Shell.
- *
- * (c) 2012-2017 Justin Hileman
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Psy\Command;
-
-use Psy\Context;
-use Psy\ContextAware;
-use Psy\Exception\ThrowUpException;
-use Symfony\Component\Console\Input\InputArgument;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-
-/**
- * Throw an exception out of the Psy Shell.
- */
-class ThrowUpCommand extends Command implements ContextAware
-{
- /**
- * Context instance (for ContextAware interface).
- *
- * @var Context
- */
- protected $context;
-
- /**
- * ContextAware interface.
- *
- * @param Context $context
- */
- public function setContext(Context $context)
- {
- $this->context = $context;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function configure()
- {
- $this
- ->setName('throw-up')
- ->setDefinition(array(
- new InputArgument('exception', InputArgument::OPTIONAL, 'Exception to throw'),
- ))
- ->setDescription('Throw an exception out of the Psy Shell.')
- ->setHelp(
- <<<'HELP'
-Throws an exception out of the current the Psy Shell instance.
-
-By default it throws the most recent exception.
-
-e.g.
-<return>>>> throw-up</return>
-<return>>>> throw-up $e</return>
-HELP
- );
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws InvalidArgumentException if there is no exception to throw
- * @throws ThrowUpException because what else do you expect it to do?
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- if ($name = $input->getArgument('exception')) {
- $orig = $this->context->get(preg_replace('/^\$/', '', $name));
- } else {
- $orig = $this->context->getLastException();
- }
-
- if (!$orig instanceof \Exception) {
- throw new \InvalidArgumentException('throw-up can only throw Exceptions');
- }
-
- throw new ThrowUpException($orig);
- }
-}