1
0
Fork 0

Implemented way to add packages into suggest through CLI

pull/8520/head
Adriano Ferreira 2020-01-10 09:11:38 -02:00
parent 6034c2af01
commit 607d491921
3 changed files with 60 additions and 0 deletions

View File

@ -601,6 +601,18 @@ EOT
return 0; return 0;
} }
if (preg_match('/^suggest\.(.+)/', $settingKey, $matches)) {
if ($input->getOption('unset')) {
$this->configSource->removeProperty($settingKey);
return 0;
}
$this->configSource->addProperty($settingKey, $values[0]);
return 0;
}
// handle platform // handle platform
if (preg_match('/^platform\.(.+)/', $settingKey, $matches)) { if (preg_match('/^platform\.(.+)/', $settingKey, $matches)) {
if ($input->getOption('unset')) { if ($input->getOption('unset')) {

View File

@ -167,6 +167,10 @@ class JsonManipulator
public function addProperty($name, $value) public function addProperty($name, $value)
{ {
if (substr($name, 0, 8) === 'suggest.') {
return $this->addSubNode('suggest', substr($name, 8), $value);
}
if (substr($name, 0, 6) === 'extra.') { if (substr($name, 0, 6) === 'extra.') {
return $this->addSubNode('extra', substr($name, 6), $value); return $this->addSubNode('extra', substr($name, 6), $value);
} }
@ -180,6 +184,10 @@ class JsonManipulator
public function removeProperty($name) public function removeProperty($name)
{ {
if (substr($name, 0, 8) === 'suggest.') {
return $this->removeSubNode('suggest', substr($name, 8));
}
if (substr($name, 0, 6) === 'extra.') { if (substr($name, 0, 6) === 'extra.') {
return $this->removeSubNode('extra', substr($name, 6)); return $this->removeSubNode('extra', substr($name, 6));
} }

View File

@ -1814,6 +1814,46 @@ class JsonManipulatorTest extends TestCase
', $manipulator->getContents()); ', $manipulator->getContents());
} }
public function testAddSuggestWithPackage()
{
$manipulator = new JsonManipulator('{
"repositories": [
{
"type": "package",
"package": {
"authors": [],
"extra": {
"package-xml": "package.xml"
}
}
}
],
"suggest": {
"package": "Description"
}
}');
$this->assertTrue($manipulator->addProperty('suggest.new-package', 'new-description'));
$this->assertEquals('{
"repositories": [
{
"type": "package",
"package": {
"authors": [],
"extra": {
"package-xml": "package.xml"
}
}
}
],
"suggest": {
"package": "Description",
"new-package": "new-description"
}
}
', $manipulator->getContents());
}
public function testAddRepositoryCanInitializeEmptyRepositories() public function testAddRepositoryCanInitializeEmptyRepositories()
{ {
$manipulator = new JsonManipulator('{ $manipulator = new JsonManipulator('{