public static function addPackage(IOInterface $io, $packageName, $packageVersion)
{
$io->write(sprintf(" - Adding package <info>%s</info> (<comment>%s</comment>)", $packageName, $packageVersion));
// Get the version constraint
$versionParser = new VersionParser();
$constraint = $versionParser->parseConstraints($packageVersion);
// Create package link
$link = new Link('__root__', $packageName, $constraint, 'requires', $packageVersion);
// Add package to the root package and composer.json requirements
if (in_array($packageName, self::$config['require-dev'])) {
unset(self::$composerDefinition['require'][$packageName]);
unset(self::$composerRequires[$packageName]);
self::$composerDefinition['require-dev'][$packageName] = $packageVersion;
self::$composerDevRequires[$packageName] = $link;
} else {
unset(self::$composerDefinition['require-dev'][$packageName]);
unset(self::$composerDevRequires[$packageName]);
self::$composerDefinition['require'][$packageName] = $packageVersion;
self::$composerRequires[$packageName] = $link;
}
// Set package stability if needed
switch (VersionParser::parseStability($packageVersion)) {
case 'dev':
self::$stabilityFlags[$packageName] = BasePackage::STABILITY_DEV;
break;
case 'alpha':
self::$stabilityFlags[$packageName] = BasePackage::STABILITY_ALPHA;
break;
case 'beta':
self::$stabilityFlags[$packageName] = BasePackage::STABILITY_BETA;
break;
case 'RC':
self::$stabilityFlags[$packageName] = BasePackage::STABILITY_RC;
break;
}
}