public function freezeCommand($packageKey = 'all')
{
if (!$this->bootstrap->getContext()->isDevelopment()) {
$this->outputLine('Package freezing is only supported in Development context.');
$this->quit(3);
}
$packagesToFreeze = [];
if ($packageKey === 'all') {
foreach (array_keys($this->packageManager->getActivePackages()) as $packageKey) {
if (!$this->packageManager->isPackageFrozen($packageKey)) {
$packagesToFreeze[] = $packageKey;
}
}
if ($packagesToFreeze === []) {
$this->outputLine('Nothing to do, all active packages were already frozen.');
$this->quit(0);
}
} elseif ($packageKey === 'blackberry') {
$this->outputLine('http://bit.ly/freeze-blackberry');
$this->quit(42);
} else {
if (!$this->packageManager->isPackageActive($packageKey)) {
if ($this->packageManager->isPackageAvailable($packageKey)) {
$this->outputLine('Package "%s" is not active and thus cannot be frozen.', [$packageKey]);
$this->quit(1);
} else {
$this->outputLine('Package "%s" is not available.', [$packageKey]);
$this->quit(2);
}
}
if ($this->packageManager->isPackageFrozen($packageKey)) {
$this->outputLine('Package "%s" was already frozen.', [$packageKey]);
$this->quit(0);
}
$packagesToFreeze = [$packageKey];
}
foreach ($packagesToFreeze as $packageKey) {
$this->packageManager->freezePackage($packageKey);
$this->outputLine('Froze package "%s".', [$packageKey]);
}
}