Skip to content

Commit c9214aa

Browse files
Allow multi-line action configs
Fixes issue #302
1 parent 4170f4a commit c9214aa

3 files changed

Lines changed: 21 additions & 2 deletions

File tree

src/Config/Factory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ private function includeConfig(string $path): Config
113113
private function setupConfig(string $path, array $settings = []): Config
114114
{
115115
$file = new Json($path);
116-
117116
return $file->exists()
118117
? $this->loadConfigFromFile($path, $settings)
119118
: new Config($path, false, $settings);
@@ -199,10 +198,11 @@ private function configureHook(Config\Hook $config, array $json): void
199198
{
200199
$config->setEnabled($json['enabled'] ?? true);
201200
foreach ($json['actions'] as $actionJson) {
201+
$action = is_array($actionJson['action']) ? implode(' ', $actionJson['action']) : $actionJson['action'];
202202
$options = $this->extractOptions($actionJson);
203203
$conditions = $this->extractConditions($actionJson);
204204
$settings = $this->extractSettings($actionJson);
205-
$config->addAction(new Config\Action($actionJson['action'], $options, $conditions, $settings));
205+
$config->addAction(new Config\Action($action, $options, $conditions, $settings));
206206
}
207207
}
208208

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"pre-commit": {
3+
"enabled": true,
4+
"actions": [
5+
{
6+
"action": ["foo", "bar", "baz"]
7+
}
8+
]
9+
}
10+
}

tests/unit/Config/FactoryTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace CaptainHook\App\Config;
1313

14+
use CaptainHook\App\Config;
1415
use Exception;
1516
use PHPUnit\Framework\TestCase;
1617

@@ -24,6 +25,14 @@ public function testCreate(): void
2425
$this->assertCount(1, $config->getHookConfig('pre-commit')->getActions());
2526
}
2627

28+
public function testItDoesAllowArrayActions(): void
29+
{
30+
$config = Factory::create(CH_PATH_FILES . '/config/valid-with-multi-line-action.json');
31+
$actions = $config->getHookConfig('pre-commit')->getActions();
32+
33+
$this->assertEquals('foo bar baz', $actions[0]->getAction());
34+
}
35+
2736
public function testCustomValuesCanBeDefined(): void
2837
{
2938
$config = Factory::create(CH_PATH_FILES . '/config/valid-with-all-settings.json');

0 commit comments

Comments
 (0)