@@ -7,8 +7,8 @@ |
||
| 7 | 7 | protected function init () |
| 8 | 8 | { |
| 9 | 9 | $this->name('Hello World') |
| 10 | - ->version('1.0.0-alpha') |
|
| 11 | - ->description('Shows a "Hello World" message'); |
|
| 10 | + ->version('1.0.0-alpha') |
|
| 11 | + ->description('Shows a "Hello World" message'); |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | protected function execute() |
@@ -4,7 +4,7 @@ |
||
| 4 | 4 | |
| 5 | 5 | class HelloWorld extends Command { |
| 6 | 6 | |
| 7 | - protected function init () |
|
| 7 | + protected function init() |
|
| 8 | 8 | { |
| 9 | 9 | $this->name('Hello World') |
| 10 | 10 | ->version('1.0.0-alpha') |
@@ -9,54 +9,54 @@ |
||
| 9 | 9 | public function test_it_repeats_word_three_times() |
| 10 | 10 | { |
| 11 | 11 | $this->command(new RepeatCommand, ['foo']) |
| 12 | - ->argsEqual((object) [ |
|
| 12 | + ->argsEqual((object) [ |
|
| 13 | 13 | 'word' => 'foo', |
| 14 | 14 | 'count' => 3 |
| 15 | - ]) |
|
| 16 | - ->optionsEqual([ |
|
| 15 | + ]) |
|
| 16 | + ->optionsEqual([ |
|
| 17 | 17 | '--upper' => false |
| 18 | - ]) |
|
| 19 | - ->printsExactly("foofoofoo<br>"); |
|
| 18 | + ]) |
|
| 19 | + ->printsExactly("foofoofoo<br>"); |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | public function test_it_repeats_word_n_times() |
| 23 | 23 | { |
| 24 | 24 | $this->command(new RepeatCommand, ['bar', '5']) |
| 25 | - ->argsEqual((object) [ |
|
| 25 | + ->argsEqual((object) [ |
|
| 26 | 26 | 'word' => 'bar', |
| 27 | 27 | 'count' => 5 |
| 28 | - ]) |
|
| 29 | - ->optionsEqual([ |
|
| 28 | + ]) |
|
| 29 | + ->optionsEqual([ |
|
| 30 | 30 | '--upper' => false |
| 31 | - ]) |
|
| 32 | - ->printsExactly("barbarbarbarbar<br>"); |
|
| 31 | + ]) |
|
| 32 | + ->printsExactly("barbarbarbarbar<br>"); |
|
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | public function test_it_repeats_word_n_times_uppercase() |
| 36 | 36 | { |
| 37 | 37 | $this->command(new RepeatCommand, ['bar', '5', '--upper']) |
| 38 | - ->argsEqual((object) [ |
|
| 39 | - 'word' => 'bar', |
|
| 40 | - 'count' => 5 |
|
| 41 | - ]) |
|
| 42 | - ->optionsEqual([ |
|
| 43 | - '--upper' => true |
|
| 44 | - ]) |
|
| 45 | - ->printsExactly("BARBARBARBARBAR<br>"); |
|
| 38 | + ->argsEqual((object) [ |
|
| 39 | + 'word' => 'bar', |
|
| 40 | + 'count' => 5 |
|
| 41 | + ]) |
|
| 42 | + ->optionsEqual([ |
|
| 43 | + '--upper' => true |
|
| 44 | + ]) |
|
| 45 | + ->printsExactly("BARBARBARBARBAR<br>"); |
|
| 46 | 46 | } |
| 47 | 47 | |
| 48 | 48 | public function test_it_runs_interatively() |
| 49 | 49 | { |
| 50 | 50 | $this->withStdin("Yo\n\n\n") |
| 51 | - ->command(new RepeatCommand, ['-i']) |
|
| 52 | - ->argsEqual((object) [ |
|
| 53 | - 'word' => 'Yo', |
|
| 54 | - 'count' => 3 |
|
| 55 | - ]) |
|
| 56 | - ->optionsEqual([ |
|
| 57 | - '--upper' => false |
|
| 58 | - ]) |
|
| 59 | - ->prints("YoYoYo<br>"); |
|
| 51 | + ->command(new RepeatCommand, ['-i']) |
|
| 52 | + ->argsEqual((object) [ |
|
| 53 | + 'word' => 'Yo', |
|
| 54 | + 'count' => 3 |
|
| 55 | + ]) |
|
| 56 | + ->optionsEqual([ |
|
| 57 | + '--upper' => false |
|
| 58 | + ]) |
|
| 59 | + ->prints("YoYoYo<br>"); |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | } |
@@ -143,7 +143,7 @@ discard block |
||
| 143 | 143 | } |
| 144 | 144 | |
| 145 | 145 | $this->options = []; |
| 146 | - foreach($options as $option) |
|
| 146 | + foreach ($options as $option) |
|
| 147 | 147 | $this->options[$option] = false; |
| 148 | 148 | |
| 149 | 149 | return $this; |
@@ -365,7 +365,7 @@ discard block |
||
| 365 | 365 | protected function clear() |
| 366 | 366 | { |
| 367 | 367 | $this->args = null; |
| 368 | - foreach($this->options as $name => $value) { |
|
| 368 | + foreach ($this->options as $name => $value) { |
|
| 369 | 369 | $this->options[$name] = false; |
| 370 | 370 | } |
| 371 | 371 | } |
@@ -46,16 +46,16 @@ discard block |
||
| 46 | 46 | public function __construct() |
| 47 | 47 | { |
| 48 | 48 | $this->commands([]) |
| 49 | - ->name('Unknown') |
|
| 50 | - ->version('1.0.0') |
|
| 51 | - ->description('...') |
|
| 52 | - ->descriptions([]) |
|
| 53 | - ->options([]) |
|
| 54 | - ->console(new Console) |
|
| 55 | - ->fs(new Filesystem('.')) |
|
| 56 | - ->configPaths([]) |
|
| 57 | - ->setupSubCommands() |
|
| 58 | - ->init(); |
|
| 49 | + ->name('Unknown') |
|
| 50 | + ->version('1.0.0') |
|
| 51 | + ->description('...') |
|
| 52 | + ->descriptions([]) |
|
| 53 | + ->options([]) |
|
| 54 | + ->console(new Console) |
|
| 55 | + ->fs(new Filesystem('.')) |
|
| 56 | + ->configPaths([]) |
|
| 57 | + ->setupSubCommands() |
|
| 58 | + ->init(); |
|
| 59 | 59 | } |
| 60 | 60 | |
| 61 | 61 | /** |
@@ -319,8 +319,8 @@ discard block |
||
| 319 | 319 | protected function setupSubCommands() |
| 320 | 320 | { |
| 321 | 321 | return $this->command('--help', new HelpCommand($this)) |
| 322 | - ->command('--version', new VersionCommand($this)) |
|
| 323 | - ->command('-i', new InteractiveCommand($this)); |
|
| 322 | + ->command('--version', new VersionCommand($this)) |
|
| 323 | + ->command('-i', new InteractiveCommand($this)); |
|
| 324 | 324 | } |
| 325 | 325 | |
| 326 | 326 | public function describe(string $name, string $description = null) |
@@ -38,8 +38,9 @@ discard block |
||
| 38 | 38 | |
| 39 | 39 | public static function create(callable $action = null) { |
| 40 | 40 | $command = new Command; |
| 41 | - if (null !== $action) |
|
| 42 | - $command->action($action); |
|
| 41 | + if (null !== $action) { |
|
| 42 | + $command->action($action); |
|
| 43 | + } |
|
| 43 | 44 | return $command; |
| 44 | 45 | } |
| 45 | 46 | |
@@ -126,8 +127,9 @@ discard block |
||
| 126 | 127 | */ |
| 127 | 128 | public function syntax(string $syntax = null) |
| 128 | 129 | { |
| 129 | - if (null === $syntax) |
|
| 130 | - return $this->syntax; |
|
| 130 | + if (null === $syntax) { |
|
| 131 | + return $this->syntax; |
|
| 132 | + } |
|
| 131 | 133 | |
| 132 | 134 | $this->syntax = S::syntax()->parse("{{$syntax}| }"); |
| 133 | 135 | return $this; |
@@ -146,8 +148,9 @@ discard block |
||
| 146 | 148 | } |
| 147 | 149 | |
| 148 | 150 | $this->options = []; |
| 149 | - foreach($options as $option) |
|
| 150 | - $this->options[$option] = false; |
|
| 151 | + foreach($options as $option) { |
|
| 152 | + $this->options[$option] = false; |
|
| 153 | + } |
|
| 151 | 154 | |
| 152 | 155 | return $this; |
| 153 | 156 | } |
@@ -160,8 +163,9 @@ discard block |
||
| 160 | 163 | */ |
| 161 | 164 | public function option(string $name) |
| 162 | 165 | { |
| 163 | - if (!array_key_exists($name, $this->options)) |
|
| 164 | - throw new \InvalidArgumentException("Unknown option '{$name}'"); |
|
| 166 | + if (!array_key_exists($name, $this->options)) { |
|
| 167 | + throw new \InvalidArgumentException("Unknown option '{$name}'"); |
|
| 168 | + } |
|
| 165 | 169 | return $this->options[$name]; |
| 166 | 170 | } |
| 167 | 171 | |
@@ -209,8 +213,9 @@ discard block |
||
| 209 | 213 | if (null === $value) { |
| 210 | 214 | return $this->fs; |
| 211 | 215 | } |
| 212 | - if (is_string($value)) |
|
| 213 | - $value = new Filesystem($value); |
|
| 216 | + if (is_string($value)) { |
|
| 217 | + $value = new Filesystem($value); |
|
| 218 | + } |
|
| 214 | 219 | $this->fs = $value; |
| 215 | 220 | foreach ($this->commands as $name => $command) { |
| 216 | 221 | $command->fs = $value; |
@@ -247,8 +252,9 @@ discard block |
||
| 247 | 252 | |
| 248 | 253 | public function template(string $name) |
| 249 | 254 | { |
| 250 | - if (null === $this->templatesLoader) |
|
| 251 | - throw new \Exception("Please initialize the templates loader before trying to load templates!"); |
|
| 255 | + if (null === $this->templatesLoader) { |
|
| 256 | + throw new \Exception("Please initialize the templates loader before trying to load templates!"); |
|
| 257 | + } |
|
| 252 | 258 | return $this->templatesLoader->load($name); |
| 253 | 259 | } |
| 254 | 260 | |
@@ -303,8 +309,9 @@ discard block |
||
| 303 | 309 | public function command(string $name, Command $command = null) |
| 304 | 310 | { |
| 305 | 311 | if (null === $command) { |
| 306 | - if (!array_key_exists($name, $this->commands)) |
|
| 307 | - throw new \InvalidArgumentException("subcommand '{$name}' not found!"); |
|
| 312 | + if (!array_key_exists($name, $this->commands)) { |
|
| 313 | + throw new \InvalidArgumentException("subcommand '{$name}' not found!"); |
|
| 314 | + } |
|
| 308 | 315 | return $this->commands[$name]; |
| 309 | 316 | } |
| 310 | 317 | $this->commands[$name] = $command; |
@@ -325,9 +332,10 @@ discard block |
||
| 325 | 332 | |
| 326 | 333 | public function describe(string $name, string $description = null) |
| 327 | 334 | { |
| 328 | - if (null === $description) |
|
| 329 | - return array_key_exists($name, $this->descriptions) |
|
| 335 | + if (null === $description) { |
|
| 336 | + return array_key_exists($name, $this->descriptions) |
|
| 330 | 337 | ? $this->descriptions[$name] : ''; |
| 338 | + } |
|
| 331 | 339 | if (substr($name, 0, 2) == '--' && array_key_exists($name, $this->options())) { |
| 332 | 340 | $this->descriptions[$name] = $description; |
| 333 | 341 | return $this; |
@@ -363,8 +371,9 @@ discard block |
||
| 363 | 371 | } else { |
| 364 | 372 | $this->args = (object) $args; |
| 365 | 373 | foreach ($options as $name) { |
| 366 | - if (!array_key_exists($name, $this->options)) |
|
| 367 | - throw new \Exception("Unknown option '{$name}'"); |
|
| 374 | + if (!array_key_exists($name, $this->options)) { |
|
| 375 | + throw new \Exception("Unknown option '{$name}'"); |
|
| 376 | + } |
|
| 368 | 377 | $this->options[$name] = true; |
| 369 | 378 | } |
| 370 | 379 | } |
@@ -399,10 +408,11 @@ discard block |
||
| 399 | 408 | |
| 400 | 409 | $arguments = []; |
| 401 | 410 | foreach ($args as &$arg) { |
| 402 | - if (array_key_exists($arg, $this->options)) |
|
| 403 | - $this->options[$arg] = true; |
|
| 404 | - else |
|
| 405 | - $arguments[] = $arg; |
|
| 411 | + if (array_key_exists($arg, $this->options)) { |
|
| 412 | + $this->options[$arg] = true; |
|
| 413 | + } else { |
|
| 414 | + $arguments[] = $arg; |
|
| 415 | + } |
|
| 406 | 416 | } |
| 407 | 417 | $arguments = T::join($arguments, ' '); |
| 408 | 418 | $this->args = $this->syntax->parse($arguments); |
@@ -26,7 +26,7 @@ discard block |
||
| 26 | 26 | protected function init() |
| 27 | 27 | { |
| 28 | 28 | $this->name('Interactive') |
| 29 | - ->description('Reads the command arguments and options interactively.'); |
|
| 29 | + ->description('Reads the command arguments and options interactively.'); |
|
| 30 | 30 | $this->helper = SyntaxHelper::instance(); |
| 31 | 31 | $this->confirmSyntax = S::optional(S::boolean(), false); |
| 32 | 32 | } |
@@ -98,7 +98,7 @@ discard block |
||
| 98 | 98 | $description = $this->parent->describe($name); |
| 99 | 99 | $this->console->out( |
| 100 | 100 | "<success>{$name}</success> <warn>{$text}</warn>" |
| 101 | - . " {$description} <warn>{$default}</warn><br>" |
|
| 101 | + . " {$description} <warn>{$default}</warn><br>" |
|
| 102 | 102 | ); |
| 103 | 103 | } |
| 104 | 104 | |
@@ -44,7 +44,7 @@ discard block |
||
| 44 | 44 | |
| 45 | 45 | $options = array_keys($parent->options()); |
| 46 | 46 | $chosen = []; |
| 47 | - foreach($options as $option) { |
|
| 47 | + foreach ($options as $option) { |
|
| 48 | 48 | $bool = $this->read($this->confirmSyntax, $option, true); |
| 49 | 49 | $parent->options[$option] = $bool; |
| 50 | 50 | if ($bool) { |
@@ -143,9 +143,9 @@ discard block |
||
| 143 | 143 | $done = false; |
| 144 | 144 | $text = ''; |
| 145 | 145 | $result = null; |
| 146 | - while (! $done) { |
|
| 146 | + while (!$done) { |
|
| 147 | 147 | $c = $this->readChar(); |
| 148 | - switch($c) { |
|
| 148 | + switch ($c) { |
|
| 149 | 149 | case 'enter': |
| 150 | 150 | $done = true; |
| 151 | 151 | break; |
@@ -104,8 +104,9 @@ discard block |
||
| 104 | 104 | protected function readObject(ObjectSyntax $syntax, string $prefix) |
| 105 | 105 | { |
| 106 | 106 | $result = []; |
| 107 | - if ($prefix != '') |
|
| 108 | - $prefix .= '.'; |
|
| 107 | + if ($prefix != '') { |
|
| 108 | + $prefix .= '.'; |
|
| 109 | + } |
|
| 109 | 110 | foreach ($syntax->fields() as $name => $s) { |
| 110 | 111 | $fullname = $prefix . $name; |
| 111 | 112 | $result[$name] = $this->read($s, $fullname, true); |
@@ -132,8 +133,9 @@ discard block |
||
| 132 | 133 | $this->console->out("<color:252>{$default}<column:1><reset>"); |
| 133 | 134 | $n = ord($this->console->char()); |
| 134 | 135 | $this->console->out('<column:1><clearLine>'); |
| 135 | - if (array_key_exists($n, static::KEYS) && static::KEYS[$n] == 'enter') |
|
| 136 | - return $syntax->getDefault(); |
|
| 136 | + if (array_key_exists($n, static::KEYS) && static::KEYS[$n] == 'enter') { |
|
| 137 | + return $syntax->getDefault(); |
|
| 138 | + } |
|
| 137 | 139 | return $this->read($syntax->syntax(), $prefix); |
| 138 | 140 | } |
| 139 | 141 | |
@@ -175,8 +177,9 @@ discard block |
||
| 175 | 177 | protected function readChar() : string |
| 176 | 178 | { |
| 177 | 179 | $c = $this->console->char(); |
| 178 | - if (ctype_print($c)) |
|
| 179 | - return $c; |
|
| 180 | + if (ctype_print($c)) { |
|
| 181 | + return $c; |
|
| 182 | + } |
|
| 180 | 183 | $n = ord($c); |
| 181 | 184 | if ( |
| 182 | 185 | array_key_exists($n, static::KEYS) |
@@ -14,7 +14,7 @@ discard block |
||
| 14 | 14 | protected function init() |
| 15 | 15 | { |
| 16 | 16 | $this->name('Help') |
| 17 | - ->description('Shows the help message.'); |
|
| 17 | + ->description('Shows the help message.'); |
|
| 18 | 18 | $this->helper = SyntaxHelper::instance(); |
| 19 | 19 | } |
| 20 | 20 | |
@@ -23,10 +23,10 @@ discard block |
||
| 23 | 23 | $parent = $this->parent; |
| 24 | 24 | |
| 25 | 25 | $text = "<info>{$parent->name}</info> version <info>{$parent->version}</info>" |
| 26 | - . "<br><br>{$parent->description}<br><br>" |
|
| 27 | - . $this->syntaxHelp() |
|
| 28 | - . $this->optionsHelp() |
|
| 29 | - . $this->subCommandsHelp(); |
|
| 26 | + . "<br><br>{$parent->description}<br><br>" |
|
| 27 | + . $this->syntaxHelp() |
|
| 28 | + . $this->optionsHelp() |
|
| 29 | + . $this->subCommandsHelp(); |
|
| 30 | 30 | |
| 31 | 31 | $this->console()->out($text); |
| 32 | 32 | } |
@@ -88,11 +88,11 @@ |
||
| 88 | 88 | $default = 'default: ' . json_encode($s->getDefault()); |
| 89 | 89 | else |
| 90 | 90 | $default = 'required'; |
| 91 | - $description = $this->parent()->describe($prefix.$name); |
|
| 91 | + $description = $this->parent()->describe($prefix . $name); |
|
| 92 | 92 | $syntax = $this->helper->asString($s); |
| 93 | 93 | $text = "{$tabs}<warn>{$name}</warn> <success>{$syntax}</success>" |
| 94 | 94 | . " {$description} <info>({$default})</info><br>"; |
| 95 | - $level ++; |
|
| 95 | + $level++; |
|
| 96 | 96 | $prefix .= $name . '.'; |
| 97 | 97 | foreach ($this->helper->fields($s) as $field => $syntax) { |
| 98 | 98 | $text .= $this->fieldHelp($field, $syntax, $prefix, $level); |
@@ -84,10 +84,11 @@ |
||
| 84 | 84 | { |
| 85 | 85 | $tabs = str_repeat('<tab>', $level); |
| 86 | 86 | $optional = ($s instanceof OptionalSyntax); |
| 87 | - if ($optional) |
|
| 88 | - $default = 'default: ' . json_encode($s->getDefault()); |
|
| 89 | - else |
|
| 90 | - $default = 'required'; |
|
| 87 | + if ($optional) { |
|
| 88 | + $default = 'default: ' . json_encode($s->getDefault()); |
|
| 89 | + } else { |
|
| 90 | + $default = 'required'; |
|
| 91 | + } |
|
| 91 | 92 | $description = $this->parent()->describe($prefix.$name); |
| 92 | 93 | $syntax = $this->helper->asString($s); |
| 93 | 94 | $text = "{$tabs}<warn>{$name}</warn> <success>{$syntax}</success>" |
@@ -9,8 +9,9 @@ discard block |
||
| 9 | 9 | |
| 10 | 10 | public static function instance() : SyntaxHelper |
| 11 | 11 | { |
| 12 | - if (null === self::$instance) |
|
| 13 | - self::$instance = new SyntaxHelper; |
|
| 12 | + if (null === self::$instance) { |
|
| 13 | + self::$instance = new SyntaxHelper; |
|
| 14 | + } |
|
| 14 | 15 | return self::$instance; |
| 15 | 16 | } |
| 16 | 17 | |
@@ -25,8 +26,9 @@ discard block |
||
| 25 | 26 | public function asString(Syntax $syntax) : string |
| 26 | 27 | { |
| 27 | 28 | $type = $this->type($syntax); |
| 28 | - if ($type == 'optional') |
|
| 29 | - return $this->asString($syntax->syntax()); |
|
| 29 | + if ($type == 'optional') { |
|
| 30 | + return $this->asString($syntax->syntax()); |
|
| 31 | + } |
|
| 30 | 32 | switch ($type) { |
| 31 | 33 | case 'object': |
| 32 | 34 | return implode( |
@@ -7,7 +7,7 @@ |
||
| 7 | 7 | protected function init() |
| 8 | 8 | { |
| 9 | 9 | $this->name('Version') |
| 10 | - ->description('Shows the version.'); |
|
| 10 | + ->description('Shows the version.'); |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | protected function setupSubCommands() |
@@ -22,13 +22,15 @@ |
||
| 22 | 22 | */ |
| 23 | 23 | public function get(string $path = null) |
| 24 | 24 | { |
| 25 | - if (null === $path) |
|
| 26 | - return $this->data; |
|
| 25 | + if (null === $path) { |
|
| 26 | + return $this->data; |
|
| 27 | + } |
|
| 27 | 28 | $keys = explode('.', $path); |
| 28 | 29 | $value = $this->data; |
| 29 | 30 | foreach ($keys as $key) { |
| 30 | - if (!is_array($value) || !array_key_exists($key, $value)) |
|
| 31 | - throw new \Exception("Unable to find a configuration value with path '{$path}'"); |
|
| 31 | + if (!is_array($value) || !array_key_exists($key, $value)) { |
|
| 32 | + throw new \Exception("Unable to find a configuration value with path '{$path}'"); |
|
| 33 | + } |
|
| 32 | 34 | $value = $value[$key]; |
| 33 | 35 | } |
| 34 | 36 | return $value; |
@@ -35,11 +35,11 @@ |
||
| 35 | 35 | } |
| 36 | 36 | |
| 37 | 37 | protected function decode(string $path) : array { |
| 38 | - if (! $this->fs->isFile($path)) |
|
| 38 | + if (!$this->fs->isFile($path)) |
|
| 39 | 39 | return []; |
| 40 | 40 | $file = $this->fs->file($path); |
| 41 | 41 | $ext = $file->extension(); |
| 42 | - if (! array_key_exists($ext, static::$decoders)) |
|
| 42 | + if (!array_key_exists($ext, static::$decoders)) |
|
| 43 | 43 | throw new \Exception("Unknown configuration file extension '{$ext}'"); |
| 44 | 44 | $decoderClass = static::$decoders[$ext]; |
| 45 | 45 | $decoder = new $decoderClass; |
@@ -24,8 +24,9 @@ discard block |
||
| 24 | 24 | |
| 25 | 25 | public function load(array $paths) : ConfigInterface |
| 26 | 26 | { |
| 27 | - if (empty($paths)) |
|
| 28 | - return new Config([]); |
|
| 27 | + if (empty($paths)) { |
|
| 28 | + return new Config([]); |
|
| 29 | + } |
|
| 29 | 30 | $data = []; |
| 30 | 31 | foreach ($paths as $path) { |
| 31 | 32 | $data[] = $this->decode($path); |
@@ -35,12 +36,14 @@ discard block |
||
| 35 | 36 | } |
| 36 | 37 | |
| 37 | 38 | protected function decode(string $path) : array { |
| 38 | - if (! $this->fs->isFile($path)) |
|
| 39 | - return []; |
|
| 39 | + if (! $this->fs->isFile($path)) { |
|
| 40 | + return []; |
|
| 41 | + } |
|
| 40 | 42 | $file = $this->fs->file($path); |
| 41 | 43 | $ext = $file->extension(); |
| 42 | - if (! array_key_exists($ext, static::$decoders)) |
|
| 43 | - throw new \Exception("Unknown configuration file extension '{$ext}'"); |
|
| 44 | + if (! array_key_exists($ext, static::$decoders)) { |
|
| 45 | + throw new \Exception("Unknown configuration file extension '{$ext}'"); |
|
| 46 | + } |
|
| 44 | 47 | $decoderClass = static::$decoders[$ext]; |
| 45 | 48 | $decoder = new $decoderClass; |
| 46 | 49 | return $decoder->decode($file->content()); |