Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | n/a |
0 / 0 |
n/a |
0 / 0 |
CRAP | n/a |
0 / 0 |
|||
| Config | n/a |
0 / 0 |
n/a |
0 / 0 |
16 | n/a |
0 / 0 |
|||
| cli | n/a |
0 / 0 |
n/a |
0 / 0 |
9 | |||||
| testType | n/a |
0 / 0 |
n/a |
0 / 0 |
2 | |||||
| testKey | n/a |
0 / 0 |
n/a |
0 / 0 |
2 | |||||
| printType | n/a |
0 / 0 |
n/a |
0 / 0 |
2 | |||||
| printValue | n/a |
0 / 0 |
n/a |
0 / 0 |
1 | |||||
| 1 | <?php |
| 2 | |
| 3 | namespace BO\Zmsapi\Cli; |
| 4 | |
| 5 | use Ulrichsg\Getopt\Getopt; |
| 6 | use Ulrichsg\Getopt\Option; |
| 7 | |
| 8 | /** |
| 9 | * @codeCoverageIgnore |
| 10 | * |
| 11 | */ |
| 12 | class Config extends Base |
| 13 | { |
| 14 | /** |
| 15 | * @SuppressWarnings(Parameter) |
| 16 | * |
| 17 | */ |
| 18 | public function cli(array $argv, \League\CLImate\CLImate $climate) |
| 19 | { |
| 20 | $config = (new \BO\Zmsdb\Config())->readEntity(); |
| 21 | if (count($argv) >= 3) { |
| 22 | $type = $argv[2]; |
| 23 | $this->testType($config, $type); |
| 24 | } |
| 25 | if (count($argv) >= 4) { |
| 26 | $key = $argv[3]; |
| 27 | $this->testKey($config, $type, $key); |
| 28 | } |
| 29 | if (count($argv) == 2) { |
| 30 | $climate->green("#CONFIGURATION:"); |
| 31 | $climate->green("\tUsage: config [type] [key] [newvalue]"); |
| 32 | $config->ksort(); |
| 33 | array_walk($config, function ($subconfig, $type) use ($climate) { |
| 34 | $this->printType($climate, $type, $subconfig); |
| 35 | }); |
| 36 | } elseif (count($argv) == 3) { |
| 37 | $subconfig = $config[$type]; |
| 38 | $this->printType($climate, $type, $subconfig); |
| 39 | } elseif (count($argv) == 4) { |
| 40 | $climate->out($config[$type][$key]); |
| 41 | } elseif (count($argv) == 5) { |
| 42 | $value = $argv[4]; |
| 43 | $climate->yellow("Old value:"); |
| 44 | $this->printValue($climate, $key, $config[$type][$key]); |
| 45 | $config->setPreference($type, $key, $value); |
| 46 | $climate->green("New value:"); |
| 47 | $this->printValue($climate, $key, $config[$type][$key]); |
| 48 | if ((new \BO\Zmsdb\Config())->updateEntity($config)) { |
| 49 | $climate->green("Database entry changed"); |
| 50 | } |
| 51 | } elseif (count($argv) > 5) { |
| 52 | throw new \Exception("Too much parameters"); |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | protected function testType($config, $type) |
| 57 | { |
| 58 | if (!$config->hasType($type)) { |
| 59 | throw new \Exception("Could not find type of '$type'"); |
| 60 | } |
| 61 | } |
| 62 | |
| 63 | protected function testKey($config, $type, $key) |
| 64 | { |
| 65 | if (!$config->hasPreference($type, $key)) { |
| 66 | throw new \Exception("Could not find preference of '$type.$key'"); |
| 67 | } |
| 68 | } |
| 69 | |
| 70 | protected function printType(\League\CLImate\CLImate $climate, $type, $subconfig) |
| 71 | { |
| 72 | $climate->blue("[$type]"); |
| 73 | if (is_array($subconfig)) { |
| 74 | ksort($subconfig); |
| 75 | array_walk($subconfig, function ($value, $key) use ($climate) { |
| 76 | $this->printValue($climate, $key, $value); |
| 77 | }); |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | protected function printValue(\League\CLImate\CLImate $climate, $key, $value) |
| 82 | { |
| 83 | $padding = $climate->padding(25)->char(' '); |
| 84 | $padding->label("\"$key\"")->result("= \"" . (string)$value . '"'); |
| 85 | } |
| 86 | } |