1 | <?php |
||
2 | |||
3 | namespace SSpkS; |
||
4 | |||
5 | use \Symfony\Component\Yaml\Yaml; |
||
0 ignored issues
–
show
|
|||
6 | use \Symfony\Component\Yaml\Exception\ParseException; |
||
0 ignored issues
–
show
The type
\Symfony\Component\Yaml\Exception\ParseException was not found. Maybe you did not declare it correctly or list all dependencies?
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. filter:
dependency_paths: ["lib/*"]
For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths ![]() |
|||
7 | |||
8 | /** |
||
9 | * Configuration class |
||
10 | * |
||
11 | * @property array $site Site properties |
||
12 | * @property array $paths Different paths |
||
13 | * @property array excludedSynoServices Synology services to exclude from package list |
||
14 | * @property array packages Defaults for packages |
||
15 | * @property string basePath Path to site root (where index.php is located) |
||
16 | * @property string baseUrl URL to site root (where index.php is located) |
||
17 | * @property string baseUrlRelative Relative URL to site root (without scheme or hostname) |
||
18 | * @property string SSPKS_COMMIT current commit hash taken from ENV variables |
||
19 | * @property string SSPKS_BRANCH current branch taken from ENV variables |
||
20 | */ |
||
21 | class Config implements \Iterator |
||
22 | { |
||
23 | private $iterPos; |
||
24 | private $basePath; |
||
25 | private $cfgFile; |
||
26 | private $config; |
||
27 | |||
28 | 30 | public function __construct($basePath, $cfgFile = 'conf/sspks.yaml') |
|
29 | { |
||
30 | 30 | $this->iterPos = 0; |
|
31 | 30 | $this->basePath = $basePath; |
|
32 | 30 | $this->cfgFile = $this->basePath . DIRECTORY_SEPARATOR . $cfgFile; |
|
33 | |||
34 | 30 | if (!file_exists($this->cfgFile)) { |
|
35 | 1 | throw new \Exception('Config file "' . $this->cfgFile . '" not found!'); |
|
36 | } |
||
37 | |||
38 | try { |
||
39 | /** @var array $config */ |
||
40 | 29 | $config = Yaml::parse(file_get_contents($this->cfgFile)); |
|
41 | 1 | } catch (ParseException $e) { |
|
42 | 1 | throw new \Exception($e->getMessage()); |
|
43 | } |
||
44 | |||
45 | /** Init variables that are not actual config variables */ |
||
46 | 28 | $config['SSPKS_COMMIT'] = ''; |
|
47 | 28 | $config['SSPKS_BRANCH'] = ''; |
|
48 | |||
49 | /** Override config values with environment variables if present */ |
||
50 | 28 | if ($this->envVarIsNotEmpty('SSPKS_COMMIT')) { |
|
51 | $config['SSPKS_COMMIT'] = $_ENV['SSPKS_COMMIT']; |
||
52 | } |
||
53 | |||
54 | 28 | if ($this->envVarIsNotEmpty('SSPKS_BRANCH')) { |
|
55 | $config['SSPKS_BRANCH'] = $_ENV['SSPKS_BRANCH']; |
||
56 | } |
||
57 | |||
58 | 28 | if ($this->envVarIsNotEmpty('SSPKS_SITE_NAME')) { |
|
59 | $config['site']['name'] = $_ENV['SSPKS_SITE_NAME']; |
||
60 | } |
||
61 | |||
62 | 28 | if ($this->envVarIsNotEmpty('SSPKS_SITE_THEME')) { |
|
63 | $config['site']['theme'] = $_ENV['SSPKS_SITE_THEME']; |
||
64 | } |
||
65 | |||
66 | 28 | if ($this->envVarIsNotEmpty('SSPKS_SITE_REDIRECTINDEX')) { |
|
67 | $config['site']['redirectindex'] = $_ENV['SSPKS_SITE_REDIRECTINDEX']; |
||
68 | } |
||
69 | |||
70 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_FILE_MASK')) { |
|
71 | $config['packages']['file_mask'] = $_ENV['SSPKS_PACKAGES_FILE_MASK']; |
||
72 | } |
||
73 | |||
74 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_MAINTAINER')) { |
|
75 | $config['packages']['maintainer'] = $_ENV['SSPKS_PACKAGES_MAINTAINER']; |
||
76 | } |
||
77 | |||
78 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_MAINTAINER_URL')) { |
|
79 | $config['packages']['maintainer_url'] = $_ENV['SSPKS_PACKAGES_MAINTAINER_URL']; |
||
80 | } |
||
81 | |||
82 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_DISTRIBUTOR')) { |
|
83 | $config['packages']['distributor'] = $_ENV['SSPKS_PACKAGES_DISTRIBUTOR']; |
||
84 | } |
||
85 | |||
86 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_DISTRIBUTOR_URL')) { |
|
87 | $config['packages']['distributor_url'] = $_ENV['SSPKS_PACKAGES_DISTRIBUTOR_URL']; |
||
88 | } |
||
89 | |||
90 | 28 | if ($this->envVarIsNotEmpty('SSPKS_PACKAGES_SUPPORT_URL')) { |
|
91 | $config['packages']['support_url'] = $_ENV['SSPKS_PACKAGES_SUPPORT_URL']; |
||
92 | } |
||
93 | |||
94 | 28 | $this->config = $config; |
|
95 | 28 | $this->config['basePath'] = $this->basePath; |
|
96 | 28 | } |
|
97 | |||
98 | /** |
||
99 | * Checks wether an env variable exists and is not an empty string. |
||
100 | * |
||
101 | * @param string $name Name of requested environment variable. |
||
102 | * @return boolean value. |
||
103 | */ |
||
104 | 28 | public function envVarIsNotEmpty($name) |
|
105 | { |
||
106 | 28 | return (array_key_exists($name, $_ENV) && $_ENV[$name]); |
|
107 | } |
||
108 | |||
109 | /** |
||
110 | * Getter magic method. |
||
111 | * |
||
112 | * @param string $name Name of requested value. |
||
113 | * @return mixed Requested value. |
||
114 | */ |
||
115 | 27 | public function __get($name) |
|
116 | { |
||
117 | 27 | return $this->config[$name]; |
|
118 | } |
||
119 | |||
120 | /** |
||
121 | * Setter magic method. |
||
122 | * |
||
123 | * @param string $name Name of variable to set. |
||
124 | * @param mixed $value Value to set. |
||
125 | */ |
||
126 | 27 | public function __set($name, $value) |
|
127 | { |
||
128 | 27 | $this->config[$name] = $value; |
|
129 | 27 | } |
|
130 | |||
131 | /** |
||
132 | * Isset feature magic method. |
||
133 | * |
||
134 | * @param string $name Name of requested value. |
||
135 | * @return bool TRUE if value exists, FALSE otherwise. |
||
136 | */ |
||
137 | 1 | public function __isset($name) |
|
138 | { |
||
139 | 1 | return isset($this->config[$name]); |
|
140 | } |
||
141 | |||
142 | /** |
||
143 | * Unset feature magic method. |
||
144 | * |
||
145 | * @param string $name Name of value to unset. |
||
146 | */ |
||
147 | 1 | public function __unset($name) |
|
148 | { |
||
149 | 1 | unset($this->config[$name]); |
|
150 | 1 | } |
|
151 | |||
152 | 1 | public function rewind() |
|
153 | { |
||
154 | 1 | $this->iterPos = 0; |
|
155 | 1 | } |
|
156 | |||
157 | 1 | public function current() |
|
158 | { |
||
159 | 1 | return $this->config[array_keys($this->config)[$this->iterPos]]; |
|
160 | } |
||
161 | |||
162 | 1 | public function key() |
|
163 | { |
||
164 | 1 | return array_keys($this->config)[$this->iterPos]; |
|
165 | } |
||
166 | |||
167 | 1 | public function next() |
|
168 | { |
||
169 | 1 | $this->iterPos++; |
|
170 | 1 | } |
|
171 | |||
172 | 1 | public function valid() |
|
173 | { |
||
174 | 1 | return isset(array_keys($this->config)[$this->iterPos]); |
|
175 | } |
||
176 | } |
||
177 |
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