setup-php 2.31.1 → 2.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +105 -100
  2. package/lib/config.js +17 -7
  3. package/lib/config.js.map +1 -1
  4. package/lib/coverage.js +17 -7
  5. package/lib/coverage.js.map +1 -1
  6. package/lib/extensions.js +31 -21
  7. package/lib/extensions.js.map +1 -1
  8. package/lib/fetch.js +17 -7
  9. package/lib/fetch.js.map +1 -1
  10. package/lib/install.js +17 -7
  11. package/lib/install.js.map +1 -1
  12. package/lib/packagist.js +17 -7
  13. package/lib/packagist.js.map +1 -1
  14. package/lib/tools.js +20 -7
  15. package/lib/tools.js.map +1 -1
  16. package/lib/utils.js +23 -10
  17. package/lib/utils.js.map +1 -1
  18. package/package.json +21 -18
  19. package/src/configs/mod_priority +1 -1
  20. package/src/configs/php-versions.json +4 -4
  21. package/src/configs/tools.json +7 -2
  22. package/src/extensions.ts +31 -31
  23. package/src/scripts/darwin.sh +10 -8
  24. package/src/scripts/extensions/add_extensions.ps1 +4 -0
  25. package/src/scripts/extensions/couchbase.sh +1 -1
  26. package/src/scripts/extensions/firebird.sh +1 -0
  27. package/src/scripts/extensions/intl.sh +6 -3
  28. package/src/scripts/extensions/oci.ps1 +10 -14
  29. package/src/scripts/extensions/oci.sh +14 -6
  30. package/src/scripts/extensions/patches/common.sh +2 -2
  31. package/src/scripts/extensions/phalcon.ps1 +2 -2
  32. package/src/scripts/extensions/phalcon.sh +1 -1
  33. package/src/scripts/extensions/relay.sh +9 -0
  34. package/src/scripts/extensions/source.sh +1 -1
  35. package/src/scripts/extensions/zephir_parser.ps1 +9 -2
  36. package/src/scripts/extensions/zephir_parser.sh +7 -3
  37. package/src/scripts/linux.sh +6 -5
  38. package/src/scripts/tools/add_tools.sh +0 -1
  39. package/src/scripts/tools/brew.sh +0 -1
  40. package/src/scripts/tools/grpc_php_plugin.ps1 +7 -1
  41. package/src/scripts/tools/ppa.sh +14 -11
  42. package/src/scripts/tools/protoc.sh +3 -1
  43. package/src/scripts/unix.sh +58 -1
  44. package/src/scripts/win32.ps1 +11 -2
  45. package/src/tools.ts +3 -0
  46. package/src/utils.ts +8 -3
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
11
11
  <a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://img.shields.io/codecov/c/github/shivammathur/setup-php?logo=codecov"></a>
12
12
  <a href="https://github.com/shivammathur/setup-php/blob/main/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg?logo=open%20source%20initiative&logoColor=white&labelColor=555555"></a>
13
- <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.4-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
13
+ <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.5-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
14
14
  </p>
15
15
  <p align="center">
16
16
  <a href="https://reddit.com/r/setup_php" title="setup-php reddit"><img alt="setup-php reddit" src="https://img.shields.io/badge/reddit-join-FF5700?logo=reddit&logoColor=FF5700&labelColor=555555"></a>
@@ -68,16 +68,18 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
68
68
 
69
69
  ### GitHub-Hosted Runners
70
70
 
71
- | Virtual environment | YAML workflow label | Pre-installed PHP |
72
- |---------------------|------------------------------------|------------------------|
73
- | Ubuntu 24.04 | `ubuntu-24.04` | `PHP 8.3` |
74
- | Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | `PHP 8.1` |
75
- | Ubuntu 20.04 | `ubuntu-20.04` | `PHP 7.4` to `PHP 8.3` |
76
- | Windows Server 2022 | `windows-latest` or `windows-2022` | `PHP 8.3` |
77
- | Windows Server 2019 | `windows-2019` | `PHP 8.3` |
78
- | macOS Sonoma 14.x | `macos-14` | - |
79
- | macOS Ventura 13.x | `macos-13` | `PHP 8.3` |
80
- | macOS Monterey 12.x | `macos-latest` or `macos-12` | `PHP 8.3` |
71
+ | Virtual environment | Arch | YAML workflow label | Pre-installed PHP |
72
+ |---------------------|---------|------------------------------------|------------------------|
73
+ | Ubuntu 24.04 | x86_64 | `ubuntu-latest` or `ubuntu-24.04` | `PHP 8.3` |
74
+ | Ubuntu 22.04 | x86_64 | `ubuntu-22.04` | `PHP 8.1` |
75
+ | Ubuntu 24.04 | aarch64 | `ubuntu-24.04-arm` | `PHP 8.3` |
76
+ | Ubuntu 22.04 | aarch64 | `ubuntu-22.04-arm` | `PHP 8.1` |
77
+ | Windows Server 2025 | x64 | `windows-2025` | `PHP 8.3` |
78
+ | Windows Server 2022 | x64 | `windows-latest` or `windows-2022` | `PHP 8.3` |
79
+ | Windows Server 2019 | x64 | `windows-2019` | `PHP 8.3` |
80
+ | macOS Sequoia 15.x | arm64 | `macos-15` | - |
81
+ | macOS Sonoma 14.x | arm64 | `macos-latest` or `macos-14` | - |
82
+ | macOS Ventura 13.x | x86_64 | `macos-13` | `PHP 8.3` |
81
83
 
82
84
  ### Self-Hosted Runners
83
85
 
@@ -85,14 +87,13 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
85
87
  |----------------------------------|----------------------------|
86
88
  | Ubuntu 24.04 | `self-hosted` or `Linux` |
87
89
  | Ubuntu 22.04 | `self-hosted` or `Linux` |
88
- | Ubuntu 20.04 | `self-hosted` or `Linux` |
90
+ | Debian 12 | `self-hosted` or `Linux` |
89
91
  | Debian 11 | `self-hosted` or `Linux` |
90
- | Debian 10 | `self-hosted` or `Linux` |
91
92
  | Windows 7 and newer | `self-hosted` or `Windows` |
92
93
  | Windows Server 2012 R2 and newer | `self-hosted` or `Windows` |
94
+ | macOS Sequoia 15.x x86_64/arm64 | `self-hosted` or `macOS` |
93
95
  | macOS Sonoma 14.x x86_64/arm64 | `self-hosted` or `macOS` |
94
96
  | macOS Ventura 13.x x86_64/arm64 | `self-hosted` or `macOS` |
95
- | macOS Monterey 12.x x86_64/arm64 | `self-hosted` or `macOS` |
96
97
 
97
98
  - Refer to the [self-hosted setup](#self-hosted-setup) to use the action on self-hosted runners.
98
99
  - Operating systems based on the above Ubuntu and Debian versions are also supported on best effort basis.
@@ -102,9 +103,9 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
102
103
 
103
104
  On all supported OS/Platforms the following PHP versions can be set up as per the runner.
104
105
 
105
- - PHP 5.3 to PHP 8.4 on GitHub-hosted runners, except for macOS ARM64 runners (macos-14).
106
- - PHP 5.6 to PHP 8.4 on GitHub-hosted macOS ARM64 runners (macos-14).
107
- - PHP 5.6 to PHP 8.4 on self-hosted runners.
106
+ - PHP 5.3 to PHP 8.5 on GitHub-hosted runners, except for macOS ARM64 runners (macos-14).
107
+ - PHP 5.6 to PHP 8.5 on GitHub-hosted macOS ARM64 runners (macos-14).
108
+ - PHP 5.6 to PHP 8.5 on self-hosted runners.
108
109
 
109
110
  | PHP Version | Stability | Release Support | Runner Support |
110
111
  |-------------|-----------|-----------------------|--------------------------------|
@@ -119,13 +120,15 @@ On all supported OS/Platforms the following PHP versions can be set up as per th
119
120
  | `7.4` | `Stable` | `End of life` | `GitHub-hosted`, `self-hosted` |
120
121
  | `8.0` | `Stable` | `End of life` | `GitHub-hosted`, `self-hosted` |
121
122
  | `8.1` | `Stable` | `Security fixes only` | `GitHub-hosted`, `self-hosted` |
122
- | `8.2` | `Stable` | `Active` | `GitHub-hosted`, `self-hosted` |
123
+ | `8.2` | `Stable` | `Security fixes only` | `GitHub-hosted`, `self-hosted` |
123
124
  | `8.3` | `Stable` | `Active` | `GitHub-hosted`, `self-hosted` |
124
- | `8.4` | `Nightly` | `In development` | `GitHub-hosted`, `self-hosted` |
125
+ | `8.4` | `Stable` | `Active` | `GitHub-hosted`, `self-hosted` |
126
+ | `8.5` | `Nightly` | `In development` | `GitHub-hosted`, `self-hosted` |
125
127
 
126
- **Notes:**
127
- - Specifying `8.4` in `php-version` input installs a nightly build of `PHP 8.4.0-dev`. See [nightly build setup](#nightly-build-setup) for more information.
128
- - To use JIT on `PHP 8.0` and above, refer to the [JIT configuration](#jit-configuration) section.
128
+
129
+ > [!Note]
130
+ > - Specifying `8.5` in `php-version` input installs a nightly build of `PHP 8.5.0-dev`. See [nightly build setup](#nightly-build-setup) for more information.
131
+ > - To use JIT on `PHP 8.0` and above, refer to the [JIT configuration](#jit-configuration) section.
129
132
 
130
133
  ## :heavy_plus_sign: PHP Extension Support
131
134
 
@@ -137,7 +140,7 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
137
140
  - name: Setup PHP with PECL extension
138
141
  uses: shivammathur/setup-php@v2
139
142
  with:
140
- php-version: '8.3'
143
+ php-version: '8.4'
141
144
  extensions: imagick, swoole
142
145
  ```
143
146
 
@@ -165,7 +168,7 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
165
168
  - name: Setup PHP with pre-release PECL extension
166
169
  uses: shivammathur/setup-php@v2
167
170
  with:
168
- php-version: '8.3'
171
+ php-version: '8.4'
169
172
  extensions: xdebug-beta
170
173
  ```
171
174
 
@@ -177,19 +180,19 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
177
180
  - name: Setup PHP and disable opcache
178
181
  uses: shivammathur/setup-php@v2
179
182
  with:
180
- php-version: '8.3'
183
+ php-version: '8.4'
181
184
  extensions: :opcache
182
185
  ```
183
186
 
184
187
  - All shared extensions can be disabled by specifying `none`. When `none` is specified along with other extensions, it is hoisted to the start of the input. So, all the shared extensions will be disabled first, then rest of the extensions in the input will be processed.
185
188
 
186
- **Note:** This disables all core and third-party shared extensions and thus, can break some tools which need them. Required extensions are enabled again when the tools are set up on a best-effort basis. So it is recommended to add the extensions required for your tools after `none` in the `extensions` input to avoid any issues.
189
+ This disables all core and third-party shared extensions and thus, can break some tools which need them. Required extensions are enabled again when the tools are set up on a best-effort basis. So it is recommended to add the extensions required for your tools after `none` in the `extensions` input to avoid any issues.
187
190
 
188
191
  ```yaml
189
192
  - name: Setup PHP without any shared extensions except mbstring
190
193
  uses: shivammathur/setup-php@v2
191
194
  with:
192
- php-version: '8.3'
195
+ php-version: '8.4'
193
196
  extensions: none, mbstring
194
197
  ```
195
198
 
@@ -199,7 +202,7 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
199
202
  - name: Setup PHP with intl
200
203
  uses: shivammathur/setup-php@v2
201
204
  with:
202
- php-version: '8.3'
205
+ php-version: '8.4'
203
206
  extensions: intl-70.1
204
207
  ```
205
208
 
@@ -216,7 +219,7 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
216
219
  - name: Setup PHP with fail-fast
217
220
  uses: shivammathur/setup-php@v2
218
221
  with:
219
- php-version: '8.3'
222
+ php-version: '8.4'
220
223
  extensions: oci8
221
224
  env:
222
225
  fail-fast: true
@@ -226,13 +229,13 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
226
229
 
227
230
  These tools can be set up globally using the `tools` input. It accepts a string in csv-format.
228
231
 
229
- [`behat`], [`blackfire`], [`blackfire-player`], [`box`], [`castor`], [`churn`], [`codeception`], [`composer`], [`composer-normalize`], [`composer-prefetcher`], [`composer-require-checker`], [`composer-unused`], [`cs2pr`], [`deployer`], [`ecs`], [`flex`], [`grpc_php_plugin`], [`infection`], [`parallel-lint`], [`pecl`], [`phan`], [`phing`], [`phinx`], [`phive`], [`php-config`], [`php-cs-fixer`], [`php-scoper`], [`phpcbf`], [`phpcpd`], [`phpcs`], [`phpdoc`] or [`phpDocumentor`], [`phpize`], [`phplint`], [`phpmd`], [`phpspec`], [`phpstan`], [`phpunit`], [`phpunit-bridge`], [`phpunit-polyfills`], [`pint`], [`prestissimo`], [`protoc`], [`psalm`], [`rector`], [`symfony`] or [`symfony-cli`], [`vapor`] or [`vapor-cli`], [`wp`] or [`wp-cli`]
232
+ [`behat`], [`blackfire`], [`blackfire-player`], [`box`], [`castor`], [`churn`], [`codeception`], [`composer`], [`composer-dependency-analyser`], [`composer-normalize`], [`composer-prefetcher`], [`composer-require-checker`], [`composer-unused`], [`cs2pr`], [`deployer`], [`ecs`], [`flex`], [`grpc_php_plugin`], [`infection`], [`parallel-lint`], [`pecl`], [`phan`], [`phing`], [`phinx`], [`phive`], [`php-config`], [`php-cs-fixer`], [`php-scoper`], [`phpcbf`], [`phpcpd`], [`phpcs`], [`phpdoc`] or [`phpDocumentor`], [`phpize`], [`phplint`], [`phpmd`], [`phpspec`], [`phpstan`], [`phpunit`], [`phpunit-bridge`], [`phpunit-polyfills`], [`pint`], [`prestissimo`], [`protoc`], [`psalm`], [`rector`], [`symfony`] or [`symfony-cli`], [`vapor`] or [`vapor-cli`], [`wp`] or [`wp-cli`]
230
233
 
231
234
  ```yaml
232
235
  - name: Setup PHP with tools
233
236
  uses: shivammathur/setup-php@v2
234
237
  with:
235
- php-version: '8.3'
238
+ php-version: '8.4'
236
239
  tools: php-cs-fixer, phpunit
237
240
  ```
238
241
 
@@ -242,18 +245,18 @@ These tools can be set up globally using the `tools` input. It accepts a string
242
245
  - name: Setup PHP with tools
243
246
  uses: shivammathur/setup-php@v2
244
247
  with:
245
- php-version: '8.3'
248
+ php-version: '8.4'
246
249
  tools: vimeo/psalm
247
250
  ```
248
251
 
249
252
  - To set up a particular version of a tool, specify it in the form `tool:version`.
250
-
253
+
251
254
  Version can be in the following format:
252
- - Semver. For example `tool:1.2.3` or `tool:1.2.3-beta1`.
253
- - Major version. For example `tool:1` or `tool:1.x`.
254
- - Major and minor version. For example `tool:1.2` or `tool:1.2.x`.
255
-
256
- When you specify just the major version or the version in `major.minor` format, the latest patch version matching the input will be setup.
255
+ - Semver. For example `tool:1.2.3` or `tool:1.2.3-beta1`.
256
+ - Major version. For example `tool:1` or `tool:1.x`.
257
+ - Major and minor version. For example `tool:1.2` or `tool:1.2.x`.
258
+
259
+ When you specify just the major version or the version in `major.minor` format, the latest patch version matching the input will be setup.
257
260
 
258
261
  With the exception of major versions of `composer`, if you specify only the `major` version or the version in `major.minor` format for a tool you can get rate limited by GitHub's API. To avoid this, it is recommended to provide a [`GitHub` OAuth token](https://github.com/shivammathur/setup-php#composer-github-oauth "Composer GitHub OAuth").
259
262
  You can do that by setting `GITHUB_TOKEN` environment variable. The `COMPOSER_TOKEN` environment variable has been deprecated in favor of `GITHUB_TOKEN` and will be removed in the next major version.
@@ -262,8 +265,8 @@ These tools can be set up globally using the `tools` input. It accepts a string
262
265
  - name: Setup PHP with tools
263
266
  uses: shivammathur/setup-php@v2
264
267
  with:
265
- php-version: '8.3'
266
- tools: php-cs-fixer:3.39, phpunit:10.4
268
+ php-version: '8.4'
269
+ tools: php-cs-fixer:3.64, phpunit:11.4
267
270
  env:
268
271
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
269
272
  ```
@@ -274,7 +277,7 @@ These tools can be set up globally using the `tools` input. It accepts a string
274
277
  - name: Setup PHP with composer v2
275
278
  uses: shivammathur/setup-php@v2
276
279
  with:
277
- php-version: '8.3'
280
+ php-version: '8.4'
278
281
  tools: composer:v2
279
282
  ```
280
283
 
@@ -284,7 +287,7 @@ These tools can be set up globally using the `tools` input. It accepts a string
284
287
  - name: Setup PHP without composer
285
288
  uses: shivammathur/setup-php@v2
286
289
  with:
287
- php-version: '8.3'
290
+ php-version: '8.4'
288
291
  tools: none
289
292
  ```
290
293
 
@@ -300,24 +303,24 @@ These tools can be set up globally using the `tools` input. It accepts a string
300
303
  - name: Setup PHP with fail-fast
301
304
  uses: shivammathur/setup-php@v2
302
305
  with:
303
- php-version: '8.3'
306
+ php-version: '8.4'
304
307
  tools: deployer
305
308
  env:
306
309
  fail-fast: true
307
310
  ```
308
311
 
309
- **Notes**
310
- - Input `tools` is useful to set up tools which are only used in CI workflows, thus keeping your `composer.json` tidy.
311
- - If you do not want to use all your dev-dependencies in workflow, you can run composer with `--no-dev` and install required tools using `tools` input to speed up your workflow.
312
- - By default, `COMPOSER_NO_INTERACTION` is set to `1` and `COMPOSER_PROCESS_TIMEOUT` is set to `0`. In effect, this means that Composer commands in your scripts do not need to specify `--no-interaction`.
313
- - Also, `COMPOSER_NO_AUDIT` is set to `1`. So if you want to audit your dependencies for security vulnerabilities, it is recommended to add a `composer audit` step before you install them.
314
- - If you want to set a different `COMPOSER_PROCESS_TIMEOUT`, you can set it in your workflow file using the `env` keyword.
312
+ > [!NOTE]
313
+ > - Input `tools` is useful to set up tools which are only used in CI workflows, thus keeping your `composer.json` tidy.
314
+ > - If you do not want to use all your dev-dependencies in workflow, you can run composer with `--no-dev` and install required tools using `tools` input to speed up your workflow.
315
+ > - By default, `COMPOSER_NO_INTERACTION` is set to `1` and `COMPOSER_PROCESS_TIMEOUT` is set to `0`. In effect, this means that Composer commands in your scripts do not need to specify `--no-interaction`.
316
+ > - Also, `COMPOSER_NO_AUDIT` is set to `1`. So if you want to audit your dependencies for security vulnerabilities, it is recommended to add a `composer audit` step before you install them.
317
+ > - If you want to set a different `COMPOSER_PROCESS_TIMEOUT`, you can set it in your workflow file using the `env` keyword.
315
318
 
316
319
  ```yaml
317
320
  - name: Setup PHP with composer and custom process timeout
318
321
  uses: shivammathur/setup-php@v2
319
322
  with:
320
- php-version: '8.3'
323
+ php-version: '8.4'
321
324
  env:
322
325
  COMPOSER_PROCESS_TIMEOUT: 300
323
326
  ```
@@ -333,7 +336,7 @@ Runs on all [PHP versions supported](#tada-php-support "List of PHP versions sup
333
336
  - name: Setup PHP with Xdebug
334
337
  uses: shivammathur/setup-php@v2
335
338
  with:
336
- php-version: '8.3'
339
+ php-version: '8.4'
337
340
  coverage: xdebug
338
341
  ```
339
342
 
@@ -348,25 +351,26 @@ Runs on all [PHP versions supported](#tada-php-support "List of PHP versions sup
348
351
  coverage: xdebug2
349
352
  ```
350
353
 
351
- **Note**: Xdebug is enabled by default on Ubuntu GitHub Actions images, so if you are not using it in your workflow it is recommended to disable it as that will have a positive impact on your PHP performance. Please refer to the [disable coverage](#disable-coverage) section for details.
354
+ > [!NOTE]
355
+ > Xdebug is enabled by default on Ubuntu GitHub Actions images, so if you are not using it in your workflow it is recommended to disable it as that will have a positive impact on your PHP performance. Please refer to the [disable coverage](#disable-coverage) section for details.
352
356
 
353
357
  ### PCOV
354
358
 
355
359
  Specify `coverage: pcov` to use `PCOV` and disable `Xdebug`.
356
360
  Runs on PHP 7.1 and newer PHP versions.
357
361
 
358
- - If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values` input.
362
+ - If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values` input.
359
363
 
360
364
  ```yaml
361
365
  - name: Setup PHP with PCOV
362
366
  uses: shivammathur/setup-php@v2
363
367
  with:
364
- php-version: '8.3'
368
+ php-version: '8.4'
365
369
  ini-values: pcov.directory=api #optional, see above for usage.
366
370
  coverage: pcov
367
371
  ```
368
372
 
369
- - PHPUnit 8.x and above supports PCOV out of the box.
373
+ - PHPUnit 8.x and above supports PCOV out of the box.
370
374
  - If you are using PHPUnit 5.x, 6.x or 7.x, you need to set up `pcov/clobber` before executing your tests.
371
375
 
372
376
  ```yaml
@@ -391,7 +395,7 @@ Disable coverage for these reasons:
391
395
  - name: Setup PHP with no coverage driver
392
396
  uses: shivammathur/setup-php@v2
393
397
  with:
394
- php-version: '8.3'
398
+ php-version: '8.4'
395
399
  coverage: none
396
400
  ```
397
401
 
@@ -404,16 +408,18 @@ Disable coverage for these reasons:
404
408
  #### `php-version` (optional)
405
409
 
406
410
  - Specify the PHP version you want to set up.
407
- - Accepts a `string`. For example `'8.3'`.
411
+ - Accepts a `string`. For example `'8.4'`.
408
412
  - Accepts `lowest` to set up the lowest supported PHP version.
409
413
  - Accepts `highest` or `latest` to set up the latest stable PHP version.
410
414
  - Accepts `nightly` to set up a nightly build from the master branch of PHP.
411
- - Accepts the format `d.x`, where `d` is the major version. For example `5.x`, `7.x` and `8.x`.
415
+ - Accepts `pre-installed` to set up the highest pre-installed PHP version. You can combine this with `update: true` to update the pre-installed PHP version.
416
+ - Accepts the format `d.x`, where `d` is the major version. For example `5.x`, `7.x` and `8.x`.
412
417
  - See [PHP support](#tada-php-support) for the supported PHP versions.
413
418
  - If not specified, it looks for the following in order:
414
419
  - The `php-version-file` input if it exists
415
420
  - A `composer.lock` file and the `platform-overrides.php` value
416
421
  - A `composer.json` file and the `config.platform.php` value
422
+ - If the `composer.lock` or `composer.json` file is in a sub-directory in your repository, please specify the subdirectory path in `COMPOSER_PROJECT_DIR` env.
417
423
 
418
424
  #### `php-version-file` (optional)
419
425
 
@@ -421,6 +427,7 @@ Disable coverage for these reasons:
421
427
  - Accepts a `string`. For example `'.phpenv-version'`.
422
428
  - See [PHP support](#tada-php-support) for the supported PHP versions.
423
429
  - By default, `.php-version` file is used.
430
+ - The file either have the PHP version as its content, or follow the asdf `.tool-versions` format.
424
431
  - If not specified and the default `.php-version` file is not found, the latest stable PHP version is set up.
425
432
 
426
433
  #### `extensions` (optional)
@@ -439,9 +446,9 @@ Disable coverage for these reasons:
439
446
 
440
447
  #### `ini-values` (optional)
441
448
 
442
- - Specify the values you want to add to `php.ini`.
449
+ - Specify the values you want to add to `php.ini`.
443
450
  - Accepts a `string` in csv-format. For example `post_max_size=256M, max_execution_time=180`.
444
- - Accepts ini values with commas if wrapped in quotes. For example `xdebug.mode="develop,coverage"`.
451
+ - Accepts ini values with commas if wrapped in quotes. For example `xdebug.mode="develop,coverage"`.
445
452
 
446
453
  #### `coverage` (optional)
447
454
 
@@ -468,7 +475,7 @@ On GitHub Actions you can assign the `setup-php` step an `id`, you can use the s
468
475
  id: setup-php
469
476
  uses: shivammathur/setup-php@v2
470
477
  with:
471
- php-version: '8.3'
478
+ php-version: '8.4'
472
479
 
473
480
  - name: Print PHP version
474
481
  run: echo ${{ steps.setup-php.outputs.php-version }}
@@ -510,7 +517,7 @@ steps:
510
517
  - name: Setup PHP
511
518
  uses: shivammathur/setup-php@v2
512
519
  with:
513
- php-version: '8.3'
520
+ php-version: '8.4'
514
521
  extensions: mbstring, intl
515
522
  ini-values: post_max_size=256M, max_execution_time=180
516
523
  coverage: xdebug
@@ -528,12 +535,12 @@ jobs:
528
535
  strategy:
529
536
  matrix:
530
537
  operating-system: ['ubuntu-latest', 'windows-latest', 'macos-latest']
531
- php-versions: ['8.1', '8.2', '8.3']
538
+ php-versions: ['8.2', '8.3', '8.4']
532
539
  phpunit-versions: ['latest']
533
540
  include:
534
541
  - operating-system: 'ubuntu-latest'
535
- php-versions: '8.0'
536
- phpunit-versions: 9
542
+ php-versions: '8.1'
543
+ phpunit-versions: 10
537
544
  steps:
538
545
  - name: Setup PHP
539
546
  uses: shivammathur/setup-php@v2
@@ -549,7 +556,7 @@ jobs:
549
556
 
550
557
  ### Nightly Build Setup
551
558
 
552
- > Set up a nightly build of `PHP 8.4`.
559
+ > Set up a nightly build of `PHP 8.5`.
553
560
 
554
561
  - These PHP versions are currently in active development and might contain bugs and breaking changes.
555
562
  - Some user space extensions might not support this version currently.
@@ -559,7 +566,7 @@ steps:
559
566
  - name: Setup nightly PHP
560
567
  uses: shivammathur/setup-php@v2
561
568
  with:
562
- php-version: '8.4'
569
+ php-version: '8.5'
563
570
  extensions: mbstring
564
571
  ini-values: post_max_size=256M, max_execution_time=180
565
572
  coverage: xdebug
@@ -573,17 +580,17 @@ steps:
573
580
  - Production release builds of PHP without debugging symbols are set up by default.
574
581
  - You can use the `debug` environment variable to set up a build with debugging symbols for PHP 5.6 and above.
575
582
 
576
- **Notes**
577
- - On Linux, the debug symbols are added as [debug info files](https://sourceware.org/gdb/current/onlinedocs/gdb.html/Separate-Debug-Files.html) in the `/usr/lib/debug/.build-id` directory. These files match the `build-id` in the ELF section of the PHP binaries and debugging tools like `gdb` are able to resolve the symbols from these files.
578
- - On Windows, the debug symbols are added as `pdb` files in the PHP installation directory.
579
- - On macOS, the debug symbols are compiled into the binaries.
583
+ > [!NOTE]
584
+ > - On Linux, the debug symbols are added as [debug info files](https://sourceware.org/gdb/current/onlinedocs/gdb.html/Separate-Debug-Files.html) in the `/usr/lib/debug/.build-id` directory. These files match the `build-id` in the ELF section of the PHP binaries and debugging tools like `gdb` are able to resolve the symbols from these files.
585
+ > - On Windows, the debug symbols are added as `pdb` files in the PHP installation directory.
586
+ > - On macOS, the debug symbols are compiled into the binaries.
580
587
 
581
588
  ```yaml
582
589
  steps:
583
590
  - name: Setup PHP with debugging symbols
584
591
  uses: shivammathur/setup-php@v2
585
592
  with:
586
- php-version: '8.3'
593
+ php-version: '8.4'
587
594
  env:
588
595
  debug: true # specify true or false
589
596
  ```
@@ -603,7 +610,7 @@ jobs:
603
610
  - name: Setup PHP
604
611
  uses: shivammathur/setup-php@v2
605
612
  with:
606
- php-version: '8.3'
613
+ php-version: '8.4'
607
614
  env:
608
615
  phpts: ts # specify ts or nts
609
616
  ```
@@ -620,7 +627,7 @@ jobs:
620
627
  - name: Setup PHP with latest versions
621
628
  uses: shivammathur/setup-php@v2
622
629
  with:
623
- php-version: '8.3'
630
+ php-version: '8.4'
624
631
  env:
625
632
  update: true # specify true or false
626
633
  ```
@@ -635,14 +642,14 @@ To debug any issues, you can use the `verbose` tag instead of `v2`.
635
642
  - name: Setup PHP with logs
636
643
  uses: shivammathur/setup-php@verbose
637
644
  with:
638
- php-version: '8.3'
645
+ php-version: '8.4'
639
646
  ```
640
647
 
641
648
  ### Multi-Arch Setup
642
649
 
643
650
  > Set up PHP on multiple architecture on Ubuntu GitHub Runners.
644
651
 
645
- - `PHP 5.6` to `PHP 8.3` are supported by `setup-php` on multiple architecture on `Ubuntu`.
652
+ - `PHP 5.6` to `PHP 8.4` are supported by `setup-php` on multiple architecture on `Ubuntu`.
646
653
  - For this, you can use `shivammathur/node` images as containers. These have compatible `Nodejs` installed for `setup-php`.
647
654
  - Currently, for `ARM` based setup, you will need [self-hosted runners](#self-hosted-setup).
648
655
 
@@ -658,7 +665,7 @@ jobs:
658
665
  - name: Install PHP
659
666
  uses: shivammathur/setup-php@v2
660
667
  with:
661
- php-version: '8.3'
668
+ php-version: '8.4'
662
669
  ```
663
670
 
664
671
  ### Self Hosted Setup
@@ -680,7 +687,7 @@ jobs:
680
687
  runs-on: self-hosted
681
688
  strategy:
682
689
  matrix:
683
- php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
690
+ php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
684
691
  name: PHP ${{ matrix.php-versions }}
685
692
  steps:
686
693
  - name: Setup PHP
@@ -691,10 +698,10 @@ jobs:
691
698
  runner: self-hosted
692
699
  ```
693
700
 
694
- **Notes**
695
- - Do not set up multiple self-hosted runners on a single server instance as parallel workflow will conflict with each other.
696
- - Do not set up self-hosted runners on the side on your development environment or your production server.
697
- - Avoid using the same labels for your `self-hosted` runners which are used by `GitHub-hosted` runners.
701
+ > [!NOTE]
702
+ > - Do not set up multiple self-hosted runners on a single server instance as parallel workflow will conflict with each other.
703
+ > - Do not set up self-hosted runners on the side on your development environment or your production server.
704
+ > - Avoid using the same labels for your `self-hosted` runners which are used by `GitHub-hosted` runners.
698
705
 
699
706
  ### Local Testing Setup
700
707
 
@@ -708,12 +715,12 @@ jobs:
708
715
  - name: Setup PHP
709
716
  uses: shivammathur/setup-php@v2
710
717
  with:
711
- php-version: '8.3'
718
+ php-version: '8.4'
712
719
  ```
713
720
 
714
721
  Run the workflow locally with `act` using [`shivammathur/node`](https://github.com/shivammathur/node-docker "Docker image to run setup-php") docker images.
715
722
 
716
- Choose the image tag which matches the `runs-on` property in your workflow. For example, if you are using `ubuntu-20.04` in your workflow, run `act -P ubuntu-20.04=shivammathur/node:2004`.
723
+ Choose the image tag which matches the `runs-on` property in your workflow. For example, if you are using `ubuntu-22.04` in your workflow, run `act -P ubuntu-22.04=shivammathur/node:2204`.
717
724
 
718
725
  ```bash
719
726
  # For runs-on: ubuntu-latest
@@ -724,9 +731,6 @@ act -P ubuntu-24.04=shivammathur/node:2404
724
731
 
725
732
  # For runs-on: ubuntu-22.04
726
733
  act -P ubuntu-22.04=shivammathur/node:2204
727
-
728
- # For runs-on: ubuntu-20.04
729
- act -P ubuntu-20.04=shivammathur/node:2004
730
734
  ```
731
735
 
732
736
  ### JIT Configuration
@@ -738,13 +742,13 @@ act -P ubuntu-20.04=shivammathur/node:2004
738
742
  - By default, `opcache.jit=1235` and `opcache.jit_buffer_size=256M` are set which can be changed using `ini-values` input.
739
743
  - For detailed information about JIT related directives refer to the [`official PHP documentation`](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit "opcache.jit documentation").
740
744
 
741
- For example to enable JIT in `tracing` mode with buffer size of `64 MB`.
745
+ For example to enable JIT in `tracing` mode with buffer size of `64 MB`.
742
746
 
743
747
  ```yaml
744
748
  - name: Setup PHP with JIT in tracing mode
745
749
  uses: shivammathur/setup-php@v2
746
750
  with:
747
- php-version: '8.3'
751
+ php-version: '8.4'
748
752
  coverage: none
749
753
  ini-values: opcache.enable_cli=1, opcache.jit=tracing, opcache.jit_buffer_size=64M
750
754
  ```
@@ -774,9 +778,9 @@ If your project uses composer, you can persist the composer's internal cache dir
774
778
  run: composer install --prefer-dist
775
779
  ```
776
780
 
777
- **Notes**
778
- - Please do not cache `vendor` directory using `action/cache` as that will have side effects.
779
- - If you do not commit `composer.lock`, you can use the hash of `composer.json` as the key for your cache.
781
+ > [!NOTE]
782
+ > - Please do not cache `vendor` directory using `action/cache` as that will have side effects.
783
+ > - If you do not commit `composer.lock`, you can use the hash of `composer.json` as the key for your cache.
780
784
  ```yaml
781
785
  key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
782
786
  ```
@@ -797,7 +801,7 @@ The `COMPOSER_TOKEN` environment variable has been deprecated in favor of `GITHU
797
801
  - name: Setup PHP
798
802
  uses: shivammathur/setup-php@v2
799
803
  with:
800
- php-version: '8.3'
804
+ php-version: '8.4'
801
805
  env:
802
806
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
803
807
  ```
@@ -810,7 +814,7 @@ If you use Private Packagist for your private composer dependencies, you can set
810
814
  - name: Setup PHP
811
815
  uses: shivammathur/setup-php@v2
812
816
  with:
813
- php-version: '8.3'
817
+ php-version: '8.4'
814
818
  env:
815
819
  PACKAGIST_TOKEN: ${{ secrets.PACKAGIST_TOKEN }}
816
820
  ```
@@ -824,7 +828,7 @@ Please refer to the authentication section in [`composer documentation`](https:/
824
828
  - name: Setup PHP
825
829
  uses: shivammathur/setup-php@v2
826
830
  with:
827
- php-version: '8.3'
831
+ php-version: '8.4'
828
832
  env:
829
833
  COMPOSER_AUTH_JSON: |
830
834
  {
@@ -847,7 +851,7 @@ Put the code in the run property of a step and specify the shell as `php {0}`.
847
851
  - name: Setup PHP
848
852
  uses: shivammathur/setup-php@v2
849
853
  with:
850
- php-version: '8.3'
854
+ php-version: '8.4'
851
855
 
852
856
  - name: Run PHP code
853
857
  shell: php {0}
@@ -887,7 +891,7 @@ PHPStan supports error reporting in GitHub Actions, so it does not require probl
887
891
  - name: Setup PHP
888
892
  uses: shivammathur/setup-php@v2
889
893
  with:
890
- php-version: '8.3'
894
+ php-version: '8.4'
891
895
  tools: phpstan
892
896
 
893
897
  - name: Run PHPStan
@@ -902,7 +906,7 @@ Psalm supports error reporting in GitHub Actions with an output format `github`.
902
906
  - name: Setup PHP
903
907
  uses: shivammathur/setup-php@v2
904
908
  with:
905
- php-version: '8.3'
909
+ php-version: '8.4'
906
910
  tools: psalm
907
911
 
908
912
  - name: Run Psalm
@@ -920,7 +924,7 @@ For examples refer to the [cs2pr documentation](https://github.com/staabm/annota
920
924
  - name: Setup PHP
921
925
  uses: shivammathur/setup-php@v2
922
926
  with:
923
- php-version: '8.3'
927
+ php-version: '8.4'
924
928
  tools: cs2pr, phpcs
925
929
 
926
930
  - name: Run phpcs
@@ -969,7 +973,7 @@ Examples of using `setup-php` with various PHP frameworks and packages.
969
973
 
970
974
  ## :scroll: License
971
975
 
972
- - The scripts and documentation in this project are under the [MIT License](LICENSE "License for shivammathur/setup-php").
976
+ - The scripts and documentation in this project are under the [MIT License](LICENSE "License for shivammathur/setup-php").
973
977
  - This project has multiple [dependencies](#package-dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
974
978
  - The logo for `setup-php` is a derivative work of [php.net logo](https://www.php.net/download-logos.php) and is licensed under the [CC BY-SA 4.0 License](https://creativecommons.org/licenses/by-sa/4.0/ "Creative Commons License").
975
979
 
@@ -1049,6 +1053,7 @@ These companies generously provide setup-php their products and services to aid
1049
1053
  [`churn`]: https://github.com/bmitch/churn-php
1050
1054
  [`codeception`]: https://codeception.com/
1051
1055
  [`composer`]: https://getcomposer.org/
1056
+ [`composer-dependency-analyser`]: https://github.com/shipmonk-rnd/composer-dependency-analyser
1052
1057
  [`composer-normalize`]: https://github.com/ergebnis/composer-normalize
1053
1058
  [`composer-prefetcher`]: https://github.com/narrowspark/automatic-composer-prefetcher
1054
1059
  [`composer-require-checker`]: https://github.com/maglnet/ComposerRequireChecker
package/lib/config.js CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.addINIValuesUnix = addINIValuesUnix;
27
37
  exports.addINIValuesWindows = addINIValuesWindows;
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4CAeC;AAOD,kDAYC;AASD,oCA+BC;AAjFD,+CAAiC;AAO1B,KAAK,UAAU,gBAAgB,CACpC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,QAAQ;QACR,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,gEAAgE;QAChE,MAAM,CACP,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,mCAAmC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAC3E,CAAC;AACJ,CAAC;AASM,KAAK,UAAU,YAAY,CAChC,cAAsB,EACtB,EAAU,EACV,OAAO,GAAG,KAAK;IAEf,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,MAAM;gBACJ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBAC/C,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC;YACP,MAAM;QACR,KAAK,KAAK,CAAC;QACX;YACE,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACjE,MAAM;IACV,CAAC;IACD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D;YACE,OAAO,MAAM,KAAK,CAAC,GAAG,CACpB,WAAW,GAAG,EAAE,GAAG,mBAAmB,EACtC,EAAE,EACF,OAAO,CACR,CAAC;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,4CAeC;AAOD,kDAYC;AASD,oCA+BC;AAjFD,+CAAiC;AAO1B,KAAK,UAAU,gBAAgB,CACpC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,QAAQ;QACR,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,gEAAgE;QAChE,MAAM,CACP,CAAC;AACJ,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,cAAsB;IAEtB,MAAM,UAAU,GAAkB,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,MAAM,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,WAAW,IAAY;QAC/D,MAAM;YACJ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,CACL,mCAAmC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAC3E,CAAC;AACJ,CAAC;AASM,KAAK,UAAU,YAAY,CAChC,cAAsB,EACtB,EAAU,EACV,OAAO,GAAG,KAAK;IAEf,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,IAAI;YACP,MAAM;gBACJ,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;oBAC/C,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,CAAC;YACP,MAAM;QACR,KAAK,KAAK,CAAC;QACX;YACE,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACjE,MAAM;IACV,CAAC;IACD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9D,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,MAAM,GAAG,CAAC,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D;YACE,OAAO,MAAM,KAAK,CAAC,GAAG,CACpB,WAAW,GAAG,EAAE,GAAG,mBAAmB,EACtC,EAAE,EACF,OAAO,CACR,CAAC;IACN,CAAC;AACH,CAAC"}