1
0
Fork 0

Composer\Command dependencies (application and io) should can now be injected. This way, Composer\Command objects can be used in a regular symfony2 Console\Application.

pull/665/head
Paul Seiffert 2012-05-08 23:25:32 +02:00
parent 7308049056
commit 51e165c6c5
1 changed files with 47 additions and 5 deletions

View File

@ -13,6 +13,7 @@
namespace Composer\Command;
use Symfony\Component\Console\Command\Command as BaseCommand;
use Composer\Console\Application as ComposerApplication;
/**
* Base class for Composer commands
@ -23,18 +24,59 @@ use Symfony\Component\Console\Command\Command as BaseCommand;
abstract class Command extends BaseCommand
{
/**
* @return \Composer\Composer
* @var \Composer\Composer
*/
protected function getComposer($required = true)
private $composer;
/**
* @var \Composer\IO\IOInterface
*/
private $io;
/**
* @param bool $required
* @return \Composer\Composer
*/
public function getComposer($required = true)
{
return $this->getApplication()->getComposer($required);
if (null === $this->composer) {
$application = $this->getApplication();
if ($application instanceof ComposerApplication) {
/* @var $application ComposerApplication */
$this->composer = $application->getComposer();
}
}
return $this->composer;
}
/**
* @param \Composer\Composer $composer
*/
public function setComposer(\Composer\Composer $composer)
{
$this->composer = $composer;
}
/**
* @return \Composer\IO\ConsoleIO
*/
protected function getIO()
public function getIO()
{
return $this->getApplication()->getIO();
if (null === $this->io) {
$application = $this->getApplication();
if ($application instanceof ComposerApplication) {
/* @var $application ComposerApplication */
$this->io = $application->getIO();
}
}
return $this->io;
}
/**
* @param \Composer\IO\IOInterface $io
*/
public function setIO(\Composer\IO\IOInterface $io)
{
$this->io = $io;
}
}