1
0
Fork 0

Remove PackageInterface dependency from DownloaderInterface

pull/22/head
everzet 2011-09-26 00:59:31 +03:00
parent 30f6c05069
commit c07c993e70
4 changed files with 51 additions and 41 deletions

View File

@ -94,14 +94,12 @@ class DownloadManager
if (!($preferSource && $sourceType) && $distType) { if (!($preferSource && $sourceType) && $distType) {
$downloader = $this->getDownloader($distType); $downloader = $this->getDownloader($distType);
$downloader->download( $downloader->download(
$package, $targetDir, $targetDir, $package->getDistUrl(), $package->getDistSha1Checksum(), $preferSource
$package->getDistUrl(), $package->getDistSha1Checksum(),
$preferSource
); );
$package->setInstallationSource('dist'); $package->setInstallationSource('dist');
} elseif ($sourceType) { } elseif ($sourceType) {
$downloader = $this->getDownloader($sourceType); $downloader = $this->getDownloader($sourceType);
$downloader->download($package, $targetDir, $package->getSourceUrl(), $preferSource); $downloader->download($targetDir, $package->getSourceUrl(), null, $preferSource);
$package->setInstallationSource('source'); $package->setInstallationSource('source');
} else { } else {
throw new \InvalidArgumentException('Package should have dist or source specified'); throw new \InvalidArgumentException('Package should have dist or source specified');
@ -137,9 +135,15 @@ class DownloadManager
$downloader = $this->getDownloader($initialType); $downloader = $this->getDownloader($initialType);
if ($initialType === $targetType) { if ($initialType === $targetType) {
$downloader->update($initial, $target, $targetDir, $useSource); if (!$useSource) {
$downloader->update(
$targetDir, $target->getDistUrl(), $target->getDistSha1Checksum(), $useSource
);
} else { } else {
$downloader->remove($initial, $targetDir, $useSource); $downloader->update($targetDir, $target->getSourceUrl(), null, $useSource);
}
} else {
$downloader->remove($targetDir, $useSource);
$this->download($target, $targetDir, $useSource); $this->download($target, $targetDir, $useSource);
} }
} }
@ -166,6 +170,6 @@ class DownloadManager
$downloader = $this->getDownloader($package->getSourceType()); $downloader = $this->getDownloader($package->getSourceType());
} }
$downloader->remove($package, $targetDir, $useSource); $downloader->remove($targetDir, $useSource);
} }
} }

View File

@ -12,8 +12,6 @@
namespace Composer\Downloader; namespace Composer\Downloader;
use Composer\Package\PackageInterface;
/** /**
* Downloader interface. * Downloader interface.
* *
@ -24,30 +22,28 @@ interface DownloaderInterface
/** /**
* Downloads specific package into specific folder. * Downloads specific package into specific folder.
* *
* @param PackageInterface $package package instance
* @param string $path download path * @param string $path download path
* @param string $url download url * @param string $url download url
* @param string $checksum package checksum (for dists) * @param string $checksum package checksum (for dists)
* @param Boolean $useSource download as source * @param Boolean $useSource download as source
*/ */
function download(PackageInterface $package, $path, $url, $checksum = null, $useSource = false); function download($path, $url, $checksum = null, $useSource = false);
/** /**
* Updates specific package in specific folder from initial to target version. * Updates specific package in specific folder from initial to target version.
* *
* @param PackageInterface $initial initial package
* @param PackageInterface $target updated package
* @param string $path download path * @param string $path download path
* @param string $url download url
* @param string $checksum package checksum (for dists)
* @param Boolean $useSource download as source * @param Boolean $useSource download as source
*/ */
function update(PackageInterface $initial, PackageInterface $target, $path, $useSource = false); function update($path, $url, $checksum = null, $useSource = false);
/** /**
* Removes specific package from specific folder. * Removes specific package from specific folder.
* *
* @param PackageInterface $package package instance
* @param string $path download path * @param string $path download path
* @param Boolean $useSource download as source * @param Boolean $useSource download as source
*/ */
function remove(PackageInterface $package, $path, $useSource = false); function remove($path, $useSource = false);
} }

View File

@ -12,8 +12,6 @@
namespace Composer\Downloader; namespace Composer\Downloader;
use Composer\Package\PackageInterface;
/** /**
* @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordi Boggiano <j.boggiano@seld.be>
*/ */
@ -22,7 +20,7 @@ class GitDownloader implements DownloaderInterface
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function download(PackageInterface $package, $path, $url, $checksum = null, $useSource = false) public function download($path, $url, $checksum = null, $useSource = false)
{ {
system('git clone '.escapeshellarg($url).' -b master '.escapeshellarg($path)); system('git clone '.escapeshellarg($url).' -b master '.escapeshellarg($path));
@ -33,7 +31,7 @@ class GitDownloader implements DownloaderInterface
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function update(PackageInterface $initial, PackageInterface $target, $path, $useSource = false) public function update($path, $url, $checksum = null, $useSource = false)
{ {
$cwd = getcwd(); $cwd = getcwd();
chdir($path); chdir($path);
@ -44,7 +42,7 @@ class GitDownloader implements DownloaderInterface
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
public function remove(PackageInterface $package, $path, $useSource = false) public function remove($path, $useSource = false)
{ {
echo 'rm -rf '.$path; // TODO echo 'rm -rf '.$path; // TODO
} }

View File

@ -58,7 +58,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'target_dir', 'dist_url', 'sha1', false); ->with('target_dir', 'dist_url', 'sha1', false);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('pear', $pearDownloader); $manager->setDownloader('pear', $pearDownloader);
@ -114,7 +114,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'target_dir', 'dist_url', 'sha1', false); ->with('target_dir', 'dist_url', 'sha1', false);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('pear', $pearDownloader); $manager->setDownloader('pear', $pearDownloader);
@ -148,7 +148,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$gitDownloader $gitDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'vendor/pkg', 'source_url', false); ->with('vendor/pkg', 'source_url', null, false);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('git', $gitDownloader); $manager->setDownloader('git', $gitDownloader);
@ -182,7 +182,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$gitDownloader $gitDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'vendor/pkg', 'source_url', true); ->with('vendor/pkg', 'source_url', null, true);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('git', $gitDownloader); $manager->setDownloader('git', $gitDownloader);
@ -221,7 +221,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'target_dir', 'dist_url', 'sha1', true); ->with('target_dir', 'dist_url', 'sha1', true);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('pear', $pearDownloader); $manager->setDownloader('pear', $pearDownloader);
@ -256,7 +256,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$gitDownloader $gitDownloader
->expects($this->once()) ->expects($this->once())
->method('download') ->method('download')
->with($package, 'vendor/pkg', 'source_url', true); ->with('vendor/pkg', 'source_url', null, true);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('git', $gitDownloader); $manager->setDownloader('git', $gitDownloader);
@ -301,12 +301,20 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->expects($this->once()) ->expects($this->once())
->method('getDistType') ->method('getDistType')
->will($this->returnValue('pear')); ->will($this->returnValue('pear'));
$target
->expects($this->once())
->method('getDistUrl')
->will($this->returnValue('d_url'));
$target
->expects($this->once())
->method('getDistSha1Checksum')
->will($this->returnValue('sha'));
$pearDownloader = $this->createDownloaderMock(); $pearDownloader = $this->createDownloaderMock();
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('update') ->method('update')
->with($initial, $target, 'vendor/bundles/FOS/UserBundle', false); ->with('vendor/bundles/FOS/UserBundle', 'd_url', 'sha', false);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('pear', $pearDownloader); $manager->setDownloader('pear', $pearDownloader);
@ -336,7 +344,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('remove') ->method('remove')
->with($initial, 'vendor/bundles/FOS/UserBundle', false); ->with('vendor/bundles/FOS/UserBundle', false);
$manager = $this->getMockBuilder('Composer\Downloader\DownloadManager') $manager = $this->getMockBuilder('Composer\Downloader\DownloadManager')
->setMethods(array('download')) ->setMethods(array('download'))
@ -367,12 +375,16 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
->expects($this->once()) ->expects($this->once())
->method('getSourceType') ->method('getSourceType')
->will($this->returnValue('svn')); ->will($this->returnValue('svn'));
$target
->expects($this->once())
->method('getSourceUrl')
->will($this->returnValue('s_url'));
$svnDownloader = $this->createDownloaderMock(); $svnDownloader = $this->createDownloaderMock();
$svnDownloader $svnDownloader
->expects($this->once()) ->expects($this->once())
->method('update') ->method('update')
->with($initial, $target, 'vendor/pkg', true); ->with('vendor/pkg', 's_url', null, true);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('svn', $svnDownloader); $manager->setDownloader('svn', $svnDownloader);
@ -402,7 +414,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$svnDownloader $svnDownloader
->expects($this->once()) ->expects($this->once())
->method('remove') ->method('remove')
->with($initial, 'vendor/pkg', true); ->with('vendor/pkg', true);
$manager = $this->getMockBuilder('Composer\Downloader\DownloadManager') $manager = $this->getMockBuilder('Composer\Downloader\DownloadManager')
->setMethods(array('download')) ->setMethods(array('download'))
@ -443,7 +455,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$pearDownloader $pearDownloader
->expects($this->once()) ->expects($this->once())
->method('remove') ->method('remove')
->with($package, 'vendor/bundles/FOS/UserBundle'); ->with('vendor/bundles/FOS/UserBundle', false);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('pear', $pearDownloader); $manager->setDownloader('pear', $pearDownloader);
@ -467,7 +479,7 @@ class DownloadManagerTest extends \PHPUnit_Framework_TestCase
$svnDownloader $svnDownloader
->expects($this->once()) ->expects($this->once())
->method('remove') ->method('remove')
->with($package, 'vendor/pkg'); ->with('vendor/pkg', true);
$manager = new DownloadManager(); $manager = new DownloadManager();
$manager->setDownloader('svn', $svnDownloader); $manager->setDownloader('svn', $svnDownloader);