Skip to content

Commit

Permalink
Add support for stabilities in lock file
Browse files Browse the repository at this point in the history
  • Loading branch information
Seldaek committed May 11, 2012
1 parent a3018c4 commit 0936670
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 13 deletions.
11 changes: 9 additions & 2 deletions src/Composer/Installer.php
Expand Up @@ -180,7 +180,9 @@ public function run()
$updatedLock = $this->locker->setLockData(
$this->repositoryManager->getLocalRepository()->getPackages(),
$this->devMode ? $this->repositoryManager->getLocalDevRepository()->getPackages() : null,
$aliases
$aliases,
$this->package->getMinimumStability(),
$this->package->getStabilityFlags()
);
if ($updatedLock) {
$this->io->write('<info>Writing lock file</info>');
Expand All @@ -202,13 +204,18 @@ public function run()

protected function doInstall($localRepo, $installedRepo, $aliases, $devMode = false)
{
$minimumStability = $this->package->getMinimumStability();
$stabilityFlags = $this->package->getStabilityFlags();

// initialize locker to create aliased packages
if (!$this->update && $this->locker->isLocked($devMode)) {
$lockedPackages = $this->locker->getLockedPackages($devMode);
$minimumStability = $this->locker->getMinimumStability();
$stabilityFlags = $this->locker->getStabilityFlags();
}

// creating repository pool
$pool = new Pool($this->package->getMinimumStability(), $this->package->getStabilityFlags());
$pool = new Pool($minimumStability, $stabilityFlags);
$pool->addRepository($installedRepo);
foreach ($this->repositoryManager->getRepositories() as $repository) {
$pool->addRepository($repository);
Expand Down
36 changes: 27 additions & 9 deletions src/Composer/Package/Locker.php
Expand Up @@ -82,10 +82,10 @@ public function isFresh()
*/
public function getLockedPackages($dev = false)
{
$lockList = $this->getLockData();
$lockData = $this->getLockData();
$packages = array();

$lockedPackages = $dev ? $lockList['packages-dev'] : $lockList['packages'];
$lockedPackages = $dev ? $lockData['packages-dev'] : $lockData['packages'];
$repo = $dev ? $this->repositoryManager->getLocalDevRepository() : $this->repositoryManager->getLocalRepository();

foreach ($lockedPackages as $info) {
Expand Down Expand Up @@ -128,22 +128,38 @@ public function getLockedPackages($dev = false)
return $packages;
}

public function getMinimumStability()
{
$lockData = $this->getLockData();

// TODO BC change dev to stable end of june?
return isset($lockData['minimum-stability']) ? $lockData['minimum-stability'] : 'dev';
}

public function getStabilityFlags()
{
$lockData = $this->getLockData();

return isset($lockData['stability-flags']) ? $lockData['stability-flags'] : array();
}

public function getAliases()
{
$lockList = $this->getLockData();
return isset($lockList['aliases']) ? $lockList['aliases'] : array();
$lockData = $this->getLockData();

return isset($lockData['aliases']) ? $lockData['aliases'] : array();
}

public function getLockData()
{
if (!$this->lockFile->exists()) {
throw new \LogicException('No lockfile found. Unable to read locked packages');
}

if (null !== $this->lockDataCache) {
return $this->lockDataCache;
}

if (!$this->lockFile->exists()) {
throw new \LogicException('No lockfile found. Unable to read locked packages');
}

return $this->lockDataCache = $this->lockFile->read();
}

Expand All @@ -156,13 +172,15 @@ public function getLockData()
*
* @return Boolean
*/
public function setLockData(array $packages, $devPackages, array $aliases)
public function setLockData(array $packages, $devPackages, array $aliases, $minimumStability, array $stabilityFlags)
{
$lock = array(
'hash' => $this->hash,
'packages' => null,
'packages-dev' => null,
'aliases' => $aliases,
'minimum-stability' => $minimumStability,
'stability-flags' => $stabilityFlags,
);

$lock['packages'] = $this->lockPackages($packages);
Expand Down
6 changes: 4 additions & 2 deletions tests/Composer/Test/Package/LockerTest.php
Expand Up @@ -157,9 +157,11 @@ public function testSetLockData()
),
'packages-dev' => array(),
'aliases' => array(),
'minimum-stability' => 'dev',
'stability-flags' => array(),
));

$locker->setLockData(array($package1, $package2), array(), array());
$locker->setLockData(array($package1, $package2), array(), array(), 'dev', array());
}

public function testLockBadPackages()
Expand All @@ -177,7 +179,7 @@ public function testLockBadPackages()

$this->setExpectedException('LogicException');

$locker->setLockData(array($package1), array(), array());
$locker->setLockData(array($package1), array(), array(), 'dev', array());
}

public function testIsFresh()
Expand Down

0 comments on commit 0936670

Please sign in to comment.