From d1a452b00b184655be2132aeb9e426c4a9b02836 Mon Sep 17 00:00:00 2001 From: bboer Date: Thu, 30 Aug 2012 16:52:37 +0200 Subject: [PATCH] Made repoConfig available for the VcsDriver to be able to provide additional configuration options easily. --- src/Composer/Repository/Vcs/SvnDriver.php | 36 +++++++++++------------ src/Composer/Repository/Vcs/VcsDriver.php | 10 ++++--- src/Composer/Repository/VcsRepository.php | 11 ++++--- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/src/Composer/Repository/Vcs/SvnDriver.php b/src/Composer/Repository/Vcs/SvnDriver.php index a2a4e468c..4fd6eb21e 100755 --- a/src/Composer/Repository/Vcs/SvnDriver.php +++ b/src/Composer/Repository/Vcs/SvnDriver.php @@ -32,9 +32,9 @@ class SvnDriver extends VcsDriver protected $branches; protected $infoCache = array(); - protected $trunkLocation = 'trunk'; - protected $branchesLocation = 'branches'; - protected $tagsLocation = 'tags'; + protected $trunkPath = 'trunk'; + protected $branchesPath = 'branches'; + protected $tagsPath = 'tags'; /** * @var \Composer\Util\Svn @@ -47,18 +47,18 @@ class SvnDriver extends VcsDriver public function initialize() { $this->url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); - - if ($this->config->has('trunkLocation')) { - $this->trunkLocation = $this->config->get('trunkLocation'); + + if (isset($this->repoConfig['trunk-path'])) { + $this->trunkPath = $this->repoConfig['trunk-path']; } - if ($this->config->has('branchesLocation')) { - $this->branchesLocation = $this->config->get('branchesLocation'); + if (isset($this->repoConfig['branches-path'])) { + $this->branchesPath = $this->repoConfig['branches-path']; } - if ($this->config->has('tagsLocation')) { - $this->tagsLocation = $this->config->get('tagsLocation'); + if (isset($this->repoConfig['tags-path'])) { + $this->tagsPath = $this->repoConfig['tags-path']; } - if (false !== ($pos = strrpos($this->url, '/' . $this->trunkLocation))) { + if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { $this->baseUrl = substr($this->url, 0, $pos); } @@ -73,7 +73,7 @@ class SvnDriver extends VcsDriver */ public function getRootIdentifier() { - return $this->trunkLocation; + return $this->trunkPath; } /** @@ -159,13 +159,13 @@ class SvnDriver extends VcsDriver if (null === $this->tags) { $this->tags = array(); - $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsLocation); + $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); if ($output) { foreach ($this->process->splitLines($output) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { - $this->tags[rtrim($match[2], '/')] = '/' . $this->tagsLocation . + $this->tags[rtrim($match[2], '/')] = '/' . $this->tagsPath . '/' . $match[2] . '@' . $match[1]; } } @@ -189,8 +189,8 @@ class SvnDriver extends VcsDriver foreach ($this->process->splitLines($output) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { - if (isset($match[1]) && isset($match[2]) && $match[2] === $this->trunkLocation . '/') { - $this->branches[$this->trunkLocation] = '/' . $this->trunkLocation . + if (isset($match[1]) && isset($match[2]) && $match[2] === $this->trunkPath . '/') { + $this->branches[$this->trunkPath] = '/' . $this->trunkPath . '/@'.$match[1]; break; } @@ -199,13 +199,13 @@ class SvnDriver extends VcsDriver } unset($output); - $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesLocation); + $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); if ($output) { foreach ($this->process->splitLines(trim($output)) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if (isset($match[1]) && isset($match[2]) && $match[2] !== './') { - $this->branches[rtrim($match[2], '/')] = '/' . $this->branchesLocation . + $this->branches[rtrim($match[2], '/')] = '/' . $this->branchesPath . '/' . $match[2] . '@' . $match[1]; } } diff --git a/src/Composer/Repository/Vcs/VcsDriver.php b/src/Composer/Repository/Vcs/VcsDriver.php index ead688b69..c7a3be24d 100644 --- a/src/Composer/Repository/Vcs/VcsDriver.php +++ b/src/Composer/Repository/Vcs/VcsDriver.php @@ -27,6 +27,7 @@ abstract class VcsDriver implements VcsDriverInterface { protected $url; protected $originUrl; + protected $repoConfig; protected $io; protected $config; protected $process; @@ -35,16 +36,17 @@ abstract class VcsDriver implements VcsDriverInterface /** * Constructor. * - * @param string $url The URL + * @param array $repoConfig The repository configuration * @param IOInterface $io The IO instance * @param Config $config The composer configuration * @param ProcessExecutor $process Process instance, injectable for mocking * @param callable $remoteFilesystem Remote Filesystem, injectable for mocking */ - final public function __construct($url, IOInterface $io, Config $config, ProcessExecutor $process = null, $remoteFilesystem = null) + final public function __construct(array $repoConfig, IOInterface $io, Config $config, ProcessExecutor $process = null, $remoteFilesystem = null) { - $this->url = $url; - $this->originUrl = $url; + $this->url = $repoConfig['url']; + $this->originUrl = $repoConfig['url']; + $this->repoConfig = $repoConfig; $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor; diff --git a/src/Composer/Repository/VcsRepository.php b/src/Composer/Repository/VcsRepository.php index 2dd0407e9..048a085f7 100644 --- a/src/Composer/Repository/VcsRepository.php +++ b/src/Composer/Repository/VcsRepository.php @@ -33,6 +33,7 @@ class VcsRepository extends ArrayRepository protected $versionParser; protected $type; protected $loader; + protected $repoConfig; public function __construct(array $repoConfig, IOInterface $io, Config $config, array $drivers = null) { @@ -50,9 +51,7 @@ class VcsRepository extends ArrayRepository $this->type = isset($repoConfig['type']) ? $repoConfig['type'] : 'vcs'; $this->verbose = $io->isVerbose(); $this->config = $config; - if (isset($repoConfig['config']) && is_array($repoConfig['config'])) { - $this->config->merge(array('config' => $repoConfig['config'])); - } + $this->repoConfig = $repoConfig; } public function setLoader(LoaderInterface $loader) @@ -64,7 +63,7 @@ class VcsRepository extends ArrayRepository { if (isset($this->drivers[$this->type])) { $class = $this->drivers[$this->type]; - $driver = new $class($this->url, $this->io, $this->config); + $driver = new $class($this->repoConfig, $this->io, $this->config); $driver->initialize(); return $driver; @@ -72,7 +71,7 @@ class VcsRepository extends ArrayRepository foreach ($this->drivers as $driver) { if ($driver::supports($this->io, $this->url)) { - $driver = new $driver($this->url, $this->io, $this->config); + $driver = new $driver($this->repoConfig, $this->io, $this->config); $driver->initialize(); return $driver; @@ -81,7 +80,7 @@ class VcsRepository extends ArrayRepository foreach ($this->drivers as $driver) { if ($driver::supports($this->io, $this->url, true)) { - $driver = new $driver($this->url, $this->io, $this->config); + $driver = new $driver($this->repoConfig, $this->io, $this->config); $driver->initialize(); return $driver;