mmucklo /
DtcQueueBundle
| 1 | <?php |
||
| 2 | |||
| 3 | namespace Dtc\QueueBundle\DependencyInjection; |
||
| 4 | |||
| 5 | use Symfony\Component\Config\Definition\Builder\TreeBuilder; |
||
|
0 ignored issues
–
show
|
|||
| 6 | |||
| 7 | trait RedisConfiguration |
||
| 8 | { |
||
| 9 | 10 | protected function addPredis() |
|
| 10 | { |
||
| 11 | 10 | $treeBuilder = new TreeBuilder('predis'); |
|
| 12 | |||
| 13 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
| 14 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
| 15 | } else { |
||
| 16 | // BC layer for symfony/config 4.1 and older |
||
| 17 | $rootNode = $treeBuilder->root('predis'); |
||
| 18 | } |
||
| 19 | |||
| 20 | $rootNode |
||
| 21 | 10 | ->children() |
|
| 22 | 10 | ->scalarNode('dsn')->defaultNull()->end() |
|
| 23 | 10 | ->append($this->addPredisArgs()) |
|
| 24 | 10 | ->end() |
|
| 25 | 10 | ->validate()->ifTrue(function ($node) { |
|
| 26 | 1 | if (isset($node['dsn']) && (isset($node['connection_parameters']['host']) || isset($node['connection_parameters']['port']))) { |
|
| 27 | return true; |
||
| 28 | } |
||
| 29 | |||
| 30 | 1 | return false; |
|
| 31 | 10 | })->thenInvalid('if dsn is set, do not use connection_parameters for predis (and vice-versa)')->end(); |
|
| 32 | |||
| 33 | 10 | return $rootNode; |
|
| 34 | } |
||
| 35 | |||
| 36 | 4 | protected function checkPredis(array $node) |
|
| 37 | { |
||
| 38 | 4 | if ((isset($node['predis']['dsn']) || isset($node['predis']['connection_parameters']['host'])) && |
|
| 39 | 4 | (isset($node['snc_redis']['type']) || isset($node['phpredis']['host']))) { |
|
| 40 | return true; |
||
| 41 | } |
||
| 42 | |||
| 43 | 4 | return false; |
|
| 44 | } |
||
| 45 | |||
| 46 | 4 | protected function checkSncPhpRedis(array $node) |
|
| 47 | { |
||
| 48 | 4 | if (isset($node['snc_redis']['type']) && |
|
| 49 | 4 | isset($node['phpredis']['host'])) { |
|
| 50 | return true; |
||
| 51 | } |
||
| 52 | |||
| 53 | 4 | return false; |
|
| 54 | } |
||
| 55 | |||
| 56 | 10 | protected function addRedis() |
|
| 57 | { |
||
| 58 | 10 | $treeBuilder = new TreeBuilder('redis'); |
|
| 59 | |||
| 60 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
| 61 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
| 62 | } else { |
||
| 63 | // BC layer for symfony/config 4.1 and older |
||
| 64 | $rootNode = $treeBuilder->root('redis'); |
||
| 65 | } |
||
| 66 | |||
| 67 | $rootNode |
||
| 68 | 10 | ->addDefaultsIfNotSet() |
|
| 69 | 10 | ->children() |
|
| 70 | 10 | ->scalarNode('prefix')->defaultValue('dtc_queue_')->end() |
|
| 71 | 10 | ->append($this->addSncRedis()) |
|
| 72 | 10 | ->append($this->addPredis()) |
|
| 73 | 10 | ->append($this->addPhpRedisArgs()) |
|
| 74 | 10 | ->end() |
|
| 75 | 10 | ->validate()->ifTrue(function ($node) { |
|
| 76 | 4 | if ($this->checkPredis($node)) { |
|
| 77 | return true; |
||
| 78 | } |
||
| 79 | 4 | if ($this->checkSncPhpRedis($node)) { |
|
| 80 | return true; |
||
| 81 | } |
||
| 82 | |||
| 83 | 4 | return false; |
|
| 84 | 10 | })->thenInvalid('only one of [snc_redis | predis | phpredis] should be set')->end(); |
|
| 85 | |||
| 86 | 10 | return $rootNode; |
|
| 87 | } |
||
| 88 | |||
| 89 | 10 | protected function addPhpRedisArgs() |
|
| 90 | { |
||
| 91 | 10 | $treeBuilder = new TreeBuilder('phpredis'); |
|
| 92 | |||
| 93 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
| 94 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
| 95 | } else { |
||
| 96 | // BC layer for symfony/config 4.1 and older |
||
| 97 | $rootNode = $treeBuilder->root('phpredis'); |
||
| 98 | } |
||
| 99 | |||
| 100 | $rootNode |
||
| 101 | 10 | ->addDefaultsIfNotSet() |
|
| 102 | 10 | ->children() |
|
| 103 | 10 | ->scalarNode('host')->end() |
|
| 104 | 10 | ->integerNode('port')->defaultValue(6379)->end() |
|
| 105 | 10 | ->floatNode('timeout')->defaultValue(0)->end() |
|
| 106 | 10 | ->integerNode('retry_interval')->defaultNull()->end() |
|
| 107 | 10 | ->floatNode('read_timeout')->defaultValue(0)->end() |
|
| 108 | 10 | ->scalarNode('auth')->end() |
|
| 109 | 10 | ->end() |
|
| 110 | 10 | ->validate()->ifTrue(function ($node) { |
|
| 111 | 2 | if (!empty($node) && !isset($node['host'])) { |
|
| 112 | return true; |
||
| 113 | } |
||
| 114 | |||
| 115 | 2 | return false; |
|
| 116 | 10 | })->thenInvalid('phpredis host should be set')->end(); |
|
| 117 | |||
| 118 | 10 | return $rootNode; |
|
| 119 | } |
||
| 120 | |||
| 121 | 10 | protected function addPredisArgs() |
|
| 122 | { |
||
| 123 | 10 | $treeBuilder = new TreeBuilder('connection_parameters'); |
|
| 124 | |||
| 125 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
| 126 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
| 127 | } else { |
||
| 128 | // BC layer for symfony/config 4.1 and older |
||
| 129 | $rootNode = $treeBuilder->root('connection_parameters'); |
||
| 130 | } |
||
| 131 | |||
| 132 | $rootNode |
||
| 133 | 10 | ->addDefaultsIfNotSet() |
|
| 134 | 10 | ->children() |
|
| 135 | 10 | ->scalarNode('scheme')->defaultValue('tcp')->end() |
|
| 136 | 10 | ->scalarNode('host')->defaultNull()->end() |
|
| 137 | 10 | ->integerNode('port')->defaultNull()->end() |
|
| 138 | 10 | ->scalarNode('path')->defaultNull()->end() |
|
| 139 | 10 | ->scalarNode('database')->defaultNull()->end() |
|
| 140 | 10 | ->scalarNode('password')->defaultNull()->end() |
|
| 141 | 10 | ->booleanNode('async')->defaultFalse()->end() |
|
| 142 | 10 | ->booleanNode('persistent')->defaultFalse()->end() |
|
| 143 | 10 | ->floatNode('timeout')->defaultValue(5.0)->end() |
|
| 144 | 10 | ->floatNode('read_write_timeout')->defaultNull()->end() |
|
| 145 | 10 | ->scalarNode('alias')->defaultNull()->end() |
|
| 146 | 10 | ->integerNode('weight')->defaultNull()->end() |
|
| 147 | 10 | ->booleanNode('iterable_multibulk')->defaultFalse()->end() |
|
| 148 | 10 | ->booleanNode('throw_errors')->defaultTrue()->end() |
|
| 149 | 10 | ->end() |
|
| 150 | 10 | ->validate()->ifTrue(function ($node) { |
|
| 151 | 1 | if (isset($node['host']) && !isset($node['port'])) { |
|
| 152 | return true; |
||
| 153 | } |
||
| 154 | 1 | if (isset($node['port']) && !isset($node['host'])) { |
|
| 155 | return true; |
||
| 156 | } |
||
| 157 | |||
| 158 | 1 | return false; |
|
| 159 | 10 | })->thenInvalid('predis connection_parameters host and port should both be set')->end(); |
|
| 160 | |||
| 161 | 10 | return $rootNode; |
|
| 162 | } |
||
| 163 | |||
| 164 | 10 | protected function addSncRedis() |
|
| 165 | { |
||
| 166 | 10 | $treeBuilder = new TreeBuilder('snc_redis'); |
|
| 167 | |||
| 168 | 10 | if (method_exists($treeBuilder, 'getRootNode')) { |
|
| 169 | 10 | $rootNode = $treeBuilder->getRootNode(); |
|
| 170 | } else { |
||
| 171 | // BC layer for symfony/config 4.1 and older |
||
| 172 | $rootNode = $treeBuilder->root('snc_redis'); |
||
| 173 | } |
||
| 174 | |||
| 175 | $rootNode |
||
| 176 | 10 | ->children() |
|
| 177 | 10 | ->enumNode('type') |
|
| 178 | 10 | ->values(['predis', 'phpredis']) |
|
| 179 | 10 | ->defaultNull()->end() |
|
| 180 | 10 | ->scalarNode('alias') |
|
| 181 | 10 | ->defaultNull()->end() |
|
| 182 | 10 | ->end() |
|
| 183 | 10 | ->validate()->ifTrue(function ($node) { |
|
| 184 | 1 | if (isset($node['type']) && !isset($node['alias'])) { |
|
| 185 | 1 | return true; |
|
| 186 | } |
||
| 187 | 1 | if (isset($node['alias']) && !isset($node['type'])) { |
|
| 188 | 1 | return true; |
|
| 189 | } |
||
| 190 | |||
| 191 | 1 | return false; |
|
| 192 | 10 | })->thenInvalid('if alias or type is set, then both must be set')->end(); |
|
| 193 | |||
| 194 | 10 | return $rootNode; |
|
| 195 | } |
||
| 196 | } |
||
| 197 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths