mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-19 21:33:30 +07:00
Compare commits
65 Commits
Author | SHA1 | Date | |
---|---|---|---|
4c5c122aa6 | |||
bee5abe269 | |||
220d0c24c7 | |||
2f5c2edb22 | |||
721e4c3367 | |||
2f2a90e464 | |||
81a06ff6ed | |||
dfc02c42d9 | |||
ac7d3d7f84 | |||
874e5099b0 | |||
4a3337d069 | |||
123f6df529 | |||
341cf69e13 | |||
f7b503e36b | |||
beaceb0089 | |||
03509eca9b | |||
2c9c274411 | |||
1c85db7f9e | |||
d259dd49a2 | |||
ea20ae1fbd | |||
383c74bb06 | |||
b4593b7df0 | |||
9b92c9db92 | |||
a357b6a054 | |||
0bc2f7ce96 | |||
e2e76ea34f | |||
719018955c | |||
4c903565c9 | |||
fc60088a95 | |||
a7f90656b3 | |||
0cd4af837e | |||
96e47f9be7 | |||
eca40cad4d | |||
4e864eae3b | |||
49a0bad962 | |||
b971d8f4ad | |||
fca0924fa9 | |||
8dfe214356 | |||
f2d6820ca2 | |||
705c2a5785 | |||
5e33fdb0d9 | |||
dab978c436 | |||
2cc925b655 | |||
4ce6f3c3df | |||
b3bf0f3990 | |||
8426bf89fd | |||
d7c3e33a96 | |||
17ef667e04 | |||
295b5da700 | |||
e820a5d75b | |||
2c8682d5e6 | |||
87993cd853 | |||
e0dd9c9560 | |||
28853c9f3b | |||
608ad1a0cf | |||
257e4c088d | |||
7b145b5fae | |||
253459691c | |||
cb5db3f888 | |||
52d2b3b70b | |||
fa5fbefff9 | |||
256b466cc4 | |||
57f4a60e24 | |||
2e289f30e2 | |||
bc0d607611 |
62
.github/workflows/node-release.yml
vendored
Normal file
62
.github/workflows/node-release.yml
vendored
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
name: Publish Package
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [created]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
skip:
|
||||||
|
description: Skip release to repository
|
||||||
|
required: false
|
||||||
|
tag:
|
||||||
|
description: Tag name
|
||||||
|
required: true
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
uses: step-security/harden-runner@main
|
||||||
|
|
||||||
|
- name: Checkout release
|
||||||
|
if: github.event_name != 'workflow_dispatch'
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Checkout tag
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.inputs.tag }}
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: '14.x'
|
||||||
|
registry-url: https://registry.npmjs.org
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Publish to NPM
|
||||||
|
if: "!contains(github.event.inputs.skip, 'skip-npm')"
|
||||||
|
run: npm publish --access public
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
- name: Change to GitHub Packages registry
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
registry-url: https://npm.pkg.github.com
|
||||||
|
scope: '@shivammathur'
|
||||||
|
|
||||||
|
- name: Patch package.json
|
||||||
|
run: |
|
||||||
|
sed -i 's#"name": "#"name": "@shivammathur/#' package.json
|
||||||
|
|
||||||
|
- name: Publish to GitHub Packages
|
||||||
|
if: "!contains(github.event.inputs.skip, 'skip-github-packages')"
|
||||||
|
run: npm publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
14
.github/workflows/node-workflow.yml
vendored
14
.github/workflows/node-workflow.yml
vendored
@ -25,6 +25,20 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
steps:
|
steps:
|
||||||
|
- name: Harden Runner
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
uses: step-security/harden-runner@main
|
||||||
|
with:
|
||||||
|
allowed-endpoints:
|
||||||
|
beta.api.stepsecurity.io.:443
|
||||||
|
codecov.io.:443
|
||||||
|
github.com.:443
|
||||||
|
nodejs.org.:443
|
||||||
|
raw.githubusercontent.com.:443
|
||||||
|
registry.npmjs.org.:443
|
||||||
|
setup-php.com.:443
|
||||||
|
storage.googleapis.com.:443
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
2
.github/workflows/workflow.yml
vendored
2
.github/workflows/workflow.yml
vendored
@ -28,7 +28,7 @@ jobs:
|
|||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
||||||
env:
|
env:
|
||||||
extensions: xml, opcache, xdebug, pcov
|
extensions: xml, opcache, xdebug, pcov
|
||||||
key: cache-v3
|
key: cache-v5
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
73
README.md
73
README.md
@ -11,6 +11,7 @@
|
|||||||
<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>
|
<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>
|
||||||
<a href="https://github.com/shivammathur/setup-php/blob/master/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>
|
<a href="https://github.com/shivammathur/setup-php/blob/master/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>
|
||||||
<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.2-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
|
<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.2-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
|
||||||
|
<a href="https://beta.stepsecurity.io/npm/setup-php"><img alt="release verified" src="https://img.shields.io/endpoint?url=https://beta.api.stepsecurity.io/v1/npm/setup-php/badge?q=1"></a>
|
||||||
</p>
|
</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<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>
|
<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>
|
||||||
@ -112,11 +113,11 @@ On all supported OS/Platforms the following PHP versions are supported as per th
|
|||||||
|`7.3`|`Stable`|`Security fixes only`|`GitHub-hosted`, `self-hosted`|
|
|`7.3`|`Stable`|`Security fixes only`|`GitHub-hosted`, `self-hosted`|
|
||||||
|`7.4`|`Stable`|`Active`|`GitHub-hosted`, `self-hosted`|
|
|`7.4`|`Stable`|`Active`|`GitHub-hosted`, `self-hosted`|
|
||||||
|`8.0`|`Stable`|`Active`|`GitHub-hosted`, `self-hosted`|
|
|`8.0`|`Stable`|`Active`|`GitHub-hosted`, `self-hosted`|
|
||||||
|`8.1`|`Nightly`|`In development`|`GitHub-hosted`, `self-hosted`|
|
|`8.1`|`Stable`|`Active`|`GitHub-hosted`, `self-hosted`|
|
||||||
|`8.2`|`Nightly`|`In development`|`GitHub-hosted`, `self-hosted`|
|
|`8.2`|`Nightly`|`In development`|`GitHub-hosted`, `self-hosted`|
|
||||||
|
|
||||||
**Notes:**
|
**Notes:**
|
||||||
- Specifying `8.1` and `8.2` in `php-version` input installs a nightly build of `PHP 8.1.0-dev` and `PHP 8.2.0-dev` respectively. See [nightly build setup](#nightly-build-setup) for more information.
|
- Specifying `8.2` in `php-version` input installs a nightly build of `PHP 8.2.0-dev`. See [nightly build setup](#nightly-build-setup) for more information.
|
||||||
- To use JIT on `PHP 8.0` and above, refer to the [JIT configuration](#jit-configuration) section.
|
- To use JIT on `PHP 8.0` and above, refer to the [JIT configuration](#jit-configuration) section.
|
||||||
|
|
||||||
## :heavy_plus_sign: PHP Extension Support
|
## :heavy_plus_sign: PHP Extension Support
|
||||||
@ -216,7 +217,7 @@ PHP extensions can be set up using the `extensions` input. It accepts a `string`
|
|||||||
|
|
||||||
These tools can be set up globally using the `tools` input. It accepts a string in csv-format.
|
These tools can be set up globally using the `tools` input. It accepts a string in csv-format.
|
||||||
|
|
||||||
`behat`, `blackfire`, `blackfire-player`, `codeception`, `composer`, `composer-normalize`, `composer-prefetcher`, `composer-require-checker`, `composer-unused`, `cs2pr`, `deployer`, `flex`, `grpc_php_plugin`, `infection`, `pecl`, `phan`, `phing`, `phinx`, `phive`, `php-config`, `php-cs-fixer`, `phpcbf`, `phpcpd`, `phpcs`, `phpize`, `phplint`, `phpmd`, `phpspec`, `phpstan`, `phpunit`, `phpunit-bridge`, `prestissimo`, `protoc`, `psalm`, `symfony` or `symfony-cli`, `vapor` or `vapor-cli`, `wp` or `wp-cli`
|
[`behat`], [`blackfire`], [`blackfire-player`], [`codeception`], [`composer`], [`composer-normalize`], [`composer-prefetcher`], [`composer-require-checker`], [`composer-unused`], [`cs2pr`], [`deployer`], [`flex`], [`grpc_php_plugin`], [`infection`], [`parallel-lint`], [`pecl`], [`phan`], [`phing`], [`phinx`], [`phive`], [`php-config`], [`php-cs-fixer`], [`phpcbf`], [`phpcpd`], [`phpcs`], [`phpdoc`] or [`phpDocumentor`], [`phpize`], [`phplint`], [`phpmd`], [`phpspec`], [`phpstan`], [`phpunit`], [`phpunit-bridge`], [`phpunit-polyfills`], [`prestissimo`], [`protoc`], [`psalm`], [`symfony`] or [`symfony-cli`], [`vapor`] or [`vapor-cli`], [`wp`] or [`wp-cli`]
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with tools
|
- name: Setup PHP with tools
|
||||||
@ -491,7 +492,7 @@ jobs:
|
|||||||
include:
|
include:
|
||||||
- operating-system: 'ubuntu-latest'
|
- operating-system: 'ubuntu-latest'
|
||||||
php-versions: '7.2'
|
php-versions: '7.2'
|
||||||
phpunit-versions: '8.5.19'
|
phpunit-versions: '8.5.21'
|
||||||
steps:
|
steps:
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
@ -505,7 +506,7 @@ jobs:
|
|||||||
|
|
||||||
### Nightly Build Setup
|
### Nightly Build Setup
|
||||||
|
|
||||||
> Setup a nightly build of `PHP 8.1` or `PHP 8.2`.
|
> Setup a nightly build of `PHP 8.2`.
|
||||||
|
|
||||||
- This version is currently in development.
|
- This version is currently in development.
|
||||||
- Some user space extensions might not support this version currently.
|
- Some user space extensions might not support this version currently.
|
||||||
@ -515,7 +516,7 @@ steps:
|
|||||||
- name: Setup nightly PHP
|
- name: Setup nightly PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '8.2'
|
||||||
extensions: mbstring
|
extensions: mbstring
|
||||||
ini-values: post_max_size=256M, max_execution_time=180
|
ini-values: post_max_size=256M, max_execution_time=180
|
||||||
coverage: xdebug
|
coverage: xdebug
|
||||||
@ -618,9 +619,6 @@ jobs:
|
|||||||
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0']
|
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0']
|
||||||
name: PHP ${{ matrix.php-versions }}
|
name: PHP ${{ matrix.php-versions }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
@ -886,14 +884,16 @@ Examples of using `setup-php` with various PHP Frameworks and Packages.
|
|||||||
|
|
||||||
## :sparkling_heart: Support This Project
|
## :sparkling_heart: Support This Project
|
||||||
|
|
||||||
- This project is provided as Free and Open-Source software. We need funds to maintain and do future improvements. Please sponsor setup-php using [GitHub sponsors](https://github.com/sponsors/shivammathur).
|
|
||||||
- Please [reach out](mailto:contact@setup-php.com) if you have any questions about sponsoring setup-php.
|
|
||||||
- Please star the project and share it. If you blog, please share your experience of using this action.
|
- Please star the project and share it. If you blog, please share your experience of using this action.
|
||||||
|
- Please sponsor setup-php using [GitHub sponsors](https://github.com/sponsors/shivammathur).
|
||||||
|
- Please [reach out](mailto:contact@setup-php.com) if you have any questions about sponsoring setup-php.
|
||||||
|
|
||||||
|
[](https://github.com/sponsors/shivammathur)
|
||||||
|
|
||||||
### Corporate Sponsors
|
### Corporate Sponsors
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/sponsors/shivammathur">
|
<a href="https://setup-php.com/sponsors-corp/?">
|
||||||
<img src="https://setup-php.com/sponsors-corp/?" alt="Corporate sponsors of setup-php and related projects" width="100%">
|
<img src="https://setup-php.com/sponsors-corp/?" alt="Corporate sponsors of setup-php and related projects" width="100%">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@ -901,7 +901,7 @@ Examples of using `setup-php` with various PHP Frameworks and Packages.
|
|||||||
### Individual Sponsors
|
### Individual Sponsors
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/sponsors/shivammathur">
|
<a href="https://setup-php.com/sponsors/?">
|
||||||
<img src="https://setup-php.com/sponsors/?" alt="Individual sponsors of setup-php and related projects" width="100%">
|
<img src="https://setup-php.com/sponsors/?" alt="Individual sponsors of setup-php and related projects" width="100%">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@ -928,3 +928,50 @@ Examples of using `setup-php` with various PHP Frameworks and Packages.
|
|||||||
- [About GitHub Actions](https://github.com/features/actions "GitHub Actions")
|
- [About GitHub Actions](https://github.com/features/actions "GitHub Actions")
|
||||||
- [GitHub Actions Syntax](https://help.github.com/en/articles/workflow-syntax-for-github-actions "GitHub Actions Syntax")
|
- [GitHub Actions Syntax](https://help.github.com/en/articles/workflow-syntax-for-github-actions "GitHub Actions Syntax")
|
||||||
- [Other Awesome Actions](https://github.com/sdras/awesome-actions "List of Awesome GitHub Actions")
|
- [Other Awesome Actions](https://github.com/sdras/awesome-actions "List of Awesome GitHub Actions")
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Links to tools -->
|
||||||
|
[`behat`]: https://docs.behat.org/en/latest/
|
||||||
|
[`blackfire`]: https://blackfire.io/docs/php/index
|
||||||
|
[`blackfire-player`]: https://blackfire.io/docs/builds-cookbooks/player
|
||||||
|
[`codeception`]: https://codeception.com/
|
||||||
|
[`composer`]: https://getcomposer.org/
|
||||||
|
[`composer-normalize`]: https://github.com/ergebnis/composer-normalize
|
||||||
|
[`composer-prefetcher`]: https://github.com/narrowspark/automatic-composer-prefetcher
|
||||||
|
[`composer-require-checker`]: https://github.com/maglnet/ComposerRequireChecker
|
||||||
|
[`composer-unused`]: https://github.com/composer-unused/composer-unused
|
||||||
|
[`cs2pr`]: https://github.com/staabm/annotate-pull-request-from-checkstyle
|
||||||
|
[`deployer`]: https://deployer.org/
|
||||||
|
[`flex`]: https://flex.symfony.com/
|
||||||
|
[`grpc_php_plugin`]: https://grpc.io/
|
||||||
|
[`infection`]: https://infection.github.io/
|
||||||
|
[`parallel-lint`]: https://github.com/php-parallel-lint/PHP-Parallel-Lint
|
||||||
|
[`pecl`]: https://pecl.php.net/
|
||||||
|
[`phan`]: https://github.com/phan/phan/wiki
|
||||||
|
[`phing`]: https://www.phing.info/
|
||||||
|
[`phinx`]: https://phinx.org/
|
||||||
|
[`phive`]: https://phar.io/
|
||||||
|
[`php-config`]: https://www.php.net/manual/en/install.pecl.php-config.php
|
||||||
|
[`php-cs-fixer`]: https://cs.symfony.com/
|
||||||
|
[`phpcbf`]: https://github.com/squizlabs/php_codesniffer
|
||||||
|
[`phpcpd`]: https://github.com/sebastianbergmann/phpcpd
|
||||||
|
[`phpcs`]: https://github.com/squizlabs/php_codesniffer
|
||||||
|
[`phpdoc`]: https://phpdoc.org/
|
||||||
|
[`phpDocumentor`]: https://phpdoc.org/
|
||||||
|
[`phpize`]: https://www.php.net/manual/en/install.pecl.phpize.php
|
||||||
|
[`phplint`]: https://github.com/overtrue/phplint
|
||||||
|
[`phpmd`]: https://phpmd.org/
|
||||||
|
[`phpspec`]: https://www.phpspec.net/
|
||||||
|
[`phpstan`]: https://phpstan.org/
|
||||||
|
[`phpunit`]: https://phpunit.de/
|
||||||
|
[`phpunit-bridge`]: https://symfony.com/doc/current/components/phpunit_bridge.html
|
||||||
|
[`phpunit-polyfills`]: https://github.com/Yoast/PHPUnit-Polyfills
|
||||||
|
[`prestissimo`]: https://github.com/hirak/prestissimo
|
||||||
|
[`protoc`]: https://developers.google.com/protocol-buffers/
|
||||||
|
[`psalm`]: https://psalm.dev/
|
||||||
|
[`symfony`]: https://symfony.com/download
|
||||||
|
[`symfony-cli`]: https://symfony.com/download
|
||||||
|
[`vapor`]: https://docs.vapor.build/
|
||||||
|
[`vapor-cli`]: https://docs.vapor.build/
|
||||||
|
[`wp`]: https://wp-cli.org/
|
||||||
|
[`wp-cli`]: https://wp-cli.org/
|
||||||
|
@ -1,269 +1,138 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
import * as extensions from '../src/extensions';
|
import * as extensions from '../src/extensions';
|
||||||
|
|
||||||
describe('Extension tests', () => {
|
describe('Extension tests', () => {
|
||||||
it('checking addExtensionOnWindows', async () => {
|
it.each`
|
||||||
let win32: string = await extensions.addExtension(
|
extension | version | output
|
||||||
'none, Xdebug, pcov, sqlite, :intl, phalcon4, pecl_http, ioncube, oci8, pdo_oci, ast-beta, grpc-1.2.3, inotify-1.2.3alpha2, sqlsrv-1.2.3preview1',
|
${'none'} | ${'7.4'} | ${'Disable-AllShared'}
|
||||||
'7.4',
|
${':intl'} | ${'7.4'} | ${'Disable-Extension intl'}
|
||||||
'win32'
|
${'ast-beta'} | ${'7.4'} | ${'Add-Extension ast beta'}
|
||||||
);
|
${'blackfire'} | ${'7.3'} | ${'Add-Blackfire blackfire'}
|
||||||
expect(win32).toContain('Disable-AllShared');
|
${'blackfire-1.31.0'} | ${'7.3'} | ${'Add-Blackfire blackfire-1.31.0'}
|
||||||
expect(win32).toContain('Add-Extension xdebug');
|
${'grpc-1.2.3'} | ${'7.4'} | ${'Add-Extension grpc stable 1.2.3'}
|
||||||
expect(win32).toContain('Add-Extension pcov');
|
${'inotify-1.2.3alpha2'} | ${'7.4'} | ${'Add-Extension inotify alpha 1.2.3'}
|
||||||
expect(win32).toContain('Add-Extension sqlite3');
|
${'ioncube'} | ${'7.4'} | ${'Add-Ioncube'}
|
||||||
expect(win32).toContain('Disable-Extension intl');
|
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'Add-Log "$cross" "mongodb-mongodb/mongo-php-driver@master" "mongodb-mongodb/mongo-php-driver@master is not supported on PHP 7.3"'}
|
||||||
expect(win32).toContain('Add-Phalcon phalcon4');
|
${'mysql'} | ${'7.4'} | ${'Add-Extension mysqli\nAdd-Extension mysqlnd'}
|
||||||
expect(win32).toContain('Add-Http');
|
${'mysql'} | ${'5.5'} | ${'Add-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd'}
|
||||||
expect(win32).toContain('Add-Ioncube');
|
${'oci8'} | ${'7.4'} | ${'Add-Oci oci8'}
|
||||||
expect(win32).toContain('Add-Oci oci8');
|
${'pcov'} | ${'5.6'} | ${'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
||||||
expect(win32).toContain('Add-Oci pdo_oci');
|
${'pdo_oci'} | ${'7.4'} | ${'Add-Oci pdo_oci'}
|
||||||
expect(win32).toContain('Add-Extension ast beta');
|
${'pecl_http'} | ${'7.4'} | ${'Add-Http'}
|
||||||
expect(win32).toContain('Add-Extension grpc stable 1.2.3');
|
${'phalcon3'} | ${'7.2'} | ${'Add-Phalcon phalcon3'}
|
||||||
expect(win32).toContain('Add-Extension inotify alpha 1.2.3');
|
${'phalcon4'} | ${'7.4'} | ${'Add-Phalcon phalcon4'}
|
||||||
expect(win32).toContain('Add-Extension sqlsrv devel 1.2.3');
|
${'sqlite'} | ${'7.4'} | ${'Add-Extension sqlite3'}
|
||||||
|
${'sqlsrv-1.2.3preview1'} | ${'7.4'} | ${'Add-Extension sqlsrv devel 1.2.3'}
|
||||||
win32 = await extensions.addExtension('pcov', '5.6', 'win32');
|
${'Xdebug'} | ${'7.4'} | ${'Add-Extension xdebug'}
|
||||||
expect(win32).toContain(
|
${'xdebug2'} | ${'7.2'} | ${'Add-Extension xdebug stable 2.9.8'}
|
||||||
'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
`(
|
||||||
|
'checking addExtensionOnWindows for extension $extension on version $version',
|
||||||
|
async ({extension, version, output}) => {
|
||||||
|
expect(
|
||||||
|
await extensions.addExtension(extension, version, 'win32')
|
||||||
|
).toContain(output);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
win32 = await extensions.addExtension('xdebug2', '7.2', 'win32');
|
it.each`
|
||||||
expect(win32).toContain('Add-Extension xdebug stable 2.9.8');
|
extension | version | output
|
||||||
|
${'none'} | ${'7.4'} | ${'disable_all_shared'}
|
||||||
win32 = await extensions.addExtension('mysql', '7.4', 'win32');
|
${':intl'} | ${'7.4'} | ${'disable_extension intl'}
|
||||||
expect(win32).toContain('Add-Extension mysqli');
|
${'ast-beta'} | ${'7.4'} | ${'add_unstable_extension ast beta extension'}
|
||||||
expect(win32).toContain('Add-Extension mysqlnd');
|
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
||||||
|
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
||||||
win32 = await extensions.addExtension('mysql', '8.0', 'win32');
|
${'couchbase'} | ${'7.4'} | ${'add_couchbase'}
|
||||||
expect(win32).toContain('Add-Extension mysqli');
|
${'gearman'} | ${'5.6'} | ${'add_gearman'}
|
||||||
expect(win32).toContain('Add-Extension mysqlnd');
|
${'geos'} | ${'7.3'} | ${'add_geos'}
|
||||||
|
${'grpc-1.2.3'} | ${'7.4'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
||||||
win32 = await extensions.addExtension('mysql', '5.5', 'win32');
|
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
||||||
expect(win32).toContain('Add-Extension mysql');
|
${'intl-65.1'} | ${'5.6'} | ${'add_intl intl-65.1'}
|
||||||
expect(win32).toContain('Add-Extension mysqli');
|
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
||||||
expect(win32).toContain('Add-Extension mysqlnd');
|
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
||||||
|
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
||||||
win32 = await extensions.addExtension(
|
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6'}
|
||||||
'phalcon3, does_not_exist',
|
${'pdo-odbc'} | ${'7.4'} | ${'add_pdo_extension odbc'}
|
||||||
'7.2',
|
${'pdo_cubrid'} | ${'7.0'} | ${'add_cubrid pdo_cubrid'}
|
||||||
'win32',
|
${'pdo_cubrid'} | ${'7.4'} | ${'add_pdo_extension cubrid'}
|
||||||
true
|
${'pdo_mysql'} | ${'7.4'} | ${'add_pdo_extension mysql'}
|
||||||
|
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
||||||
|
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
||||||
|
${'phalcon3'} | ${'7.3'} | ${'add_phalcon phalcon3'}
|
||||||
|
${'sqlite'} | ${'7.4'} | ${'add_extension sqlite3'}
|
||||||
|
${'Xdebug'} | ${'7.4'} | ${'add_extension xdebug'}
|
||||||
|
${'xdebug-alpha'} | ${'7.4'} | ${'add_unstable_extension xdebug alpha zend_extension'}
|
||||||
|
${'xdebug2'} | ${'7.2'} | ${'add_pecl_extension xdebug 2.9.8 zend_extension'}
|
||||||
|
`(
|
||||||
|
'checking addExtensionOnLinux for extension $extension on version $version',
|
||||||
|
async ({extension, version, output}) => {
|
||||||
|
expect(
|
||||||
|
await extensions.addExtension(extension, version, 'linux')
|
||||||
|
).toContain(output);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
expect(win32).toContain('Add-Phalcon phalcon3');
|
|
||||||
expect(win32).toContain('Add-Extension does_not_exist');
|
|
||||||
|
|
||||||
win32 = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
it.each`
|
||||||
expect(win32).toContain('Platform openbsd is not supported');
|
extension | version | output
|
||||||
|
${'none'} | ${'7.2'} | ${'disable_all_shared'}
|
||||||
win32 = await extensions.addExtension('blackfire', '7.3', 'win32');
|
${':intl'} | ${'7.2'} | ${'disable_extension intl'}
|
||||||
expect(win32).toContain('Add-Blackfire blackfire');
|
${'ast-beta'} | ${'7.2'} | ${'add_unstable_extension ast beta extension'}
|
||||||
|
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
||||||
win32 = await extensions.addExtension('blackfire-1.31.0', '7.3', 'win32');
|
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
||||||
expect(win32).toContain('Add-Blackfire blackfire-1.31.0');
|
${'couchbase'} | ${'5.6'} | ${'add_couchbase'}
|
||||||
|
${'does_not_exist'} | ${'7.2'} | ${'add_extension does_not_exist'}
|
||||||
win32 = await extensions.addExtension(
|
${'geos'} | ${'7.3'} | ${'add_geos'}
|
||||||
'mongodb-mongodb/mongo-php-driver@master',
|
${'grpc-1.2.3'} | ${'7.2'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
||||||
'7.3',
|
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
||||||
'win32'
|
${'imagick'} | ${'5.5'} | ${'add_extension imagick'}
|
||||||
);
|
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
||||||
expect(win32).toContain(
|
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.2'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
||||||
'Add-Log "$cross" "mongodb-mongodb/mongo-php-driver@master" "mongodb-mongodb/mongo-php-driver@master is not supported on PHP 7.3"'
|
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
||||||
|
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
||||||
|
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
||||||
|
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
||||||
|
${'sqlite'} | ${'7.2'} | ${'add_extension sqlite3'}
|
||||||
|
`(
|
||||||
|
'checking addExtensionOnDarwin for extension $extension on version $version',
|
||||||
|
async ({extension, version, output}) => {
|
||||||
|
expect(
|
||||||
|
await extensions.addExtension(extension, version, 'darwin')
|
||||||
|
).toContain(output);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const data: string[][] = fs
|
||||||
|
.readFileSync('src/configs/brew_extensions')
|
||||||
|
.toString()
|
||||||
|
.split(/\r?\n/)
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(line => {
|
||||||
|
const [formula, extension]: string[] = line.split('=');
|
||||||
|
const prefix: string =
|
||||||
|
extension == 'xdebug' ? 'zend_extension' : 'extension';
|
||||||
|
const output: string = fs.existsSync(`src/scripts/ext/${extension}.sh`)
|
||||||
|
? `add_${extension}`
|
||||||
|
: `add_brew_extension ${formula} ${prefix}`;
|
||||||
|
return [formula, '7.3', output];
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addExtensionOnLinux', async () => {
|
it.each(data)(
|
||||||
let linux: string = await extensions.addExtension(
|
'checking addExtensionOnDarwin for brew extension %s',
|
||||||
'none, Xdebug, pcov, sqlite, :intl, ast, ast-beta, pdo_mysql, pdo-odbc, xdebug-alpha, grpc-1.2.3',
|
async (extension, version, output) => {
|
||||||
'7.4',
|
expect(
|
||||||
'linux'
|
await extensions.addExtension(extension, version, 'darwin')
|
||||||
);
|
).toContain(output);
|
||||||
expect(linux).toContain('disable_all_shared');
|
}
|
||||||
expect(linux).toContain('add_extension xdebug');
|
|
||||||
expect(linux).toContain('add_extension sqlite3');
|
|
||||||
expect(linux).toContain('disable_extension intl');
|
|
||||||
expect(linux).toContain('add_unstable_extension ast beta extension');
|
|
||||||
expect(linux).toContain('add_pdo_extension mysql');
|
|
||||||
expect(linux).toContain('add_pdo_extension odbc');
|
|
||||||
expect(linux).toContain('add_pecl_extension grpc 1.2.3 extension');
|
|
||||||
expect(linux).toContain(
|
|
||||||
'add_unstable_extension xdebug alpha zend_extension'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
linux = await extensions.addExtension('pcov', '5.6', 'linux');
|
it.each`
|
||||||
expect(linux).toContain(
|
extension | version | output
|
||||||
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
${'xdebug'} | ${'7.2'} | ${'Platform openbsd is not supported'}
|
||||||
);
|
`(
|
||||||
|
'checking addExtension on openbsd for extension $extension on version $version',
|
||||||
linux = await extensions.addExtension('gearman', '5.6', 'linux');
|
async ({extension, version, output}) => {
|
||||||
expect(linux).toContain('add_gearman');
|
expect(
|
||||||
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
await extensions.addExtension(extension, version, 'openbsd')
|
||||||
expect(linux).toContain('add_gearman');
|
).toContain(output);
|
||||||
|
}
|
||||||
linux = await extensions.addExtension('couchbase', '5.6', 'linux');
|
|
||||||
expect(linux).toContain('add_couchbase');
|
|
||||||
linux = await extensions.addExtension('couchbase', '7.4', 'linux');
|
|
||||||
expect(linux).toContain('add_couchbase');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('pdo_cubrid', '7.0', 'linux');
|
|
||||||
expect(linux).toContain('add_cubrid pdo_cubrid');
|
|
||||||
linux = await extensions.addExtension('cubrid', '7.4', 'linux');
|
|
||||||
expect(linux).toContain('add_cubrid cubrid');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('xdebug2', '7.2', 'linux');
|
|
||||||
expect(linux).toContain('add_pecl_extension xdebug 2.9.8 zend_extension');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
|
||||||
expect(linux).toContain('Platform openbsd is not supported');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_phalcon phalcon3');
|
|
||||||
expect(linux).toContain('add_phalcon phalcon4');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('ioncube', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_ioncube');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('geos', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_geos');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('pecl_http', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_http');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('http-1.2.3', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_http http-1.2.3');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('oci8, pdo_oci', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_oci oci8');
|
|
||||||
expect(linux).toContain('add_oci pdo_oci');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('blackfire', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_blackfire blackfire');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_blackfire blackfire-1.31.0');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('intl-65.1', '5.6', 'linux');
|
|
||||||
expect(linux).toContain('add_intl intl-65.1');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('intl-67.1', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('add_intl intl-67.1');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('intl-68.2', '8.0', 'linux');
|
|
||||||
expect(linux).toContain('add_intl intl-68.2');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension(
|
|
||||||
'mongodb-mongodb/mongo-php-driver@master',
|
|
||||||
'7.3',
|
|
||||||
'linux'
|
|
||||||
);
|
|
||||||
expect(linux).toContain(
|
|
||||||
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addExtensionOnDarwin', async () => {
|
|
||||||
let darwin: string = await extensions.addExtension(
|
|
||||||
'none, amqp, apcu, expect, Xdebug, pcov, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, phalcon3, phalcon4, protobuf, psr, rdkafka, redis, ssh2, swoole, vips, yaml, sqlite, oci8, pdo_oci, :intl, ast-beta, grpc-1.2.3',
|
|
||||||
'7.2',
|
|
||||||
'darwin'
|
|
||||||
);
|
|
||||||
expect(darwin).toContain('disable_all_shared');
|
|
||||||
expect(darwin).toContain('add_brew_extension amqp extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension apcu extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension expect extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension xdebug zend_extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension pcov extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension grpc extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension igbinary extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension imagick extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension imap extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension memcache extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension memcached extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension mongodb extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension msgpack extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension phalcon3 extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension phalcon4 extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension protobuf extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension psr extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension rdkafka extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension redis extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension ssh2 extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension swoole extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension vips extension');
|
|
||||||
expect(darwin).toContain('add_brew_extension yaml extension');
|
|
||||||
expect(darwin).toContain('add_extension sqlite3');
|
|
||||||
expect(darwin).toContain('disable_extension intl');
|
|
||||||
expect(darwin).toContain('add_unstable_extension ast beta extension');
|
|
||||||
expect(darwin).toContain('add_pecl_extension grpc 1.2.3 extension');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('couchbase', '5.6', 'darwin');
|
|
||||||
expect(darwin).toContain('add_couchbase');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('couchbase', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_couchbase');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('ioncube', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_ioncube');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('geos', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_geos');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('pecl_http', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_http');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('http-1.2.3', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_http http-1.2.3');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('oci8, pdo_oci', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_oci oci8');
|
|
||||||
expect(darwin).toContain('add_oci pdo_oci');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('pcov', '5.6', 'darwin');
|
|
||||||
expect(darwin).toContain(
|
|
||||||
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
|
||||||
);
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('pcov', '7.2', 'darwin');
|
|
||||||
expect(darwin).toContain('add_brew_extension pcov');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
|
|
||||||
expect(darwin).toContain('add_brew_extension xdebug');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.0', 'darwin');
|
|
||||||
expect(darwin).toContain('add_brew_extension xdebug');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
|
|
||||||
expect(darwin).toContain('add_brew_extension xdebug');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug2', '7.2', 'darwin');
|
|
||||||
expect(darwin).toContain('add_brew_extension xdebug2');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('imagick', '5.5', 'darwin');
|
|
||||||
expect(darwin).toContain('add_extension imagick');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('blackfire', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_blackfire blackfire');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('blackfire-1.31.0', '7.3', 'darwin');
|
|
||||||
expect(darwin).toContain('add_blackfire blackfire-1.31.0');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension(
|
|
||||||
'does_not_exist',
|
|
||||||
'7.2',
|
|
||||||
'darwin',
|
|
||||||
false
|
|
||||||
);
|
|
||||||
expect(darwin).toContain('add_extension does_not_exist');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
|
||||||
expect(darwin).toContain('Platform openbsd is not supported');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension(
|
|
||||||
'mongodb-mongodb/mongo-php-driver@master',
|
|
||||||
'7.3',
|
|
||||||
'darwin'
|
|
||||||
);
|
|
||||||
expect(darwin).toContain(
|
|
||||||
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
@ -5,26 +5,18 @@ import * as utils from '../src/utils';
|
|||||||
* Mock install.ts
|
* Mock install.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/install', () => ({
|
jest.mock('../src/install', () => ({
|
||||||
getScript: jest
|
getScript: jest.fn().mockImplementation(async (): Promise<string> => {
|
||||||
.fn()
|
|
||||||
.mockImplementation(
|
|
||||||
async (
|
|
||||||
filename: string,
|
|
||||||
version: string,
|
|
||||||
os_version: string
|
|
||||||
): Promise<string> => {
|
|
||||||
const extension_csv: string = process.env['extensions'] || '';
|
const extension_csv: string = process.env['extensions'] || '';
|
||||||
const ini_values_csv: string = process.env['ini-values'] || '';
|
const ini_values_csv: string = process.env['ini-values'] || '';
|
||||||
const coverage_driver: string = process.env['coverage'] || '';
|
const coverage_driver: string = process.env['coverage'] || '';
|
||||||
let tools_csv: string = process.env['tools'] || '';
|
const tools_csv: string = process.env['tools'] || '';
|
||||||
let script = 'initial script ' + filename + version + os_version;
|
let script = 'initial script';
|
||||||
script += tools_csv ? ' add_tool' : '';
|
script += tools_csv ? ' add_tool' : '';
|
||||||
script += extension_csv ? ' install extensions' : '';
|
script += extension_csv ? ' install extensions' : '';
|
||||||
script += coverage_driver ? ' set coverage driver' : '';
|
script += coverage_driver ? ' set coverage driver' : '';
|
||||||
script += ini_values_csv ? ' edit php.ini' : '';
|
script += ini_values_csv ? ' edit php.ini' : '';
|
||||||
return script;
|
return script;
|
||||||
}
|
}),
|
||||||
),
|
|
||||||
run: jest.fn().mockImplementation(async (): Promise<string> => {
|
run: jest.fn().mockImplementation(async (): Promise<string> => {
|
||||||
const os_version: string = process.env['RUNNER_OS'] || '';
|
const os_version: string = process.env['RUNNER_OS'] || '';
|
||||||
const version: string = await utils.parseVersion(
|
const version: string = await utils.parseVersion(
|
||||||
@ -69,93 +61,41 @@ function setEnv(
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe('Install', () => {
|
describe('Install', () => {
|
||||||
it('Test install on windows', async () => {
|
it.each`
|
||||||
setEnv('7.0', 'win32', '', '', '', '');
|
version | os | extension_csv | ini_values_csv | coverage_driver | tools | output
|
||||||
|
${'7.3'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash darwin.sh 7.3 ' + __dirname}
|
||||||
|
${'7.3'} | ${'darwin'} | ${'a, b'} | ${'a=b'} | ${'x'} | ${''} | ${'initial script install extensions set coverage driver edit php.ini bash darwin.sh 7.3 ' + __dirname}
|
||||||
|
${'7.4.1'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash darwin.sh 7.4 ' + __dirname}
|
||||||
|
${'8'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash darwin.sh 8.0 ' + __dirname}
|
||||||
|
${'8.0'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash darwin.sh 8.0 ' + __dirname}
|
||||||
|
${'8.1'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash darwin.sh 8.1 ' + __dirname}
|
||||||
|
${'7.3'} | ${'linux'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash linux.sh 7.3 ' + __dirname}
|
||||||
|
${'7.3'} | ${'linux'} | ${'a, b'} | ${'a=b'} | ${'x'} | ${'phpunit'} | ${'initial script add_tool install extensions set coverage driver edit php.ini bash linux.sh 7.3 ' + __dirname}
|
||||||
|
${'latest'} | ${'linux'} | ${''} | ${''} | ${''} | ${''} | ${'initial script bash linux.sh 8.1 ' + __dirname}
|
||||||
|
${'7.0'} | ${'win32'} | ${''} | ${''} | ${''} | ${''} | ${'initial script pwsh win32.ps1 7.0 ' + __dirname}
|
||||||
|
${'7.3'} | ${'win32'} | ${''} | ${''} | ${''} | ${''} | ${'initial script pwsh win32.ps1 7.3 ' + __dirname}
|
||||||
|
${'7.3'} | ${'win32'} | ${'a, b'} | ${'a=b'} | ${'x'} | ${''} | ${'initial script install extensions set coverage driver edit php.ini pwsh win32.ps1 7.3 ' + __dirname}
|
||||||
|
`(
|
||||||
|
'Test install on $os for $version with extensions=$extension_csv, ini_values=$ini_values_csv, coverage_driver=$coverage_driver, tools=$tools',
|
||||||
|
async ({
|
||||||
|
version,
|
||||||
|
os,
|
||||||
|
extension_csv,
|
||||||
|
ini_values_csv,
|
||||||
|
coverage_driver,
|
||||||
|
tools,
|
||||||
|
output
|
||||||
|
}) => {
|
||||||
|
setEnv(
|
||||||
|
version,
|
||||||
|
os,
|
||||||
|
extension_csv,
|
||||||
|
ini_values_csv,
|
||||||
|
coverage_driver,
|
||||||
|
tools
|
||||||
|
);
|
||||||
|
|
||||||
let script: string = '' + (await install.run());
|
expect(await install.run()).toBe(output);
|
||||||
expect(script).toContain('initial script');
|
}
|
||||||
expect(script).toContain('pwsh win32.ps1 7.0 ' + __dirname);
|
);
|
||||||
|
|
||||||
setEnv('7.3', 'win32', '', '', '', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('install extensions');
|
|
||||||
expect(script).toContain('edit php.ini');
|
|
||||||
expect(script).toContain('set coverage driver');
|
|
||||||
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Test install on linux', async () => {
|
|
||||||
setEnv('7.3', 'linux', '', '', '', '');
|
|
||||||
|
|
||||||
let script: string = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash linux.sh 7.3 ');
|
|
||||||
|
|
||||||
setEnv('latest', 'linux', '', '', '', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash linux.sh 8.0 ');
|
|
||||||
|
|
||||||
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('install extensions');
|
|
||||||
expect(script).toContain('edit php.ini');
|
|
||||||
expect(script).toContain('set coverage driver');
|
|
||||||
expect(script).toContain('bash linux.sh 7.3');
|
|
||||||
expect(script).toContain('add_tool');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Test install on darwin', async () => {
|
|
||||||
setEnv('7.3', 'darwin', '', '', '', '');
|
|
||||||
|
|
||||||
let script: string = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('install extensions');
|
|
||||||
expect(script).toContain('edit php.ini');
|
|
||||||
expect(script).toContain('set coverage driver');
|
|
||||||
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Test malformed version inputs', async () => {
|
|
||||||
setEnv('7.4.1', 'darwin', '', '', '', '');
|
|
||||||
|
|
||||||
let script: string = '' + '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash darwin.sh 7.4 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv(8.0, 'darwin', '', '', '', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv(8, 'darwin', '', '', '', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv(8.1, 'darwin', '', '', '', '');
|
|
||||||
|
|
||||||
script = '' + (await install.run());
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('bash darwin.sh 8.1 ' + __dirname);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
@ -373,7 +373,7 @@ describe('Tools tests', () => {
|
|||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
[
|
[
|
||||||
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, phpunit-bridge, php-config, phpize, protoc, symfony, vapor, wp',
|
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, parallel-lint, php-cs-fixer, phpDocumentor, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, phpunit-bridge, phpunit-polyfills, php-config, phpize, protoc, symfony, vapor, wp',
|
||||||
[
|
[
|
||||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||||
'add_blackfire',
|
'add_blackfire',
|
||||||
@ -381,7 +381,9 @@ describe('Tools tests', () => {
|
|||||||
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"',
|
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"',
|
||||||
'add_composertool flex flex symfony/',
|
'add_composertool flex flex symfony/',
|
||||||
'add_grpc_php_plugin latest',
|
'add_grpc_php_plugin latest',
|
||||||
|
'add_tool https://github.com/php-parallel-lint/PHP-Parallel-Lint/releases/latest/download/parallel-lint.phar parallel-lint "--version"',
|
||||||
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.2.1/php-cs-fixer.phar php-cs-fixer "-V"',
|
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.2.1/php-cs-fixer.phar php-cs-fixer "-V"',
|
||||||
|
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
||||||
'add_composertool phplint phplint overtrue/',
|
'add_composertool phplint phplint overtrue/',
|
||||||
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"',
|
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"',
|
||||||
'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"',
|
'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"',
|
||||||
@ -391,6 +393,7 @@ describe('Tools tests', () => {
|
|||||||
'add_composertool phinx phinx:1.2.3 robmorgan/',
|
'add_composertool phinx phinx:1.2.3 robmorgan/',
|
||||||
'add_tool https://phar.io/releases/phive.phar phive "status"',
|
'add_tool https://phar.io/releases/phive.phar phive "status"',
|
||||||
'add_composertool phpunit-bridge phpunit-bridge symfony/',
|
'add_composertool phpunit-bridge phpunit-bridge symfony/',
|
||||||
|
'add_composertool phpunit-polyfills phpunit-polyfills yoast/',
|
||||||
'add_devtools php-config',
|
'add_devtools php-config',
|
||||||
'add_devtools phpize',
|
'add_devtools phpize',
|
||||||
'add_protoc latest',
|
'add_protoc latest',
|
||||||
@ -408,7 +411,7 @@ describe('Tools tests', () => {
|
|||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
[
|
[
|
||||||
'behat, blackfire, blackfire-player, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, flex, grpc_php_plugin:1.2.3, infection, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpize, phpmd, phpspec, phpunit-bridge:5.6, protoc:v1.2.3, psalm, symfony-cli, symfony:1.2.3, vapor-cli, wp-cli',
|
'behat, blackfire, blackfire-player, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, flex, grpc_php_plugin:1.2.3, infection, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpdoc, phpize, phpmd, phpspec, phpunit-bridge:5.6, phpunit-polyfills:1.0.1, protoc:v1.2.3, psalm, symfony-cli, symfony:1.2.3, vapor-cli, wp-cli',
|
||||||
[
|
[
|
||||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||||
'add_composertool behat behat behat/',
|
'add_composertool behat behat behat/',
|
||||||
@ -430,10 +433,12 @@ describe('Tools tests', () => {
|
|||||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"',
|
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"',
|
||||||
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"',
|
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"',
|
||||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"',
|
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"',
|
||||||
|
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
||||||
'add_devtools phpize',
|
'add_devtools phpize',
|
||||||
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"',
|
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"',
|
||||||
'add_composertool phpspec phpspec phpspec/',
|
'add_composertool phpspec phpspec phpspec/',
|
||||||
'add_composertool phpunit-bridge phpunit-bridge:5.6.* symfony/',
|
'add_composertool phpunit-bridge phpunit-bridge:5.6.* symfony/',
|
||||||
|
'add_composertool phpunit-polyfills phpunit-polyfills:1.0.1 yoast/',
|
||||||
'add_protoc 1.2.3',
|
'add_protoc 1.2.3',
|
||||||
'add_tool https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"',
|
'add_tool https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"',
|
||||||
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony-cli "version"',
|
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony-cli "version"',
|
||||||
|
@ -64,7 +64,7 @@ describe('Utils tests', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
expect(await utils.parseVersion('latest')).toBe('8.0');
|
expect(await utils.parseVersion('latest')).toBe('8.1');
|
||||||
expect(await utils.parseVersion('7')).toBe('7.0');
|
expect(await utils.parseVersion('7')).toBe('7.0');
|
||||||
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
||||||
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
||||||
|
@ -7,7 +7,7 @@ branding:
|
|||||||
inputs:
|
inputs:
|
||||||
php-version:
|
php-version:
|
||||||
description: 'Setup PHP version.'
|
description: 'Setup PHP version.'
|
||||||
default: '8.0'
|
default: '8.1'
|
||||||
required: true
|
required: true
|
||||||
extensions:
|
extensions:
|
||||||
description: 'Setup PHP extensions.'
|
description: 'Setup PHP extensions.'
|
||||||
|
4
dist/index.js
vendored
4
dist/index.js
vendored
@ -221,6 +221,7 @@ async function addExtensionDarwin(extension_csv, version) {
|
|||||||
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
||||||
|
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
||||||
add_script += await utils.customPackage(ext_name, 'ext', extension, 'darwin');
|
add_script += await utils.customPackage(ext_name, 'ext', extension, 'darwin');
|
||||||
return;
|
return;
|
||||||
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
||||||
@ -235,8 +236,7 @@ async function addExtensionDarwin(extension_csv, version) {
|
|||||||
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(version_extension):
|
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(version_extension):
|
||||||
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
||||||
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
case /(?<!5\.[3-6])(vips|xlswriter)/.test(version_extension):
|
||||||
case /(?<!5\.[3-6])vips/.test(version_extension):
|
|
||||||
add_script += await utils.joins('\nadd_brew_extension', ext_name, ext_prefix);
|
add_script += await utils.joins('\nadd_brew_extension', ext_name, ext_prefix);
|
||||||
return;
|
return;
|
||||||
case /^sqlite$/.test(extension):
|
case /^sqlite$/.test(extension):
|
||||||
|
2390
package-lock.json
generated
2390
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
29
package.json
29
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "2.14.0",
|
"version": "2.15.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Setup PHP for use with GitHub Actions",
|
"description": "Setup PHP for use with GitHub Actions",
|
||||||
"main": "lib/install.js",
|
"main": "lib/install.js",
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"lint": "eslint **/src/*.ts --cache --fix",
|
"lint": "eslint **/src/*.ts --cache --fix",
|
||||||
"format": "prettier --write **/src/*.ts && git add .",
|
"format": "prettier --write **/src/*.ts && git add -f src/",
|
||||||
"format-check": "prettier --check **/src/*.ts",
|
"format-check": "prettier --check **/src/*.ts",
|
||||||
"release": "ncc build -o dist && git add -f dist/",
|
"release": "ncc build -o dist && git add -f dist/",
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
@ -40,30 +40,27 @@
|
|||||||
"fs": "0.0.1-security"
|
"fs": "0.0.1-security"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^27.0.1",
|
"@types/jest": "^27.0.2",
|
||||||
"@types/node": "^16.9.1",
|
"@types/node": "^16.10.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.31.0",
|
"@typescript-eslint/eslint-plugin": "^4.32.0",
|
||||||
"@typescript-eslint/parser": "^4.31.0",
|
"@typescript-eslint/parser": "^4.32.0",
|
||||||
"@vercel/ncc": "^0.31.0",
|
"@vercel/ncc": "^0.31.1",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-import": "^2.24.2",
|
"eslint-plugin-import": "^2.24.2",
|
||||||
"eslint-plugin-jest": "^24.4.0",
|
"eslint-plugin-jest": "^24.4.2",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"husky": "^4.3.8",
|
"jest": "^27.2.2",
|
||||||
"jest": "^27.1.1",
|
"jest-circus": "^27.2.2",
|
||||||
"jest-circus": "^27.1.1",
|
"prettier": "^2.4.1",
|
||||||
"prettier": "^2.4.0",
|
"simple-git-hooks": "^2.6.1",
|
||||||
"ts-jest": "^27.0.5",
|
"ts-jest": "^27.0.5",
|
||||||
"typescript": "^4.4.3"
|
"typescript": "^4.4.3"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/shivammathur/setup-php/issues"
|
"url": "https://github.com/shivammathur/setup-php/issues"
|
||||||
},
|
},
|
||||||
"husky": {
|
"simple-git-hooks": {
|
||||||
"skipCI": true,
|
|
||||||
"hooks": {
|
|
||||||
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
29
src/configs/brew_extensions
Normal file
29
src/configs/brew_extensions
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
amqp=amqp
|
||||||
|
apcu=apcu
|
||||||
|
expect=expect
|
||||||
|
grpc=grpc
|
||||||
|
igbinary=igbinary
|
||||||
|
imagick=imagick
|
||||||
|
imap=imap
|
||||||
|
memcache=memcache
|
||||||
|
memcached=memcached
|
||||||
|
mongodb=mongodb
|
||||||
|
msgpack=msgpack
|
||||||
|
pcov=pcov
|
||||||
|
pecl_http=http
|
||||||
|
phalcon3=phalcon
|
||||||
|
phalcon4=phalcon
|
||||||
|
propro=propro
|
||||||
|
protobuf=protobuf
|
||||||
|
psr=psr
|
||||||
|
raphf=raphf
|
||||||
|
rdkafka=rdkafka
|
||||||
|
redis=redis
|
||||||
|
ssh2=ssh2
|
||||||
|
swoole=swoole
|
||||||
|
vips=vips
|
||||||
|
xdebug=xdebug
|
||||||
|
xdebug2=xdebug
|
||||||
|
xlswriter=xlswriter
|
||||||
|
yaml=yaml
|
||||||
|
zmq=zmq
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"latest": "8.0",
|
"latest": "8.1",
|
||||||
"nightly": "8.2",
|
"nightly": "8.2",
|
||||||
"5.x": "5.6",
|
"5.x": "5.6",
|
||||||
"7.x": "7.4",
|
"7.x": "7.4",
|
||||||
"8.x": "8.0"
|
"8.x": "8.1"
|
||||||
}
|
}
|
@ -31,6 +31,14 @@
|
|||||||
"version_prefix": "",
|
"version_prefix": "",
|
||||||
"version_parameter": "-v"
|
"version_parameter": "-v"
|
||||||
},
|
},
|
||||||
|
"parallel-lint": {
|
||||||
|
"type": "phar",
|
||||||
|
"repository": "php-parallel-lint/PHP-Parallel-Lint",
|
||||||
|
"extension": ".phar",
|
||||||
|
"domain": "https://github.com",
|
||||||
|
"version_prefix": "v",
|
||||||
|
"version_parameter": "--version"
|
||||||
|
},
|
||||||
"php-cs-fixer": {
|
"php-cs-fixer": {
|
||||||
"type": "phar",
|
"type": "phar",
|
||||||
"repository": "FriendsOfPHP/PHP-CS-Fixer",
|
"repository": "FriendsOfPHP/PHP-CS-Fixer",
|
||||||
@ -56,6 +64,15 @@
|
|||||||
"version_prefix": "",
|
"version_prefix": "",
|
||||||
"version_parameter": "--version"
|
"version_parameter": "--version"
|
||||||
},
|
},
|
||||||
|
"phpDocumentor": {
|
||||||
|
"type": "phar",
|
||||||
|
"repository": "phpDocumentor/phpDocumentor",
|
||||||
|
"extension": ".phar",
|
||||||
|
"domain": "https://github.com",
|
||||||
|
"alias": "phpdoc",
|
||||||
|
"version_prefix": "v",
|
||||||
|
"version_parameter": "--version"
|
||||||
|
},
|
||||||
"phpmd": {
|
"phpmd": {
|
||||||
"type": "phar",
|
"type": "phar",
|
||||||
"repository": "phpmd/phpmd",
|
"repository": "phpmd/phpmd",
|
||||||
@ -122,6 +139,10 @@
|
|||||||
"type": "composer",
|
"type": "composer",
|
||||||
"repository": "symfony/phpunit-bridge"
|
"repository": "symfony/phpunit-bridge"
|
||||||
},
|
},
|
||||||
|
"phpunit-polyfills": {
|
||||||
|
"type": "composer",
|
||||||
|
"repository": "yoast/phpunit-polyfills"
|
||||||
|
},
|
||||||
"prestissimo": {
|
"prestissimo": {
|
||||||
"type": "composer",
|
"type": "composer",
|
||||||
"repository": "hirak/prestissimo"
|
"repository": "hirak/prestissimo"
|
||||||
@ -201,7 +222,7 @@
|
|||||||
"type": "custom-function",
|
"type": "custom-function",
|
||||||
"repository": "sebastianbergmann/phpunit",
|
"repository": "sebastianbergmann/phpunit",
|
||||||
"domain": "https://phar.phpunit.de",
|
"domain": "https://phar.phpunit.de",
|
||||||
"function": "phpcpd",
|
"function": "phpunit",
|
||||||
"version_prefix": "",
|
"version_prefix": "",
|
||||||
"version_parameter": "--version"
|
"version_parameter": "--version"
|
||||||
},
|
},
|
||||||
|
@ -43,6 +43,7 @@ export async function addExtensionDarwin(
|
|||||||
extension
|
extension
|
||||||
):
|
):
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
||||||
|
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
||||||
add_script += await utils.customPackage(
|
add_script += await utils.customPackage(
|
||||||
ext_name,
|
ext_name,
|
||||||
'ext',
|
'ext',
|
||||||
@ -75,14 +76,13 @@ export async function addExtensionDarwin(
|
|||||||
// match 5.6 and newer - amqp, apcu, expect, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
// match 5.6 and newer - amqp, apcu, expect, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
||||||
// match 7.1 and newer - pcov
|
// match 7.1 and newer - pcov
|
||||||
// match 5.6 to 7.4 - propro
|
// match 5.6 to 7.4 - propro
|
||||||
// match 7.0 and newer - vips
|
// match 7.0 and newer - vips, xlswriter
|
||||||
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
||||||
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
case /(?<!5\.[3-6])(vips|xlswriter)/.test(version_extension):
|
||||||
case /(?<!5\.[3-6])vips/.test(version_extension):
|
|
||||||
add_script += await utils.joins(
|
add_script += await utils.joins(
|
||||||
'\nadd_brew_extension',
|
'\nadd_brew_extension',
|
||||||
ext_name,
|
ext_name,
|
||||||
|
@ -94,7 +94,7 @@ self_hosted_setup() {
|
|||||||
|
|
||||||
# Function to test if extension is loaded.
|
# Function to test if extension is loaded.
|
||||||
check_extension() {
|
check_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
if [ "$extension" != "mysql" ]; then
|
if [ "$extension" != "mysql" ]; then
|
||||||
php -m | grep -i -q -w "$extension"
|
php -m | grep -i -q -w "$extension"
|
||||||
else
|
else
|
||||||
@ -107,24 +107,20 @@ shared_extension() {
|
|||||||
[ -e "${ext_dir:?}/$1.so" ]
|
[ -e "${ext_dir:?}/$1.so" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable cached extensions.
|
# Function to enable cached extension's dependencies.
|
||||||
enable_cache_extension() {
|
enable_cache_extension_dependencies() {
|
||||||
deps=()
|
if [ -d /tmp/extcache ] && shared_extension "$1"; then
|
||||||
for ext in /tmp/extcache/"$1"/*; do
|
cache_dir=$(find /tmp/extcache -maxdepth 1 -type d -regex ".*$1[0-9]*")
|
||||||
deps+=("$(basename "$ext")")
|
if [[ -n "$cache_dir" ]]; then
|
||||||
done
|
IFS=" " read -r -a deps <<<"$(find "$cache_dir" -maxdepth 1 -type f -name "*" -exec basename {} \; | tr '\n' ' ')"
|
||||||
if [ "x${deps[*]}" = "x" ]; then
|
if [[ -n "${deps[*]}" ]] && php "${deps[@]/#/-d ${2}=}" -d "${2}=$1" -m 2>/dev/null | grep -i -q "$1"; then
|
||||||
sudo rm -rf /tmp/extcache/"$1"
|
|
||||||
enable_extension "$1" "$2"
|
|
||||||
else
|
|
||||||
deps+=("$1")
|
|
||||||
if php "${deps[@]/#/-d ${2}=}" -m 2>/dev/null | grep -i -q "$1"; then
|
|
||||||
for ext in "${deps[@]}"; do
|
for ext in "${deps[@]}"; do
|
||||||
sudo rm -rf /tmp/extcache/"$ext"
|
sudo rm -rf /tmp/extcache/"$ext"
|
||||||
enable_extension "$ext" "$2"
|
enable_extension "$ext" "$2"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable existing extensions.
|
# Function to enable existing extensions.
|
||||||
@ -132,9 +128,8 @@ enable_extension() {
|
|||||||
modules_dir="/var/lib/php/modules/$version"
|
modules_dir="/var/lib/php/modules/$version"
|
||||||
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
||||||
enable_extension_dependencies "$1" "$2"
|
enable_extension_dependencies "$1" "$2"
|
||||||
if [ -d /tmp/extcache/"$1" ]; then
|
enable_cache_extension_dependencies "$1" "$2"
|
||||||
enable_cache_extension "$1" "$2"
|
if ! check_extension "$1" && shared_extension "$1"; then
|
||||||
elif ! check_extension "$1" && shared_extension "$1"; then
|
|
||||||
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -146,7 +141,7 @@ get_extension_map() {
|
|||||||
|
|
||||||
# Function to enable extension dependencies which are also extensions.
|
# Function to enable extension dependencies which are also extensions.
|
||||||
enable_extension_dependencies() {
|
enable_extension_dependencies() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
prefix=$2
|
prefix=$2
|
||||||
if ! [ -e /tmp/map.orig ]; then
|
if ! [ -e /tmp/map.orig ]; then
|
||||||
get_extension_map | sudo tee /tmp/map.orig >/dev/null
|
get_extension_map | sudo tee /tmp/map.orig >/dev/null
|
||||||
@ -167,7 +162,7 @@ disable_extension_dependents() {
|
|||||||
|
|
||||||
# Function to disable an extension.
|
# Function to disable an extension.
|
||||||
disable_extension() {
|
disable_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
if check_extension "$extension"; then
|
if check_extension "$extension"; then
|
||||||
if shared_extension "$extension"; then
|
if shared_extension "$extension"; then
|
||||||
disable_extension_helper "$extension" true
|
disable_extension_helper "$extension" true
|
||||||
@ -212,7 +207,7 @@ configure_pecl() {
|
|||||||
|
|
||||||
# Function to get the PECL version of an extension.
|
# Function to get the PECL version of an extension.
|
||||||
get_pecl_version() {
|
get_pecl_version() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
||||||
pecl_rest='https://pecl.php.net/rest/r/'
|
pecl_rest='https://pecl.php.net/rest/r/'
|
||||||
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
||||||
@ -232,7 +227,7 @@ pecl_install() {
|
|||||||
|
|
||||||
# Function to install a specific version of PECL extension.
|
# Function to install a specific version of PECL extension.
|
||||||
add_pecl_extension() {
|
add_pecl_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
pecl_version=$2
|
pecl_version=$2
|
||||||
prefix=$3
|
prefix=$3
|
||||||
enable_extension "$extension" "$prefix"
|
enable_extension "$extension" "$prefix"
|
||||||
@ -251,7 +246,7 @@ add_pecl_extension() {
|
|||||||
|
|
||||||
# Function to setup pre-release extensions using PECL.
|
# Function to setup pre-release extensions using PECL.
|
||||||
add_unstable_extension() {
|
add_unstable_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
stability=$2
|
stability=$2
|
||||||
prefix=$3
|
prefix=$3
|
||||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
pecl_version=$(get_pecl_version "$extension" "$stability")
|
||||||
|
@ -7,6 +7,18 @@ self_hosted_helper() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Disable dependency extensions
|
||||||
|
disable_dependency_extensions() {
|
||||||
|
local extension=$1
|
||||||
|
formula_file="$tap_dir/$ext_tap/Formula/$extension@${version:?}.rb"
|
||||||
|
if [ -e "$formula_file" ]; then
|
||||||
|
IFS=" " read -r -a dependency_extensions <<< "$(grep -Eo "shivammathur.*@" "$formula_file" | xargs -I {} -n 1 basename '{}' | cut -d '@' -f 1 | tr '\n' ' ')"
|
||||||
|
for dependency_extension in "${dependency_extensions[@]}"; do
|
||||||
|
sudo sed -Ei '' "/=(.*\/)?\"?$dependency_extension(.so)?$/d" "${ini_file:?}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Helper function to disable an extension.
|
# Helper function to disable an extension.
|
||||||
disable_extension_helper() {
|
disable_extension_helper() {
|
||||||
local extension=$1
|
local extension=$1
|
||||||
@ -49,15 +61,17 @@ add_brew_tap() {
|
|||||||
add_brew_extension() {
|
add_brew_extension() {
|
||||||
formula=$1
|
formula=$1
|
||||||
prefix=$2
|
prefix=$2
|
||||||
extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
extension=$(grep "$formula=" "$dist"/../src/configs/brew_extensions | cut -d '=' -f 2)
|
||||||
|
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
||||||
enable_extension "$extension" "$prefix"
|
enable_extension "$extension" "$prefix"
|
||||||
if check_extension "$extension"; then
|
if check_extension "$extension"; then
|
||||||
add_log "${tick:?}" "$extension" "Enabled"
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
else
|
else
|
||||||
add_brew_tap shivammathur/homebrew-php
|
add_brew_tap "$php_tap"
|
||||||
add_brew_tap shivammathur/homebrew-extensions
|
add_brew_tap "$ext_tap"
|
||||||
sudo mv "$tap_dir"/shivammathur/homebrew-extensions/.github/deps/"$formula"/* "$tap_dir/homebrew/homebrew-core/Formula/" 2>/dev/null || true
|
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$core_repo/Formula/" 2>/dev/null || true
|
||||||
update_dependencies >/dev/null 2>&1
|
update_dependencies >/dev/null 2>&1
|
||||||
|
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
||||||
brew install -f "$formula@$version" >/dev/null 2>&1
|
brew install -f "$formula@$version" >/dev/null 2>&1
|
||||||
sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
|
sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
|
||||||
add_extension_log "$extension" "Installed and enabled"
|
add_extension_log "$extension" "Installed and enabled"
|
||||||
@ -66,7 +80,7 @@ add_brew_extension() {
|
|||||||
|
|
||||||
# Function to setup extensions.
|
# Function to setup extensions.
|
||||||
add_extension() {
|
add_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
prefix=$2
|
prefix=$2
|
||||||
enable_extension "$extension" "$prefix"
|
enable_extension "$extension" "$prefix"
|
||||||
if check_extension "$extension"; then
|
if check_extension "$extension"; then
|
||||||
@ -118,19 +132,23 @@ patch_brew() {
|
|||||||
# Helper function to update the dependencies.
|
# Helper function to update the dependencies.
|
||||||
update_dependencies_helper() {
|
update_dependencies_helper() {
|
||||||
dependency=$1
|
dependency=$1
|
||||||
get -q -n "$tap_dir/homebrew/homebrew-core/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
|
get -q -n "$core_repo/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
|
||||||
link_libraries "$dependency"
|
link_libraries "$dependency"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to update dependencies.
|
# Function to update dependencies.
|
||||||
update_dependencies() {
|
update_dependencies() {
|
||||||
if ! [ -e /tmp/update_dependencies ] && [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
if ! [ -e /tmp/update_dependencies ]; then
|
||||||
|
if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
||||||
patch_brew
|
patch_brew
|
||||||
while read -r dependency; do
|
while read -r dependency; do
|
||||||
update_dependencies_helper "$dependency" &
|
update_dependencies_helper "$dependency" &
|
||||||
to_wait+=($!)
|
to_wait+=($!)
|
||||||
done <"$tap_dir/shivammathur/homebrew-php/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
done <"$tap_dir/$php_tap/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
||||||
wait "${to_wait[@]}"
|
wait "${to_wait[@]}"
|
||||||
|
else
|
||||||
|
git -C "$core_repo" fetch origin master && git -C "$core_repo" reset --hard origin/master
|
||||||
|
fi
|
||||||
echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
|
echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -160,7 +178,7 @@ get_brewed_php() {
|
|||||||
add_php() {
|
add_php() {
|
||||||
action=$1
|
action=$1
|
||||||
existing_version=$2
|
existing_version=$2
|
||||||
add_brew_tap shivammathur/homebrew-php
|
add_brew_tap "$php_tap"
|
||||||
update_dependencies
|
update_dependencies
|
||||||
if [ "$existing_version" != "false" ]; then
|
if [ "$existing_version" != "false" ]; then
|
||||||
([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
|
([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
|
||||||
@ -172,8 +190,8 @@ add_php() {
|
|||||||
|
|
||||||
# Function to get extra version.
|
# Function to get extra version.
|
||||||
php_extra_version() {
|
php_extra_version() {
|
||||||
php_formula_file="$tap_dir"/shivammathur/homebrew-php/Formula/php@"$version".rb
|
php_formula_file="$tap_dir"/"$php_tap"/Formula/php@"$version".rb
|
||||||
if [ -e "$php_formula_file" ] && ! grep -q "deprecate!" $php_formula_file && grep -Eq "archive/[0-9a-zA-Z]+" "$php_formula_file"; then
|
if [ -e "$php_formula_file" ] && ! grep -q "deprecate!" "$php_formula_file" && grep -Eq "archive/[0-9a-zA-Z]+" "$php_formula_file"; then
|
||||||
echo " ($(grep -Eo "archive/[0-9a-zA-Z]+" "$php_formula_file" | cut -d'/' -f 2))"
|
echo " ($(grep -Eo "archive/[0-9a-zA-Z]+" "$php_formula_file" | cut -d'/' -f 2))"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -208,7 +226,7 @@ setup_php() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
|
sudo cp "$dist"/../src/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
||||||
echo "::set-output name=php-version::$semver"
|
echo "::set-output name=php-version::$semver"
|
||||||
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
||||||
}
|
}
|
||||||
@ -220,7 +238,10 @@ php_formula=shivammathur/php/php@"$version"
|
|||||||
brew_prefix="$(brew --prefix)"
|
brew_prefix="$(brew --prefix)"
|
||||||
brew_repo="$(brew --repository)"
|
brew_repo="$(brew --repository)"
|
||||||
tap_dir="$brew_repo"/Library/Taps
|
tap_dir="$brew_repo"/Library/Taps
|
||||||
|
core_repo="$tap_dir"/homebrew/homebrew-core
|
||||||
scripts="${dist}"/../src/scripts
|
scripts="${dist}"/../src/scripts
|
||||||
|
ext_tap=shivammathur/homebrew-extensions
|
||||||
|
php_tap=shivammathur/homebrew-php
|
||||||
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
||||||
export HOMEBREW_DEVELOPER=1
|
export HOMEBREW_DEVELOPER=1
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
# Function to install blackfire extension.
|
# Function to install blackfire extension.
|
||||||
add_blackfire() {
|
add_blackfire() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
version=${version:?}
|
version=${version:?}
|
||||||
no_dot_version=${version/./}
|
no_dot_version=${version/./}
|
||||||
platform=$(uname -s | tr '[:upper:]' '[:lower:]')
|
platform=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||||
extension_version=$(echo "$extension" | cut -d '-' -f 2)
|
extension_version=$(echo "$extension" | cut -d '-' -f 2)
|
||||||
blackfire_ini_file="${pecl_file:-${ini_file[@]}}"
|
status='Enabled'
|
||||||
if ! shared_extension blackfire; then
|
if ! shared_extension blackfire; then
|
||||||
|
status='Installed and enabled'
|
||||||
if [ "$extension_version" = "blackfire" ]; then
|
if [ "$extension_version" = "blackfire" ]; then
|
||||||
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
||||||
extension_version='1.50.0'
|
extension_version='1.50.0'
|
||||||
@ -16,6 +17,6 @@ add_blackfire() {
|
|||||||
fi
|
fi
|
||||||
get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
|
get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
echo "extension=blackfire.so" | sudo tee -a "$blackfire_ini_file" >/dev/null 2>&1
|
enable_extension blackfire extension
|
||||||
add_extension_log "$extension-$extension_version" "Installed and enabled"
|
add_extension_log blackfire "$status"
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,13 @@ add_firebird_helper() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
add_firebird() {
|
add_firebird() {
|
||||||
enable_extension pdo_firebird
|
if [ "$(uname -s )" = "Darwin" ]; then
|
||||||
|
add_firebird_client_darwin >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
enable_extension pdo_firebird extension
|
||||||
|
status="Enabled"
|
||||||
if ! check_extension pdo_firebird; then
|
if ! check_extension pdo_firebird; then
|
||||||
|
status="Installed and enabled"
|
||||||
if [ "$(uname -s)" = "Linux" ]; then
|
if [ "$(uname -s)" = "Linux" ]; then
|
||||||
if [[ "${version:?}" =~ 5.3|${nightly_versions:?} ]]; then
|
if [[ "${version:?}" =~ 5.3|${nightly_versions:?} ]]; then
|
||||||
add_firebird_helper /usr >/dev/null 2>&1
|
add_firebird_helper /usr >/dev/null 2>&1
|
||||||
@ -27,9 +32,8 @@ add_firebird() {
|
|||||||
add_pdo_extension firebird >/dev/null 2>&1
|
add_pdo_extension firebird >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
add_firebird_client_darwin >/dev/null 2>&1
|
|
||||||
add_firebird_helper /opt/firebird >/dev/null 2>&1
|
add_firebird_helper /opt/firebird >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
add_extension_log pdo_firebird "Installed and enabled"
|
|
||||||
fi
|
fi
|
||||||
|
add_extension_log pdo_firebird "$status"
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ Function Add-LicenseLog() {
|
|||||||
# Function to add ioncube extension.
|
# Function to add ioncube extension.
|
||||||
Function Add-Ioncube() {
|
Function Add-Ioncube() {
|
||||||
try {
|
try {
|
||||||
|
$status = 'Enabled'
|
||||||
if (-not(Test-Path $ext_dir\php_ioncube.dll)) {
|
if (-not(Test-Path $ext_dir\php_ioncube.dll)) {
|
||||||
$status = 'Installed and enabled'
|
$status = 'Installed and enabled'
|
||||||
$arch_part = $arch
|
$arch_part = $arch
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
# Function to log result of a operation.
|
# Function to log result of a operation.
|
||||||
add_license_log() {
|
add_license_log() {
|
||||||
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "ioncube" "Click to read the ioncube loader license information"
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "ioncube" "Click to read the ioncube loader license information"
|
||||||
cat /tmp/ioncube/LICENSE.txt
|
cat "${ext_dir:?}"/IONCUBE_LICENSE.txt
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install ioncube.
|
# Function to install ioncube.
|
||||||
add_ioncube() {
|
add_ioncube() {
|
||||||
|
status='Enabled'
|
||||||
if ! shared_extension ioncube; then
|
if ! shared_extension ioncube; then
|
||||||
status='Installed and enabled'
|
status='Installed and enabled'
|
||||||
os_name='lin' && [ "$(uname -s)" = "Darwin" ] && os_name='mac'
|
os_name='lin' && [ "$(uname -s)" = "Darwin" ] && os_name='mac'
|
||||||
get -s -n "" https://downloads.ioncube.com/loader_downloads/ioncube_loaders_"$os_name"_x86-64.tar.gz | tar -xzf - -C /tmp
|
get -s -n "" https://downloads.ioncube.com/loader_downloads/ioncube_loaders_"$os_name"_x86-64.tar.gz | tar -xzf - -C /tmp
|
||||||
sudo mv /tmp/ioncube/ioncube_loader_"$os_name"_"${version:?}".so "${ext_dir:?}/ioncube.so"
|
sudo mv /tmp/ioncube/ioncube_loader_"$os_name"_"${version:?}".so "${ext_dir:?}/ioncube.so"
|
||||||
|
sudo cp /tmp/ioncube/LICENSE.txt "$ext_dir"/IONCUBE_LICENSE.txt
|
||||||
fi
|
fi
|
||||||
echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
|
echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
|
||||||
add_extension_log "ioncube" "$status"
|
add_extension_log "ioncube" "$status"
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
# Helper function to add phalcon.
|
# Helper function to add phalcon.
|
||||||
add_phalcon_helper() {
|
add_phalcon_helper() {
|
||||||
status='Installed and enabled'
|
status='Installed and enabled'
|
||||||
|
if [ "$(uname -s)" = "Darwin" ]; then
|
||||||
|
add_brew_extension "$extension" extension
|
||||||
|
else
|
||||||
if [ "$extension" = "phalcon4" ]; then
|
if [ "$extension" = "phalcon4" ]; then
|
||||||
install_packages "php${version:?}-psr" "php${version:?}-$extension"
|
install_packages "php${version:?}-psr" "php${version:?}-$extension"
|
||||||
else
|
else
|
||||||
install_packages "php${version:?}-$extension"
|
install_packages "php${version:?}-$extension"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to add phalcon3.
|
# Function to add phalcon3.
|
||||||
@ -15,7 +19,7 @@ add_phalcon3() {
|
|||||||
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
add_phalcon_helper
|
add_phalcon_helper
|
||||||
else
|
else
|
||||||
echo "extension=phalcon.so" | sudo tee -a "$phalcon_ini_file"
|
enable_extension phalcon extension
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
add_phalcon_helper
|
add_phalcon_helper
|
||||||
@ -24,16 +28,14 @@ add_phalcon3() {
|
|||||||
|
|
||||||
# Function to add phalcon4.
|
# Function to add phalcon4.
|
||||||
add_phalcon4() {
|
add_phalcon4() {
|
||||||
if shared_extension phalcon && ! php -m | grep -i -q -w psr; then
|
enable_extension psr extension
|
||||||
echo "extension=psr.so" | sudo tee -a "${ini_file:?}"
|
|
||||||
fi
|
|
||||||
if shared_extension phalcon; then
|
if shared_extension phalcon; then
|
||||||
if php -m | grep -i -q -w psr; then
|
if check_extension psr; then
|
||||||
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
add_phalcon_helper
|
add_phalcon_helper
|
||||||
else
|
else
|
||||||
echo "extension=phalcon.so" | sudo tee -a "$phalcon_ini_file"
|
enable_extension phalcon extension
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
add_phalcon_helper
|
add_phalcon_helper
|
||||||
@ -47,7 +49,6 @@ add_phalcon4() {
|
|||||||
add_phalcon() {
|
add_phalcon() {
|
||||||
extension=$1
|
extension=$1
|
||||||
status='Enabled'
|
status='Enabled'
|
||||||
phalcon_ini_file="${pecl_file:-${ini_file[@]}}"
|
|
||||||
extension_major_version=${extension: -1}
|
extension_major_version=${extension: -1}
|
||||||
if [ "$extension_major_version" = "4" ]; then
|
if [ "$extension_major_version" = "4" ]; then
|
||||||
add_phalcon4 >/dev/null 2>&1
|
add_phalcon4 >/dev/null 2>&1
|
||||||
|
@ -14,7 +14,6 @@ self_hosted_helper() {
|
|||||||
# Function to install a package
|
# Function to install a package
|
||||||
install_packages() {
|
install_packages() {
|
||||||
packages=("$@")
|
packages=("$@")
|
||||||
[[ "${packages[*]}" =~ php ]] && add_ppa ondrej/php >/dev/null 2>&1
|
|
||||||
$apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1)
|
$apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,19 +59,22 @@ add_pdo_extension() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to check if a package exists
|
||||||
|
check_package() {
|
||||||
|
sudo apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate'
|
||||||
|
}
|
||||||
|
|
||||||
# Function to add extensions.
|
# Function to add extensions.
|
||||||
add_extension() {
|
add_extension() {
|
||||||
extension=$1
|
local extension=$1
|
||||||
prefix=$2
|
prefix=$2
|
||||||
|
package=php"$version"-"$extension"
|
||||||
enable_extension "$extension" "$prefix"
|
enable_extension "$extension" "$prefix"
|
||||||
if check_extension "$extension"; then
|
if check_extension "$extension"; then
|
||||||
add_log "${tick:?}" "$extension" "Enabled"
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
else
|
else
|
||||||
if [[ "$version" =~ ${nightly_versions:?} ]]; then
|
add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
|
||||||
pecl_install "$extension"
|
(check_package "$package" && install_packages "$package") || pecl_install "$extension"
|
||||||
else
|
|
||||||
install_packages "php$version-$extension" || pecl_install "$extension"
|
|
||||||
fi
|
|
||||||
add_extension_log "$extension" "Installed and enabled"
|
add_extension_log "$extension" "Installed and enabled"
|
||||||
fi
|
fi
|
||||||
sudo chmod 777 "${ini_file[@]}"
|
sudo chmod 777 "${ini_file[@]}"
|
||||||
@ -125,8 +127,8 @@ switch_version() {
|
|||||||
# Function to install packaged PHP
|
# Function to install packaged PHP
|
||||||
add_packaged_php() {
|
add_packaged_php() {
|
||||||
if [ "$runner" = "self-hosted" ] || [ "${use_package_cache:-true}" = "false" ]; then
|
if [ "$runner" = "self-hosted" ] || [ "${use_package_cache:-true}" = "false" ]; then
|
||||||
update_lists
|
add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
|
||||||
IFS=' ' read -r -a packages <<<"$(echo "cli curl mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
|
IFS=' ' read -r -a packages <<<"$(echo "cli curl dev mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
|
||||||
install_packages "${packages[@]}"
|
install_packages "${packages[@]}"
|
||||||
else
|
else
|
||||||
run_script "php-ubuntu" "$version"
|
run_script "php-ubuntu" "$version"
|
||||||
@ -135,13 +137,13 @@ add_packaged_php() {
|
|||||||
|
|
||||||
# Function to update PHP.
|
# Function to update PHP.
|
||||||
update_php() {
|
update_php() {
|
||||||
initial_version=$(php_semver)
|
initial_version="$(php_semver)$(php_extra_version)"
|
||||||
add_packaged_php
|
add_php
|
||||||
updated_version=$(php_semver)
|
updated_version="$(php_semver)$(php_extra_version)"
|
||||||
if [ "$updated_version" != "$initial_version" ]; then
|
if [ "$updated_version" != "$initial_version" ]; then
|
||||||
status="Updated to"
|
status="Updated to"
|
||||||
else
|
else
|
||||||
status="Switched to"
|
status="Found"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,6 +155,7 @@ add_php() {
|
|||||||
setup_old_versions
|
setup_old_versions
|
||||||
else
|
else
|
||||||
add_packaged_php
|
add_packaged_php
|
||||||
|
switch_version >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
status="Installed"
|
status="Installed"
|
||||||
}
|
}
|
||||||
@ -181,15 +184,15 @@ setup_php() {
|
|||||||
if [ ! -e "/usr/bin/php$version" ]; then
|
if [ ! -e "/usr/bin/php$version" ]; then
|
||||||
add_php >/dev/null 2>&1
|
add_php >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
|
if ! [[ "$version" =~ ${old_versions:?} ]]; then
|
||||||
|
switch_version >/dev/null 2>&1
|
||||||
|
fi
|
||||||
if [ "${update:?}" = "true" ]; then
|
if [ "${update:?}" = "true" ]; then
|
||||||
update_php >/dev/null 2>&1
|
update_php >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
status="Switched to"
|
status="Switched to"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if ! [[ "$version" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
|
||||||
switch_version >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
if [ "$update" = "true" ]; then
|
if [ "$update" = "true" ]; then
|
||||||
update_php >/dev/null 2>&1
|
update_php >/dev/null 2>&1
|
||||||
@ -213,7 +216,7 @@ setup_php() {
|
|||||||
configure_php
|
configure_php
|
||||||
sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
|
sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
|
||||||
sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
|
sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
|
||||||
sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
|
sudo cp "$dist"/../src/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
||||||
echo "::set-output name=php-version::$semver"
|
echo "::set-output name=php-version::$semver"
|
||||||
add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version"
|
add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version"
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,9 @@ Function Add-ToolsHelper() {
|
|||||||
Add-Extension ast >$null 2>&1
|
Add-Extension ast >$null 2>&1
|
||||||
} elseif($tool -eq "phive") {
|
} elseif($tool -eq "phive") {
|
||||||
Add-Extension xml >$null 2>&1
|
Add-Extension xml >$null 2>&1
|
||||||
|
} elseif($tool -eq "phpDocumentor") {
|
||||||
|
Add-Extension fileinfo >$null 2>&1
|
||||||
|
Copy-Item $bin_dir\phpDocumentor.bat -Destination $bin_dir\phpdoc.bat
|
||||||
} elseif($tool -eq "symfony-cli") {
|
} elseif($tool -eq "symfony-cli") {
|
||||||
Add-ToProfile $current_profile "symfony" "New-Alias symfony $bin_dir\symfony-cli.exe"
|
Add-ToProfile $current_profile "symfony" "New-Alias symfony $bin_dir\symfony-cli.exe"
|
||||||
Add-ToProfile $current_profile "symfony_cli" "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
|
Add-ToProfile $current_profile "symfony_cli" "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
|
||||||
|
@ -14,7 +14,15 @@ add_tools_helper() {
|
|||||||
add_extension curl extension >/dev/null 2>&1
|
add_extension curl extension >/dev/null 2>&1
|
||||||
add_extension mbstring extension >/dev/null 2>&1
|
add_extension mbstring extension >/dev/null 2>&1
|
||||||
add_extension xml extension >/dev/null 2>&1
|
add_extension xml extension >/dev/null 2>&1
|
||||||
|
elif [ "$tool" = "phpDocumentor" ]; then
|
||||||
|
add_extension fileinfo extension >/dev/null 2>&1
|
||||||
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/phpdocumentor 2>/dev/null || true
|
||||||
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/phpdoc
|
||||||
|
elif [[ "$tool" =~ phpunit(-polyfills)?$ ]]; then
|
||||||
|
if [ -e "${tool_path_dir:?}"/phpunit ]; then
|
||||||
|
sudo cp "${tool_path_dir:?}"/phpunit "${composer_bin:?}"
|
||||||
|
fi
|
||||||
elif [[ "$tool" =~ (symfony|vapor|wp)-cli ]]; then
|
elif [[ "$tool" =~ (symfony|vapor|wp)-cli ]]; then
|
||||||
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/${tool%-*}
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/"${tool%-*}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
@ -1,7 +1,8 @@
|
|||||||
add_blackfire_linux() {
|
add_blackfire_linux() {
|
||||||
sudo mkdir -p /var/run/blackfire
|
sudo mkdir -p /var/run/blackfire /etc/blackfire
|
||||||
add_list debian/blackfire http://packages.blackfire.io/debian https://packages.blackfire.io/gpg.key any main
|
add_list debian/blackfire http://packages.blackfire.io/debian https://packages.blackfire.io/gpg.key any main
|
||||||
install_packages blackfire
|
install_packages blackfire
|
||||||
|
sudo chmod 777 /etc/blackfire/agent
|
||||||
}
|
}
|
||||||
|
|
||||||
add_blackfire_darwin() {
|
add_blackfire_darwin() {
|
||||||
|
@ -31,6 +31,10 @@ set_base_version() {
|
|||||||
else
|
else
|
||||||
set_base_version_codename
|
set_base_version_codename
|
||||||
set_base_version_id
|
set_base_version_id
|
||||||
|
|
||||||
|
# Remove once PPAs start having bookworm releases
|
||||||
|
[ "$VERSION_CODENAME" = 'bookworm' ] && VERSION_CODENAME="bullseye"
|
||||||
|
|
||||||
printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release >/dev/null 2>&1
|
printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -101,7 +105,7 @@ check_lists() {
|
|||||||
ppa=$1
|
ppa=$1
|
||||||
ppa_search=$2
|
ppa_search=$2
|
||||||
if grep -Eqr "$ppa_search" "$list_dir"; then
|
if grep -Eqr "$ppa_search" "$list_dir"; then
|
||||||
list_count="$(find /var/lib/apt/lists -name "*${ppa/\//_}*" | wc -l)"
|
list_count="$(sudo find /var/lib/apt/lists -type f -name "*${ppa/\//_}*" | wc -l)"
|
||||||
if [ "$list_count" = "0" ]; then
|
if [ "$list_count" = "0" ]; then
|
||||||
update_lists "$ppa" "$ppa_search"
|
update_lists "$ppa" "$ppa_search"
|
||||||
fi
|
fi
|
||||||
@ -121,6 +125,7 @@ add_list() {
|
|||||||
ppa_search="deb .*$ppa_url $package_dist .*$branches"
|
ppa_search="deb .*$ppa_url $package_dist .*$branches"
|
||||||
if check_lists "$ppa" "$ppa_search"; then
|
if check_lists "$ppa" "$ppa_search"; then
|
||||||
echo "Repository $ppa already exists";
|
echo "Repository $ppa already exists";
|
||||||
|
return 1;
|
||||||
else
|
else
|
||||||
arch=$(dpkg --print-architecture)
|
arch=$(dpkg --print-architecture)
|
||||||
[ -e "$key_source" ] && key_file=$key_source || key_file="$key_dir"/"${ppa/\//-}"-keyring.gpg
|
[ -e "$key_source" ] && key_file=$key_source || key_file="$key_dir"/"${ppa/\//-}"-keyring.gpg
|
||||||
@ -129,6 +134,7 @@ add_list() {
|
|||||||
update_lists "$ppa" "$ppa_search"
|
update_lists "$ppa" "$ppa_search"
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
fi
|
fi
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to remove a PPA.
|
# Function to remove a PPA.
|
||||||
@ -150,6 +156,20 @@ add_ppa() {
|
|||||||
else
|
else
|
||||||
add_list "$ppa"
|
add_list "$ppa"
|
||||||
fi
|
fi
|
||||||
|
status="$?"
|
||||||
|
. /etc/os-release
|
||||||
|
return $status
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to update a PPA.
|
||||||
|
update_ppa() {
|
||||||
|
set_base_version
|
||||||
|
ppa=${1:-ondrej/php}
|
||||||
|
ppa_url=${2:-"$lp_ppa/$ppa/ubuntu"}
|
||||||
|
package_dist=${4:-"$VERSION_CODENAME"}
|
||||||
|
branches=${5:-main}
|
||||||
|
ppa_search="deb .*$ppa_url $package_dist .*$branches"
|
||||||
|
update_lists "$ppa" "$ppa_search"
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ param (
|
|||||||
[ValidateNotNull()]
|
[ValidateNotNull()]
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
[string]
|
[string]
|
||||||
$version = '8.0',
|
$version = '8.1',
|
||||||
[Parameter(Position = 1, Mandatory = $true)]
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
[ValidateNotNull()]
|
[ValidateNotNull()]
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
@ -141,24 +141,14 @@ Function Set-ExtensionPrerequisites
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to get extension pre-requisites.
|
# Function to add CA certificates to PHP.
|
||||||
# https://windows.php.net/downloads/pecl/deps
|
Function Add-PhpCAInfo {
|
||||||
# Currently only imagick is supported using this Cmdlet.
|
try {
|
||||||
Function Get-ExtensionPrerequisites{
|
Update-PhpCAInfo -Path $php_dir -Source Curl
|
||||||
Param (
|
} catch {
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
Add-Log $cross PHP "Could not fetch CA certificate bundle from Curl"
|
||||||
[ValidateNotNull()]
|
Update-PhpCAInfo -Path $php_dir -Source CurrentUser
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension
|
|
||||||
)
|
|
||||||
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
|
|
||||||
$extensions_with_dependencies = ('imagick')
|
|
||||||
New-Item $deps_dir -Type Directory -Force > $null 2>&1
|
|
||||||
if($extensions_with_dependencies.Contains($extension)) {
|
|
||||||
Install-PhpExtensionPrerequisite -Extension $extension -InstallPath $deps_dir -PhpPath $php_dir
|
|
||||||
}
|
}
|
||||||
return $deps_dir
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to add PHP extensions.
|
# Function to add PHP extensions.
|
||||||
@ -182,6 +172,8 @@ Function Add-Extension {
|
|||||||
)
|
)
|
||||||
try {
|
try {
|
||||||
$extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension }
|
$extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension }
|
||||||
|
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
|
||||||
|
New-Item $deps_dir -Type Directory -Force > $null 2>&1
|
||||||
if ($null -ne $extension_info) {
|
if ($null -ne $extension_info) {
|
||||||
switch ($extension_info.State) {
|
switch ($extension_info.State) {
|
||||||
'Builtin' {
|
'Builtin' {
|
||||||
@ -191,7 +183,6 @@ Function Add-Extension {
|
|||||||
Add-Log $tick $extension "Enabled"
|
Add-Log $tick $extension "Enabled"
|
||||||
}
|
}
|
||||||
default {
|
default {
|
||||||
$deps_dir = Get-ExtensionPrerequisites $extension
|
|
||||||
Enable-ExtensionDependencies $extension
|
Enable-ExtensionDependencies $extension
|
||||||
Enable-PhpExtension -Extension $extension_info.Handle -Path $php_dir
|
Enable-PhpExtension -Extension $extension_info.Handle -Path $php_dir
|
||||||
Set-ExtensionPrerequisites $deps_dir
|
Set-ExtensionPrerequisites $deps_dir
|
||||||
@ -200,7 +191,6 @@ Function Add-Extension {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$deps_dir = Get-ExtensionPrerequisites $extension
|
|
||||||
$params = @{ Extension = $extension; MinimumStability = $stability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true }
|
$params = @{ Extension = $extension; MinimumStability = $stability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true }
|
||||||
if($extension_version -ne '') {
|
if($extension_version -ne '') {
|
||||||
$params["Version"] = $extension_version
|
$params["Version"] = $extension_version
|
||||||
@ -471,7 +461,6 @@ $current_profile = "$env:TEMP\setup-php.ps1"
|
|||||||
$ProgressPreference = 'SilentlyContinue'
|
$ProgressPreference = 'SilentlyContinue'
|
||||||
$jit_versions = '8.[0-9]'
|
$jit_versions = '8.[0-9]'
|
||||||
$nightly_versions = '8.[1-9]'
|
$nightly_versions = '8.[1-9]'
|
||||||
$cert_source='CurrentUser'
|
|
||||||
$enable_extensions = ('openssl', 'curl', 'mbstring')
|
$enable_extensions = ('openssl', 'curl', 'mbstring')
|
||||||
|
|
||||||
$arch = 'x64'
|
$arch = 'x64'
|
||||||
@ -487,7 +476,6 @@ if($env:RUNNER -eq 'self-hosted') {
|
|||||||
$bin_dir = 'C:\tools\bin'
|
$bin_dir = 'C:\tools\bin'
|
||||||
$php_dir = "$php_dir$version"
|
$php_dir = "$php_dir$version"
|
||||||
$ext_dir = "$php_dir\ext"
|
$ext_dir = "$php_dir\ext"
|
||||||
$cert_source='Curl'
|
|
||||||
Get-CleanPSProfile >$null 2>&1
|
Get-CleanPSProfile >$null 2>&1
|
||||||
New-Item $bin_dir -Type Directory -Force > $null 2>&1
|
New-Item $bin_dir -Type Directory -Force > $null 2>&1
|
||||||
Add-Path -PathItem $bin_dir
|
Add-Path -PathItem $bin_dir
|
||||||
@ -533,7 +521,9 @@ if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version
|
|||||||
if ($version -match $nightly_versions) {
|
if ($version -match $nightly_versions) {
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $php_builder/releases/latest/download/Get-PhpNightly.ps1 -OutFile $php_dir\Get-PhpNightly.ps1 > $null 2>&1
|
Invoke-WebRequest -UseBasicParsing -Uri $php_builder/releases/latest/download/Get-PhpNightly.ps1 -OutFile $php_dir\Get-PhpNightly.ps1 > $null 2>&1
|
||||||
& $php_dir\Get-PhpNightly.ps1 -Architecture $arch -ThreadSafe $ts -Path $php_dir -Version $version > $null 2>&1
|
& $php_dir\Get-PhpNightly.ps1 -Architecture $arch -ThreadSafe $ts -Path $php_dir -Version $version > $null 2>&1
|
||||||
|
if(Test-Path $php_dir\COMMIT) {
|
||||||
$extra_version = " ($( Get-Content $php_dir\COMMIT ))"
|
$extra_version = " ($( Get-Content $php_dir\COMMIT ))"
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Install-Php -Version $version -Architecture $arch -ThreadSafe $ts -InstallVC -Path $php_dir -TimeZone UTC -InitialPhpIni Production -Force > $null 2>&1
|
Install-Php -Version $version -Architecture $arch -ThreadSafe $ts -InstallVC -Path $php_dir -TimeZone UTC -InitialPhpIni Production -Force > $null 2>&1
|
||||||
}
|
}
|
||||||
@ -563,8 +553,8 @@ if($version -lt "5.5") {
|
|||||||
$enable_extensions += ('opcache')
|
$enable_extensions += ('opcache')
|
||||||
}
|
}
|
||||||
Enable-PhpExtension -Extension $enable_extensions -Path $php_dir
|
Enable-PhpExtension -Extension $enable_extensions -Path $php_dir
|
||||||
Update-PhpCAInfo -Path $php_dir -Source $cert_source
|
Add-PhpCAInfo
|
||||||
Copy-Item -Path $dist\..\src\configs\*.json -Destination $env:RUNNER_TOOL_CACHE
|
Copy-Item -Path $dist\..\src\configs\pm\*.json -Destination $env:RUNNER_TOOL_CACHE
|
||||||
New-Item -ItemType Directory -Path $composer_bin -Force > $null 2>&1
|
New-Item -ItemType Directory -Path $composer_bin -Force > $null 2>&1
|
||||||
Write-Output "::set-output name=php-version::$($installed.FullVersion)"
|
Write-Output "::set-output name=php-version::$($installed.FullVersion)"
|
||||||
Add-Log $tick "PHP" "$status PHP $($installed.FullVersion)$extra_version"
|
Add-Log $tick "PHP" "$status PHP $($installed.FullVersion)$extra_version"
|
||||||
|
Reference in New Issue
Block a user