|
@@ -22,6 +22,7 @@ use Composer\Package\BasePackage;
|
|
|
use Composer\DependencyResolver\Pool;
|
|
|
use Composer\DependencyResolver\Operation\InstallOperation;
|
|
|
use Composer\Package\Version\VersionSelector;
|
|
|
+use Composer\Repository\RepositoryFactory;
|
|
|
use Composer\Repository\ComposerRepository;
|
|
|
use Composer\Repository\CompositeRepository;
|
|
|
use Composer\Repository\FilesystemRepository;
|
|
@@ -60,7 +61,8 @@ class CreateProjectCommand extends BaseCommand
|
|
|
new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'),
|
|
|
new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'),
|
|
|
new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'),
|
|
|
- new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'Pick a different repository url to look for the package.'),
|
|
|
+ new InputOption('repository', null, InputOption::VALUE_REQUIRED, 'Pick a different repository (as url or json config) to look for the package.'),
|
|
|
+ new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'),
|
|
|
new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'),
|
|
|
new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'),
|
|
|
new InputOption('no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.'),
|
|
@@ -92,7 +94,7 @@ To setup a developer workable version you should create the project using the so
|
|
|
controlled code by appending the <info>'--prefer-source'</info> flag.
|
|
|
|
|
|
To install a package from another repository than the default one you
|
|
|
-can pass the <info>'--repository-url=https://myrepository.org'</info> flag.
|
|
|
+can pass the <info>'--repository=https://myrepository.org'</info> flag.
|
|
|
|
|
|
EOT
|
|
|
)
|
|
@@ -125,7 +127,7 @@ EOT
|
|
|
$preferSource,
|
|
|
$preferDist,
|
|
|
!$input->getOption('no-dev'),
|
|
|
- $input->getOption('repository-url'),
|
|
|
+ $input->getOption('repository') || $input->getOption('repository-url'),
|
|
|
$input->getOption('no-plugins'),
|
|
|
$input->getOption('no-scripts'),
|
|
|
$input->getOption('keep-vcs'),
|
|
@@ -135,7 +137,7 @@ EOT
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public function installProject(IOInterface $io, Config $config, InputInterface $input, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false, $ignorePlatformReqs = false)
|
|
|
+ public function installProject(IOInterface $io, Config $config, InputInterface $input, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false, $noInstall = false, $ignorePlatformReqs = false)
|
|
|
{
|
|
|
$oldCwd = getcwd();
|
|
|
|
|
@@ -143,7 +145,7 @@ EOT
|
|
|
$io->loadConfiguration($config);
|
|
|
|
|
|
if ($packageName !== null) {
|
|
|
- $installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repositoryUrl, $disablePlugins, $noScripts, $keepVcs, $noProgress);
|
|
|
+ $installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repository, $disablePlugins, $noScripts, $keepVcs, $noProgress);
|
|
|
} else {
|
|
|
$installedFromVcs = false;
|
|
|
}
|
|
@@ -239,22 +241,12 @@ EOT
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
- protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositoryUrl = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false)
|
|
|
+ protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repository = null, $disablePlugins = false, $noScripts = false, $keepVcs = false, $noProgress = false)
|
|
|
{
|
|
|
- if (null === $repositoryUrl) {
|
|
|
- $sourceRepo = new CompositeRepository(Factory::createDefaultRepositories($io, $config));
|
|
|
- } elseif ("json" === pathinfo($repositoryUrl, PATHINFO_EXTENSION) && file_exists($repositoryUrl)) {
|
|
|
- $json = new JsonFile($repositoryUrl, Factory::createRemoteFilesystem($io, $config));
|
|
|
- $data = $json->read();
|
|
|
- if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) {
|
|
|
- $sourceRepo = new ComposerRepository(array('url' => 'file://' . strtr(realpath($repositoryUrl), '\\', '/')), $io, $config);
|
|
|
- } else {
|
|
|
- $sourceRepo = new FilesystemRepository($json);
|
|
|
- }
|
|
|
- } elseif (0 === strpos($repositoryUrl, 'http')) {
|
|
|
- $sourceRepo = new ComposerRepository(array('url' => $repositoryUrl), $io, $config);
|
|
|
+ if (null === $repository) {
|
|
|
+ $sourceRepo = new CompositeRepository(RepositoryFactory::default($io, $config));
|
|
|
} else {
|
|
|
- throw new \InvalidArgumentException("Invalid repository url given. Has to be a .json file or an http url.");
|
|
|
+ $sourceRepo = RepositoryFactory::fromString($io, $config, $repository, true);
|
|
|
}
|
|
|
|
|
|
$parser = new VersionParser();
|