Add --dev flag to InstallCommand to do source installs, fixes #26

main
Jordi Boggiano 13 years ago
parent 36a724fa51
commit 6b6d6b6d82

@ -21,7 +21,7 @@ $rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository');
$rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); $rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository');
// initialize download manager // initialize download manager
$dm = new Downloader\DownloadManager($preferSource = false); $dm = new Downloader\DownloadManager();
$dm->setDownloader('git', new Downloader\GitDownloader()); $dm->setDownloader('git', new Downloader\GitDownloader());
$dm->setDownloader('pear', new Downloader\PearDownloader()); $dm->setDownloader('pear', new Downloader\PearDownloader());
$dm->setDownloader('zip', new Downloader\ZipDownloader()); $dm->setDownloader('zip', new Downloader\ZipDownloader());

@ -20,6 +20,7 @@ use Composer\DependencyResolver\Operation;
use Composer\Package\LinkConstraint\VersionConstraint; use Composer\Package\LinkConstraint\VersionConstraint;
use Composer\Repository\PlatformRepository; use Composer\Repository\PlatformRepository;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
/** /**
@ -34,6 +35,9 @@ class InstallCommand extends Command
$this $this
->setName('install') ->setName('install')
->setDescription('Parses the composer.json file and downloads the needed dependencies.') ->setDescription('Parses the composer.json file and downloads the needed dependencies.')
->setDefinition(array(
new InputOption('dev', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
))
->setHelp(<<<EOT ->setHelp(<<<EOT
The <info>install</info> command reads the composer.json file from the The <info>install</info> command reads the composer.json file from the
current directory, processes it, and downloads and installs all the current directory, processes it, and downloads and installs all the
@ -50,6 +54,10 @@ EOT
{ {
$composer = $this->getComposer(); $composer = $this->getComposer();
if ($input->getOption('dev')) {
$composer->getDownloadManager()->setPreferSource(true);
}
// create local repo, this contains all packages that are installed in the local project // create local repo, this contains all packages that are installed in the local project
$localRepo = $composer->getRepositoryManager()->getLocalRepository(); $localRepo = $composer->getRepositoryManager()->getLocalRepository();
// create installed repo, this contains all local packages + platform packages (php & extensions) // create installed repo, this contains all local packages + platform packages (php & extensions)

@ -40,7 +40,7 @@ class DownloadManager
* *
* @param Boolean $preferSource prefer downloading from source * @param Boolean $preferSource prefer downloading from source
*/ */
public function preferSource($preferSource = true) public function setPreferSource($preferSource)
{ {
$this->preferSource = $preferSource; $this->preferSource = $preferSource;
} }

@ -326,7 +326,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->with($package) ->with($package)
->will($this->returnValue($downloader)); ->will($this->returnValue($downloader));
$manager->preferSource(); $manager->setPreferSource(true);
$manager->download($package, 'target_dir'); $manager->download($package, 'target_dir');
} }
@ -362,7 +362,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->with($package) ->with($package)
->will($this->returnValue($downloader)); ->will($this->returnValue($downloader));
$manager->preferSource(); $manager->setPreferSource(true);
$manager->download($package, 'target_dir'); $manager->download($package, 'target_dir');
} }
@ -398,7 +398,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->with($package) ->with($package)
->will($this->returnValue($downloader)); ->will($this->returnValue($downloader));
$manager->preferSource(); $manager->setPreferSource(true);
$manager->download($package, 'target_dir'); $manager->download($package, 'target_dir');
} }
@ -415,7 +415,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->will($this->returnValue(null)); ->will($this->returnValue(null));
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->preferSource(); $manager->setPreferSource(true);
$this->setExpectedException('InvalidArgumentException'); $this->setExpectedException('InvalidArgumentException');
$manager->download($package, 'target_dir'); $manager->download($package, 'target_dir');

Loading…
Cancel
Save