mirror of
https://github.com/composer/composer
synced 2025-05-10 09:02:59 +00:00
Add --repository flag to init command, and rename --repository-url to --repository in create-project, fixes #4200, closes #4207, closes #2604, fixes #2920
This commit is contained in:
parent
b6b2635f42
commit
1aec1c1fc8
12 changed files with 218 additions and 95 deletions
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue