1
0
Fork 0

Add ability to use a Regexp when updating packages

pull/1419/head
Aurélien Thieriot 2012-12-13 09:08:04 +00:00
parent 3a0270147a
commit 159badb06b
3 changed files with 56 additions and 1 deletions

View File

@ -96,6 +96,10 @@ If you just want to update a few packages and not all, you can list them as such
$ php composer.phar update vendor/package vendor/package2 $ php composer.phar update vendor/package vendor/package2
You can also use a Regular expression pattern to update a bunch of packages at once:
$ php composer.phar update vendor.*
### Options ### Options
* **--prefer-source:** Install packages from `source` when available. * **--prefer-source:** Install packages from `source` when available.

View File

@ -624,7 +624,13 @@ class Installer
throw new \LogicException('isUpdateable should only be called when a whitelist is present'); throw new \LogicException('isUpdateable should only be called when a whitelist is present');
} }
return isset($this->updateWhitelist[$package->getName()]); foreach($this->updateWhitelist as $whiteListedPattern => $void) {
if(preg_match("#^".$whiteListedPattern."$#i", $package->getName())) {
return true;
}
}
return false;
} }
/** /**

View File

@ -0,0 +1,45 @@
--TEST--
Update with a package whitelist only updates those corresponding to the pattern
--COMPOSER--
{
"repositories": [
{
"type": "package",
"package": [
{ "name": "vendor/Test-Package", "version": "2.0" },
{ "name": "vendor/NotMe", "version": "2.0" },
{ "name": "exact/Test-Package", "version": "2.0" },
{ "name": "notexact/TestPackage", "version": "2.0" },
{ "name": "all/Package1", "version": "2.0" },
{ "name": "all/Package2", "version": "2.0" },
{ "name": "another/another", "version": "2.0" }
]
}
],
"require": {
"vendor/Test-Package": "*.*",
"vendor/NotMe": "*.*",
"exact/Test-Package": "*.*",
"notexact/TestPackage": "*.*",
"all/Package1": "*.*",
"all/Package2": "*.*",
"another/another": "*.*"
}
}
--INSTALLED--
[
{ "name": "vendor/Test-Package", "version": "1.0" },
{ "name": "vendor/NotMe", "version": "1.0" },
{ "name": "exact/Test-Package", "version": "1.0" },
{ "name": "notexact/TestPackage", "version": "1.0" },
{ "name": "all/Package1", "version": "1.0" },
{ "name": "all/Package2", "version": "1.0" },
{ "name": "another/another", "version": "1.0" }
]
--RUN--
update vendor/Test.* exact/Test-Package notexact/Test all.*
--EXPECT--
Updating vendor/Test-Package (1.0) to vendor/Test-Package (2.0)
Updating exact/Test-Package (1.0) to exact/Test-Package (2.0)
Updating all/Package1 (1.0) to all/Package1 (2.0)
Updating all/Package2 (1.0) to all/Package2 (2.0)