Allow loading of real composer repos by local path, fixes #1899
parent
fa470be001
commit
3ff8bcffea
|
@ -234,8 +234,14 @@ EOT
|
|||
{
|
||||
if (null === $repositoryUrl) {
|
||||
$sourceRepo = new CompositeRepository(Factory::createDefaultRepositories($io, $config));
|
||||
} elseif ("json" === pathinfo($repositoryUrl, PATHINFO_EXTENSION)) {
|
||||
$sourceRepo = new FilesystemRepository(new JsonFile($repositoryUrl, new RemoteFilesystem($io, $config)));
|
||||
} elseif ("json" === pathinfo($repositoryUrl, PATHINFO_EXTENSION) && file_exists($repositoryUrl)) {
|
||||
$json = new JsonFile($repositoryUrl, new RemoteFilesystem($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);
|
||||
} else {
|
||||
|
|
|
@ -85,7 +85,7 @@ class ComposerRepository extends ArrayRepository
|
|||
$this->config = $config;
|
||||
$this->options = $repoConfig['options'];
|
||||
$this->url = $repoConfig['url'];
|
||||
$this->baseUrl = rtrim(preg_replace('{^(.*)(?:/packages.json)?(?:[?#].*)?$}', '$1', $this->url), '/');
|
||||
$this->baseUrl = rtrim(preg_replace('{^(.*)(?:/[^/\\]+.json)?(?:[?#].*)?$}', '$1', $this->url), '/');
|
||||
$this->io = $io;
|
||||
$this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->url), 'a-z0-9.$');
|
||||
$this->loader = new ArrayLoader();
|
||||
|
@ -395,7 +395,7 @@ class ComposerRepository extends ArrayRepository
|
|||
|
||||
$jsonUrlParts = parse_url($this->url);
|
||||
|
||||
if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '/packages.json')) {
|
||||
if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) {
|
||||
$jsonUrl = $this->url;
|
||||
} else {
|
||||
$jsonUrl = $this->url . '/packages.json';
|
||||
|
|
Loading…
Reference in New Issue