mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-28 17:43:50 +07:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
975f42da8e | |||
fae7892ed3 | |||
2a44b78bb8 | |||
494d047fa5 | |||
3ca32c6b64 |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@ -1,6 +1,5 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
open_collective: setup-php
|
|
||||||
tidelift: "npm/setup-php"
|
tidelift: "npm/setup-php"
|
||||||
community_bridge: setup-php
|
community_bridge: setup-php
|
||||||
patreon: shivammathur
|
patreon: shivammathur
|
||||||
|
2
.github/SECURITY.md
vendored
2
.github/SECURITY.md
vendored
@ -7,7 +7,7 @@ The following versions of this project are supported for security updates.
|
|||||||
| Version | Supported |
|
| Version | Supported |
|
||||||
| ------- | ------------------ |
|
| ------- | ------------------ |
|
||||||
| 1.9.x | :white_check_mark: |
|
| 1.9.x | :white_check_mark: |
|
||||||
| 2.5.x | :white_check_mark: |
|
| 2.4.x | :white_check_mark: |
|
||||||
|
|
||||||
## Supported PHP Versions
|
## Supported PHP Versions
|
||||||
|
|
||||||
|
228
README.md
228
README.md
@ -9,13 +9,8 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
|
<a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
|
||||||
<a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg"></a>
|
<a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg"></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"></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.0-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-%3E%3D%205.3-8892BF.svg"></a>
|
||||||
</p>
|
|
||||||
<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://twitter.com/setup_php" title="setup-php twitter"><img alt="setup-php twitter" src="https://img.shields.io/badge/twitter-follow-1DA1F2?logo=twitter&logoColor=1DA1F2&labelColor=555555"></a>
|
|
||||||
<a href="https://setup-php.statuspage.io/" title="setup-php status"><img alt="setup-php status" src="https://img.shields.io/badge/status-subscribe-28A745?logo=statuspage&logoColor=28A745&labelColor=555555"></a>
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action gives you a cross platform interface to setup the PHP environment you need to test your application. Refer to [Usage](#memo-usage "How to use this") section and [examples](#examples "Examples of use") to see how to use this.
|
Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action gives you a cross platform interface to setup the PHP environment you need to test your application. Refer to [Usage](#memo-usage "How to use this") section and [examples](#examples "Examples of use") to see how to use this.
|
||||||
@ -104,12 +99,11 @@ Both `GitHub-hosted` runners and `self-hosted` runners are supported on the foll
|
|||||||
- On `ubuntu` by default extensions which are available as a package can be installed. PECL extensions if not available as a package can be installed by specifying `pecl` in the tools input.
|
- On `ubuntu` by default extensions which are available as a package can be installed. PECL extensions if not available as a package can be installed by specifying `pecl` in the tools input.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with pecl extension
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
tools: pecl
|
||||||
tools: pecl
|
extensions: swoole
|
||||||
extensions: swoole
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- On `windows` PECL extensions which have the `DLL` binary can be installed.
|
- On `windows` PECL extensions which have the `DLL` binary can be installed.
|
||||||
@ -121,90 +115,70 @@ Both `GitHub-hosted` runners and `self-hosted` runners are supported on the foll
|
|||||||
- Specific versions of PECL extensions can be installed by suffixing the version. This is useful for installing old versions of extensions which support end of life PHP versions.
|
- Specific versions of PECL extensions can be installed by suffixing the version. This is useful for installing old versions of extensions which support end of life PHP versions.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with specific version of PECL extension
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '5.4'
|
||||||
php-version: '5.4'
|
tools: pecl
|
||||||
tools: pecl
|
extensions: swoole-1.9.3
|
||||||
extensions: swoole-1.9.3
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- Pre-release versions of PECL extensions can be setup by suffixing the extension with its state i.e `alpha`, `beta`, `devel` or `snapshot`.
|
- Pre-release versions of PECL extensions can be setup by suffixing the extension with its state i.e `alpha`, `beta`, `devel` or `snapshot`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with pre-release PECL extension
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
tools: pecl
|
||||||
tools: pecl
|
extensions: xdebug-beta
|
||||||
extensions: xdebug-beta
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- Shared extensions can be removed by prefixing them with a `:`.
|
- Shared extensions can be removed by prefixing them with a `:`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP and remove shared extension
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
extensions: :opcache
|
||||||
extensions: :opcache
|
|
||||||
```
|
|
||||||
|
|
||||||
- Extension `intl` can be setup with specific `ICU` version for `PHP 5.6` to `PHP 7.4` in `Ubuntu` workflows by suffixing `intl` with the `ICU` version. `ICU 50.2` and newer versions are supported. Refer to [`ICU builds`](https://github.com/shivammathur/icu-intl#icu4c-builds) for the specific versions supported.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- name: Setup PHP with intl
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: '7.4'
|
|
||||||
extensions: intl-67.1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- Extensions which cannot be added or removed gracefully leave an error message in the logs, the action is not interrupted.
|
- Extensions which cannot be added or removed gracefully leave an error message in the logs, the action is not interrupted.
|
||||||
|
|
||||||
- These extensions have custom support - `cubrid`, `pdo_cubrid` and `gearman` on `Ubuntu`, and `blackfire`, `ioncube`, `oci8`, `pdo_oci`, `phalcon3` and `phalcon4` on all supported OS.
|
- These extensions have custom support - `gearman` on `Ubuntu`, `blackfire`, `ioncube`, `oci8`, `pdo_oci`, `phalcon3` and `phalcon4` on all supported OS.
|
||||||
|
|
||||||
## :wrench: Tools Support
|
## :wrench: Tools Support
|
||||||
|
|
||||||
These tools can be setup globally using the `tools` input.
|
These tools can be setup globally using the `tools` input.
|
||||||
|
|
||||||
`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`, `phpcbf`, `phpcpd`, `php-config`, `php-cs-fixer`, `phpcs`, `phpize`, `phpmd`, `phpstan`, `phpunit`, `prestissimo`, `protoc`, `psalm`, `symfony`, `vapor-cli`
|
`blackfire`, `blackfire-player`, `codeception`, `composer`, `composer-normalize`, `composer-prefetcher`, `composer-require-checker`, `composer-unused`, `cs2pr`, `deployer`, `flex`, `grpc_php_plugin`, `infection`, `pecl`, `phan`, `phinx`, `phive`, `phpcbf`, `phpcpd`, `php-config`, `php-cs-fixer`, `phpcs`, `phpize`, `phpmd`, `phpstan`, `phpunit`, `prestissimo`, `protoc`, `psalm`, `symfony`, `vapor-cli`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with tools
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
tools: php-cs-fixer, phpunit
|
||||||
tools: php-cs-fixer, phpunit
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To setup a particular version of a tool, specify it in the form `tool:version`.
|
To setup a particular version of a tool, specify it in the form `tool:version`.
|
||||||
Latest stable version of `composer` is setup by default. You can setup the required version by specifying `v1`, `v2`, `snapshot` or `preview` as version.
|
Latest stable version of `composer` is setup by default. You can setup the required version by specifying `v1`, `v2`, `snapshot` or `preview` as version.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with composer v2
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
tools: composer:v2
|
||||||
tools: composer:v2
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Latest versions of both agent `blackfire-agent` and client `blackfire` are setup when `blackfire` is specified in tools input. Please refer to the [official documentation](https://blackfire.io/docs/integrations/ci/github-actions "Blackfire.io documentation for GitHub Actions") for using `blackfire` with GitHub Actions.
|
|
||||||
|
|
||||||
Version for other tools should be in `semver` format and a valid release of the tool.
|
Version for other tools should be in `semver` format and a valid release of the tool.
|
||||||
This is useful for installing tools for older versions of PHP.
|
|
||||||
For example to setup `PHPUnit` on `PHP 7.2`.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with tools
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.2'
|
tools: php-cs-fixer:2.16.2, phpunit:8.5.1
|
||||||
tools: phpunit:8.5.8
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Notes**
|
**Notes**
|
||||||
- If you have a tool in your `composer.json`, do not setup it globally using this action as the two instances of the tool might conflict.
|
- Both agent `blackfire-agent` and client `blackfire` are setup when `blackfire` is specified in tools input.
|
||||||
- Tools which cannot be setup gracefully leave an error message in the logs, the action is not interrupted.
|
- Tools which cannot be setup gracefully leave an error message in the logs, the action is not interrupted.
|
||||||
|
|
||||||
## :signal_strength: Coverage Support
|
## :signal_strength: Coverage Support
|
||||||
@ -215,11 +189,10 @@ Specify `coverage: xdebug` to use `Xdebug`.
|
|||||||
Runs on all [PHP versions supported](#tada-php-support "List of PHP versions supported on this GitHub Action").
|
Runs on all [PHP versions supported](#tada-php-support "List of PHP versions supported on this GitHub Action").
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with Xdebug
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
coverage: xdebug
|
||||||
coverage: xdebug
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### PCOV
|
### PCOV
|
||||||
@ -230,23 +203,11 @@ Tests with `PCOV` run much faster than with `Xdebug`.
|
|||||||
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values` input.
|
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values` input.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with PCOV
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
ini-values: pcov.directory=api #optional, see above for usage.
|
||||||
ini-values: pcov.directory=api #optional, see above for usage.
|
coverage: pcov
|
||||||
coverage: pcov
|
|
||||||
```
|
|
||||||
|
|
||||||
`PHPUnit` 8 and above supports `PCOV` out of the box.
|
|
||||||
If you are using `PHPUnit` 5, 6 or 7, you will need `krakjoe/pcov-clobber`.
|
|
||||||
Before executing your tests add the following step.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- name: Setup PCOV
|
|
||||||
run: |
|
|
||||||
composer require pcov/clobber
|
|
||||||
vendor/bin/pcov clobber
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Disable Coverage
|
### Disable Coverage
|
||||||
@ -260,11 +221,10 @@ Consider disabling the coverage using this PHP action for these reasons.
|
|||||||
- You are profiling your code using `blackfire`.
|
- You are profiling your code using `blackfire`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with no coverage driver
|
uses: shivammathur/setup-php@v2
|
||||||
uses: shivammathur/setup-php@v2
|
with:
|
||||||
with:
|
php-version: '7.4'
|
||||||
php-version: '7.4'
|
coverage: none
|
||||||
coverage: none
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## :memo: Usage
|
## :memo: Usage
|
||||||
@ -355,7 +315,7 @@ jobs:
|
|||||||
|
|
||||||
- This version is currently in development.
|
- This version is currently in development.
|
||||||
- `PECL` is installed by default with this version on `ubuntu` and `macOS`.
|
- `PECL` is installed by default with this version on `ubuntu` and `macOS`.
|
||||||
- Some user space extensions might not support this version currently.
|
- Some extensions might not support this version currently.
|
||||||
- Refer to this [RFC](https://wiki.php.net/rfc/jit "PHP JIT RFC configuration") for configuring `PHP JIT` on this version.
|
- Refer to this [RFC](https://wiki.php.net/rfc/jit "PHP JIT RFC configuration") for configuring `PHP JIT` on this version.
|
||||||
- Refer to this [list of RFCs](https://wiki.php.net/rfc#php_80 "List of RFCs implemented in PHP8") implemented in this version.
|
- Refer to this [list of RFCs](https://wiki.php.net/rfc#php_80 "List of RFCs implemented in PHP8") implemented in this version.
|
||||||
|
|
||||||
@ -364,7 +324,7 @@ steps:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup nightly PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.0'
|
php-version: '8.0'
|
||||||
@ -404,10 +364,6 @@ jobs:
|
|||||||
runner: self-hosted # Specify the runner.
|
runner: self-hosted # Specify the runner.
|
||||||
```
|
```
|
||||||
|
|
||||||
**Notes**
|
|
||||||
- Do not setup multiple self-hosted runners on the a single server instance as parallel workflow will conflict with each other.
|
|
||||||
- Do not setup self-hosted runners on the side on your development environment or your production server.
|
|
||||||
|
|
||||||
### Local Testing Setup
|
### Local Testing Setup
|
||||||
|
|
||||||
> Test your `Ubuntu` workflow locally using [`nektos/act`](https://github.com/nektos/act "Project to test GitHub Actions locally").
|
> Test your `Ubuntu` workflow locally using [`nektos/act`](https://github.com/nektos/act "Project to test GitHub Actions locally").
|
||||||
@ -476,7 +432,7 @@ jobs:
|
|||||||
- You can specify the `update` environment variable to `true` to force update to the latest release.
|
- You can specify the `update` environment variable to `true` to force update to the latest release.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with latest versions
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
@ -491,7 +447,7 @@ jobs:
|
|||||||
To debug any issues, you can use the `verbose` tag instead of `v2`.
|
To debug any issues, you can use the `verbose` tag instead of `v2`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with logs
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@verbose
|
uses: shivammathur/setup-php@verbose
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
@ -499,8 +455,45 @@ To debug any issues, you can use the `verbose` tag instead of `v2`.
|
|||||||
|
|
||||||
### Cache Extensions
|
### Cache Extensions
|
||||||
|
|
||||||
You can cache PHP extensions using `shivammathur/cache-extensions` and `action/cache` GitHub Actions. Extensions which take very long to setup when cached are available in the next workflow run and are enabled directly. This reduces the workflow execution time.
|
You can cache PHP extensions using [`shivammathur/cache-extensions`](https://github.com/shivammathur/cache-extensions "GitHub Action to cache php extensions") and [`action/cache`](https://github.com/actions/cache "GitHub Action to cache files") GitHub Actions. Extensions which take very long to setup when cached are available in the next workflow run and are enabled directly. This reduces the workflow execution time.
|
||||||
Refer to [`shivammathur/cache-extensions`](https://github.com/shivammathur/cache-extensions "GitHub Action to cache php extensions") for details.
|
|
||||||
|
```yaml
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
|
name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
|
||||||
|
env:
|
||||||
|
extensions: intl, pcov
|
||||||
|
key: cache-v1 # can be any string, change to clear the extension cache.
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup cache environment
|
||||||
|
id: extcache
|
||||||
|
uses: shivammathur/cache-extensions@v1
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
key: ${{ env.key }}
|
||||||
|
|
||||||
|
- name: Cache extensions
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ steps.extcache.outputs.dir }}
|
||||||
|
key: ${{ steps.extcache.outputs.key }}
|
||||||
|
restore-keys: ${{ steps.extcache.outputs.key }}
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** If you setup both `TS` and `NTS` PHP versions on `windows`, add `${{ env.phpts }}` to `key` and `restore-keys` inputs in `actions/cache` step.
|
||||||
|
|
||||||
### Cache Composer Dependencies
|
### Cache Composer Dependencies
|
||||||
|
|
||||||
@ -651,35 +644,12 @@ Examples of using `setup-php` with various PHP Frameworks and Packages.
|
|||||||
- See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide") before you start.
|
- See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide") before you start.
|
||||||
- If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/setup-php/issues "Issues reported").
|
- If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/setup-php/issues "Issues reported").
|
||||||
|
|
||||||
*Join the list of setup-php contributors*
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<a href="https://github.com/shivammathur/setup-php/graphs/contributors">
|
|
||||||
<img src="https://opencollective.com/setup-php/contributors.svg?width=1024&button=false" alt="setup-php contributers" width="100%">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## :sparkling_heart: Support This Project
|
## :sparkling_heart: Support This Project
|
||||||
|
|
||||||
- Please star the project and share it. If you blog, please share your experience of using this action.
|
If this action helped you.
|
||||||
- Please consider supporting our work by sponsoring using [Open Collective](https://opencollective.com/setup-php), [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal") or [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon").
|
|
||||||
- If you use `setup-php` at your company, please [reach out](mailto:contact@setup-php.com) to sponsor the project.
|
|
||||||
|
|
||||||
*Huge thanks to the following companies for supporting `setup-php`*
|
- Sponsor the project by subscribing on [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") or by contributing using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal"). This project is also available as part of the [Tidelift Subscription](https://tidelift.com/subscription/pkg/npm-setup-php?utm_source=npm-setup-php&utm_medium=referral&utm_campaign=enterprise&utm_term=repo "Tidelift Subscription for setup-php") to support delivering enterprise-level maintenance.
|
||||||
|
- Please star the project and dependencies. If you blog, please share your experience of using this action with the community.
|
||||||
<p>
|
|
||||||
<a href="https://www.jetbrains.com/?from=setup-php">
|
|
||||||
<img src="https://shivammathur.com/jetbrains.svg" alt="JetBrains" width="106" height="60">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://blackfire.io/?utm_source=setup-php">
|
|
||||||
<img src="https://shivammathur.com/blackfire.svg" alt="Blackfire" width="212" height="60">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://tidelift.com/subscription/pkg/npm-setup-php">
|
|
||||||
<img src="https://shivammathur.com/tidelift.png" alt="Tidelift" width="70" height="60">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## :package: Dependencies
|
## :package: Dependencies
|
||||||
|
|
||||||
@ -688,13 +658,9 @@ Examples of using `setup-php` with various PHP Frameworks and Packages.
|
|||||||
- [mlocati/powershell-phpmanager](https://github.com/mlocati/powershell-phpmanager "Package to handle PHP on windows")
|
- [mlocati/powershell-phpmanager](https://github.com/mlocati/powershell-phpmanager "Package to handle PHP on windows")
|
||||||
- [ppa:ondrej/php](https://launchpad.net/~ondrej/+archive/ubuntu/php "Packaging active PHP packages")
|
- [ppa:ondrej/php](https://launchpad.net/~ondrej/+archive/ubuntu/php "Packaging active PHP packages")
|
||||||
- [shivammathur/cache-extensions](https://github.com/shivammathur/cache-extensions "GitHub action to help with caching PHP extensions")
|
- [shivammathur/cache-extensions](https://github.com/shivammathur/cache-extensions "GitHub action to help with caching PHP extensions")
|
||||||
- [shivammathur/composer-cache](https://github.com/shivammathur/composer-cache "Cache composer releases")
|
|
||||||
- [shivammathur/homebrew-extensions](https://github.com/shivammathur/homebrew-extensions "Tap for PHP extensions on MacOS")
|
|
||||||
- [shivammathur/homebrew-php](https://github.com/shivammathur/homebrew-php "Tap for PHP builds on MacOS")
|
- [shivammathur/homebrew-php](https://github.com/shivammathur/homebrew-php "Tap for PHP builds on MacOS")
|
||||||
- [shivammathur/icu-intl](https://github.com/shivammathur/icu-intl "icu4c and php-intl builds")
|
- [shivammathur/homebrew-extensions](https://github.com/shivammathur/homebrew-extensions "Tap for PHP extensions on MacOS")
|
||||||
- [shivammathur/php-builder](https://github.com/shivammathur/php-builder "Nightly PHP package for Ubuntu")
|
- [shivammathur/php-builder](https://github.com/shivammathur/php-builder "Nightly PHP package")
|
||||||
- [shivammathur/php-builder-windows](https://github.com/shivammathur/php-builder-windows "Nightly PHP package for Windows")
|
|
||||||
- [shivammathur/php-ubuntu](https://github.com/shivammathur/php-ubuntu "Cache stable PHP Packages for Ubuntu")
|
|
||||||
- [shivammathur/php5-darwin](https://github.com/shivammathur/php5-darwin "Scripts to setup PHP5 versions on darwin")
|
- [shivammathur/php5-darwin](https://github.com/shivammathur/php5-darwin "Scripts to setup PHP5 versions on darwin")
|
||||||
- [shivammathur/php5-ubuntu](https://github.com/shivammathur/php5-ubuntu "Scripts to setup PHP5 versions on ubuntu")
|
- [shivammathur/php5-ubuntu](https://github.com/shivammathur/php5-ubuntu "Scripts to setup PHP5 versions on ubuntu")
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ describe('Config tests', () => {
|
|||||||
|
|
||||||
win32 = await config.addINIValues(
|
win32 = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'openbsd'
|
'fedora'
|
||||||
);
|
);
|
||||||
expect(win32).toContain('Platform openbsd is not supported');
|
expect(win32).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addINIValuesOnLinux', async () => {
|
it('checking addINIValuesOnLinux', async () => {
|
||||||
@ -29,9 +29,9 @@ describe('Config tests', () => {
|
|||||||
|
|
||||||
linux = await config.addINIValues(
|
linux = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'openbsd'
|
'fedora'
|
||||||
);
|
);
|
||||||
expect(linux).toContain('Platform openbsd is not supported');
|
expect(linux).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addINIValuesOnDarwin', async () => {
|
it('checking addINIValuesOnDarwin', async () => {
|
||||||
@ -45,8 +45,8 @@ describe('Config tests', () => {
|
|||||||
|
|
||||||
darwin = await config.addINIValues(
|
darwin = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'openbsd'
|
'fedora'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain('Platform openbsd is not supported');
|
expect(darwin).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -13,8 +13,8 @@ describe('Extension tests', () => {
|
|||||||
expect(win32).toContain('Remove-Extension intl');
|
expect(win32).toContain('Remove-Extension intl');
|
||||||
expect(win32).toContain('Add-Phalcon phalcon4');
|
expect(win32).toContain('Add-Phalcon phalcon4');
|
||||||
expect(win32).toContain('Add-Ioncube');
|
expect(win32).toContain('Add-Ioncube');
|
||||||
expect(win32).toContain('Add-Oci oci8');
|
expect(win32).toContain('Add-OCI oci8');
|
||||||
expect(win32).toContain('Add-Oci pdo_oci');
|
expect(win32).toContain('Add-OCI pdo_oci');
|
||||||
expect(win32).toContain('Add-Extension ast beta');
|
expect(win32).toContain('Add-Extension ast beta');
|
||||||
expect(win32).toContain('Add-Extension grpc stable 1.2.3');
|
expect(win32).toContain('Add-Extension grpc stable 1.2.3');
|
||||||
expect(win32).toContain('Add-Extension inotify alpha 1.2.3');
|
expect(win32).toContain('Add-Extension inotify alpha 1.2.3');
|
||||||
@ -46,8 +46,8 @@ describe('Extension tests', () => {
|
|||||||
expect(win32).toContain('Add-Phalcon phalcon3');
|
expect(win32).toContain('Add-Phalcon phalcon3');
|
||||||
expect(win32).toContain('Add-Extension does_not_exist');
|
expect(win32).toContain('Add-Extension does_not_exist');
|
||||||
|
|
||||||
win32 = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
win32 = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
expect(win32).toContain('Platform openbsd is not supported');
|
expect(win32).toContain('Platform fedora is not supported');
|
||||||
|
|
||||||
win32 = await extensions.addExtension('blackfire', '7.3', 'win32');
|
win32 = await extensions.addExtension('blackfire', '7.3', 'win32');
|
||||||
expect(win32).toContain('Add-Blackfire blackfire');
|
expect(win32).toContain('Add-Blackfire blackfire');
|
||||||
@ -95,13 +95,8 @@ describe('Extension tests', () => {
|
|||||||
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
||||||
expect(linux).toContain('add_gearman');
|
expect(linux).toContain('add_gearman');
|
||||||
|
|
||||||
linux = await extensions.addExtension('pdo_cubrid', '7.0', 'linux');
|
linux = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
expect(linux).toContain('add_cubrid pdo_cubrid');
|
expect(linux).toContain('Platform fedora is not supported');
|
||||||
linux = await extensions.addExtension('cubrid', '7.4', 'linux');
|
|
||||||
expect(linux).toContain('add_cubrid cubrid');
|
|
||||||
|
|
||||||
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');
|
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
||||||
expect(linux).toContain('add_phalcon phalcon3');
|
expect(linux).toContain('add_phalcon phalcon3');
|
||||||
@ -119,12 +114,6 @@ describe('Extension tests', () => {
|
|||||||
|
|
||||||
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
||||||
expect(linux).toContain('add_blackfire blackfire-1.31.0');
|
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');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addExtensionOnDarwin', async () => {
|
it('checking addExtensionOnDarwin', async () => {
|
||||||
@ -201,7 +190,7 @@ describe('Extension tests', () => {
|
|||||||
);
|
);
|
||||||
expect(darwin).toContain('add_extension does_not_exist');
|
expect(darwin).toContain('add_extension does_not_exist');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
expect(darwin).toContain('Platform openbsd is not supported');
|
expect(darwin).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,31 @@
|
|||||||
|
import * as httpm from '@actions/http-client';
|
||||||
import * as tools from '../src/tools';
|
import * as tools from '../src/tools';
|
||||||
|
|
||||||
|
httpm.HttpClient.prototype.get = jest.fn().mockImplementation(() => {
|
||||||
|
return {
|
||||||
|
message: null,
|
||||||
|
readBody: jest.fn().mockImplementation(() => {
|
||||||
|
return JSON.stringify({
|
||||||
|
stable: [{path: '/composer-stable.phar'}],
|
||||||
|
preview: [{path: '/composer-preview.phar'}],
|
||||||
|
snapshot: [{path: '/composer.phar'}],
|
||||||
|
'1': [{path: '/composer-1.phar'}],
|
||||||
|
'2': [{path: '/composer-2.phar'}]
|
||||||
|
});
|
||||||
|
})
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
describe('Tools tests', () => {
|
describe('Tools tests', () => {
|
||||||
|
it('checking getCommand', async () => {
|
||||||
|
expect(await tools.getCommand('linux', 'tool')).toBe('add_tool ');
|
||||||
|
expect(await tools.getCommand('darwin', 'tool')).toBe('add_tool ');
|
||||||
|
expect(await tools.getCommand('win32', 'tool')).toBe('Add-Tool ');
|
||||||
|
expect(await tools.getCommand('fedora', 'tool')).toContain(
|
||||||
|
'Platform fedora is not supported'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('checking parseToolVersion', async () => {
|
it('checking parseToolVersion', async () => {
|
||||||
expect(await tools.getToolVersion('latest')).toBe('latest');
|
expect(await tools.getToolVersion('latest')).toBe('latest');
|
||||||
expect(await tools.getToolVersion('1.2.3')).toBe('1.2.3');
|
expect(await tools.getToolVersion('1.2.3')).toBe('1.2.3');
|
||||||
@ -270,8 +295,8 @@ describe('Tools tests', () => {
|
|||||||
expect(await tools.getSymfonyUri('1.2.3', 'win32')).toContain(
|
expect(await tools.getSymfonyUri('1.2.3', 'win32')).toContain(
|
||||||
'releases/download/v1.2.3/symfony_windows_amd64'
|
'releases/download/v1.2.3/symfony_windows_amd64'
|
||||||
);
|
);
|
||||||
expect(await tools.getSymfonyUri('1.2.3', 'openbsd')).toContain(
|
expect(await tools.getSymfonyUri('1.2.3', 'fedora')).toContain(
|
||||||
'Platform openbsd is not supported'
|
'Platform fedora is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -300,18 +325,21 @@ describe('Tools tests', () => {
|
|||||||
it('checking addArchive', async () => {
|
it('checking addArchive', async () => {
|
||||||
let script: string = await tools.addArchive(
|
let script: string = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
|
'1.2.3',
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'linux'
|
'linux'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
|
'1.2.3',
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
|
'1.2.3',
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'win32'
|
'win32'
|
||||||
);
|
);
|
||||||
@ -319,10 +347,11 @@ describe('Tools tests', () => {
|
|||||||
|
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
|
'1.2.3',
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'openbsd'
|
'fedora'
|
||||||
);
|
);
|
||||||
expect(script).toContain('Platform openbsd is not supported');
|
expect(script).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addDevTools', async () => {
|
it('checking addDevTools', async () => {
|
||||||
@ -350,8 +379,8 @@ describe('Tools tests', () => {
|
|||||||
'Add-Log "$cross" "php-config" "php-config is not a windows tool"'
|
'Add-Log "$cross" "php-config" "php-config is not a windows tool"'
|
||||||
);
|
);
|
||||||
|
|
||||||
script = await tools.addDevTools('tool', 'openbsd');
|
script = await tools.addDevTools('tool', 'fedora');
|
||||||
expect(script).toContain('Platform openbsd is not supported');
|
expect(script).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addPackage', async () => {
|
it('checking addPackage', async () => {
|
||||||
@ -369,13 +398,24 @@ describe('Tools tests', () => {
|
|||||||
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'win32');
|
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'win32');
|
||||||
expect(script).toContain('Add-Composertool tool tool:1.2.3 user/');
|
expect(script).toContain('Add-Composertool tool tool:1.2.3 user/');
|
||||||
|
|
||||||
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'openbsd');
|
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'fedora');
|
||||||
expect(script).toContain('Platform openbsd is not supported');
|
expect(script).toContain('Platform fedora is not supported');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCustomTool', async () => {
|
||||||
|
let script: string = await tools.addCustomTool('tool', '1.2.3', 'linux');
|
||||||
|
expect(script).toContain('tool.sh\nadd_tool 1.2.3');
|
||||||
|
|
||||||
|
script = await tools.addCustomTool('tool', '1.2.3', 'darwin');
|
||||||
|
expect(script).toContain('tool.sh\nadd_tool 1.2.3');
|
||||||
|
|
||||||
|
script = await tools.addCustomTool('tool', '1.2.3', 'win32');
|
||||||
|
expect(script).toContain('tool.ps1\nAdd-Tool 1.2.3');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addTools on linux', async () => {
|
it('checking addTools on linux', async () => {
|
||||||
const script: string = await tools.addTools(
|
const script: string = await tools.addTools(
|
||||||
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, php-config, phpize, protoc, symfony, wp-cli',
|
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phinx, phinx:1.2.3, phive, php-config, phpize, protoc, symfony, wp-cli',
|
||||||
'7.4',
|
'7.4',
|
||||||
'linux'
|
'linux'
|
||||||
);
|
);
|
||||||
@ -395,9 +435,6 @@ describe('Tools tests', () => {
|
|||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan'
|
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
|
||||||
'add_tool https://www.phing.info/get/phing-latest.phar phing'
|
|
||||||
);
|
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://phar.io/releases/phive.phar phive'
|
'add_tool https://phar.io/releases/phive.phar phive'
|
||||||
);
|
);
|
||||||
@ -435,7 +472,6 @@ describe('Tools tests', () => {
|
|||||||
'infection',
|
'infection',
|
||||||
'phan',
|
'phan',
|
||||||
'phan:2.7.2',
|
'phan:2.7.2',
|
||||||
'phing:1.2.3',
|
|
||||||
'phinx',
|
'phinx',
|
||||||
'phive:1.2.3',
|
'phive:1.2.3',
|
||||||
'php-config',
|
'php-config',
|
||||||
@ -483,9 +519,6 @@ describe('Tools tests', () => {
|
|||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan'
|
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
|
||||||
'add_tool https://www.phing.info/get/phing-1.2.3.phar phing'
|
|
||||||
);
|
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs'
|
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs'
|
||||||
);
|
);
|
||||||
|
@ -131,8 +131,8 @@ describe('Utils tests', () => {
|
|||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'darwin');
|
step_log = await utils.stepLog(message, 'darwin');
|
||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'openbsd');
|
step_log = await utils.stepLog(message, 'fedora');
|
||||||
expect(step_log).toContain('Platform openbsd is not supported');
|
expect(step_log).toContain('Platform fedora is not supported');
|
||||||
|
|
||||||
let add_log: string = await utils.addLog(
|
let add_log: string = await utils.addLog(
|
||||||
'tick',
|
'tick',
|
||||||
@ -145,8 +145,8 @@ describe('Utils tests', () => {
|
|||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'openbsd');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'fedora');
|
||||||
expect(add_log).toContain('Platform openbsd is not supported');
|
expect(add_log).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getExtensionPrefix', async () => {
|
it('checking getExtensionPrefix', async () => {
|
||||||
@ -163,8 +163,8 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
||||||
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('openbsd')).toContain(
|
expect(await utils.suppressOutput('fedora')).toContain(
|
||||||
'Platform openbsd is not supported'
|
'Platform fedora is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -174,15 +174,6 @@ describe('Utils tests', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getCommand', async () => {
|
|
||||||
expect(await utils.getCommand('linux', 'tool')).toBe('add_tool ');
|
|
||||||
expect(await utils.getCommand('darwin', 'tool')).toBe('add_tool ');
|
|
||||||
expect(await utils.getCommand('win32', 'tool')).toBe('Add-Tool ');
|
|
||||||
expect(await utils.getCommand('openbsd', 'tool')).toContain(
|
|
||||||
'Platform openbsd is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking joins', async () => {
|
it('checking joins', async () => {
|
||||||
expect(await utils.joins('a', 'b', 'c')).toBe('a b c');
|
expect(await utils.joins('a', 'b', 'c')).toBe('a b c');
|
||||||
});
|
});
|
||||||
@ -191,21 +182,8 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.scriptExtension('linux')).toBe('.sh');
|
expect(await utils.scriptExtension('linux')).toBe('.sh');
|
||||||
expect(await utils.scriptExtension('darwin')).toBe('.sh');
|
expect(await utils.scriptExtension('darwin')).toBe('.sh');
|
||||||
expect(await utils.scriptExtension('win32')).toBe('.ps1');
|
expect(await utils.scriptExtension('win32')).toBe('.ps1');
|
||||||
expect(await utils.scriptExtension('openbsd')).toContain(
|
expect(await utils.scriptExtension('fedora')).toContain(
|
||||||
'Platform openbsd is not supported'
|
'Platform fedora is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking customPackage', async () => {
|
|
||||||
const script_path: string = path.join('ext', 'pkg.sh');
|
|
||||||
expect(await utils.customPackage('pkg', 'ext', '1.2.3', 'linux')).toContain(
|
|
||||||
script_path + '\nadd_pkg 1.2.3'
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
await utils.customPackage('pdo_pkg', 'ext', '1.2.3', 'linux')
|
|
||||||
).toContain(script_path + '\nadd_pkg 1.2.3');
|
|
||||||
expect(
|
|
||||||
await utils.customPackage('pkg8', 'ext', '1.2.3', 'linux')
|
|
||||||
).toContain(script_path + '\nadd_pkg 1.2.3');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
1241
dist/index.js
vendored
1241
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
1989
package-lock.json
generated
1989
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
27
package.json
27
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "2.5.0",
|
"version": "2.4.1",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Setup PHP for use with GitHub Actions",
|
"description": "Setup PHP for use with GitHub Actions",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
@ -24,28 +24,29 @@
|
|||||||
"author": "shivammathur",
|
"author": "shivammathur",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.6",
|
"@actions/core": "^1.2.4",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
|
"@actions/http-client": "^1.0.8",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"fs": "0.0.1-security"
|
"fs": "0.0.1-security"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^26.0.13",
|
"@types/jest": "^26.0.8",
|
||||||
"@types/node": "^14.6.4",
|
"@types/node": "^14.0.27",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
"@typescript-eslint/eslint-plugin": "^3.7.1",
|
||||||
"@typescript-eslint/parser": "^4.0.1",
|
"@typescript-eslint/parser": "^3.7.1",
|
||||||
"@zeit/ncc": "^0.22.3",
|
"@zeit/ncc": "^0.22.3",
|
||||||
"eslint": "^7.8.1",
|
"eslint": "^7.6.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^6.11.0",
|
||||||
"eslint-plugin-import": "^2.22.0",
|
"eslint-plugin-import": "^2.22.0",
|
||||||
"eslint-plugin-jest": "^24.0.0",
|
"eslint-plugin-jest": "^23.20.0",
|
||||||
"eslint-plugin-prettier": "^3.1.4",
|
"eslint-plugin-prettier": "^3.1.4",
|
||||||
"husky": "^4.2.5",
|
"husky": "^4.2.5",
|
||||||
"jest": "^26.4.2",
|
"jest": "^26.2.2",
|
||||||
"jest-circus": "^26.4.2",
|
"jest-circus": "^26.2.2",
|
||||||
"prettier": "^2.1.1",
|
"prettier": "^2.0.5",
|
||||||
"ts-jest": "^26.3.0",
|
"ts-jest": "^26.1.4",
|
||||||
"typescript": "^4.0.2"
|
"typescript": "^3.9.7"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
"skipCI": true,
|
"skipCI": true,
|
||||||
|
@ -1,5 +1,24 @@
|
|||||||
|
import * as path from 'path';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get script to install custom extensions
|
||||||
|
*
|
||||||
|
* @param script
|
||||||
|
* @param command
|
||||||
|
*/
|
||||||
|
export async function customExtension(
|
||||||
|
script: string,
|
||||||
|
...command: string[]
|
||||||
|
): Promise<string> {
|
||||||
|
return (
|
||||||
|
'\n. ' +
|
||||||
|
path.join(__dirname, '../src/scripts/ext/' + script) +
|
||||||
|
'\n' +
|
||||||
|
(await utils.joins(...command))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install and enable extensions for darwin
|
* Install and enable extensions for darwin
|
||||||
*
|
*
|
||||||
@ -28,20 +47,29 @@ export async function addExtensionDarwin(
|
|||||||
return;
|
return;
|
||||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||||
// match pdo_oci and oci8
|
|
||||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
|
add_script += await customExtension(
|
||||||
|
'blackfire.sh',
|
||||||
|
'add_blackfire',
|
||||||
|
extension
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match pdo_oci and oci8
|
||||||
case /^pdo_oci$|^oci8$/.test(extension):
|
case /^pdo_oci$|^oci8$/.test(extension):
|
||||||
|
add_script += await customExtension('oci.sh', 'add_oci', extension);
|
||||||
|
return;
|
||||||
|
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||||
|
add_script += await customExtension('ioncube.sh', 'add_ioncube');
|
||||||
|
return;
|
||||||
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
add_script += await utils.customPackage(
|
add_script += await customExtension(
|
||||||
ext_name,
|
'phalcon.sh',
|
||||||
'ext',
|
'add_phalcon',
|
||||||
extension,
|
extension
|
||||||
'darwin'
|
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
// match pre-release versions. For example - xdebug-beta
|
// match pre-release versions. For example - xdebug-beta
|
||||||
@ -126,24 +154,33 @@ export async function addExtensionWindows(
|
|||||||
case /^:/.test(ext_name):
|
case /^:/.test(ext_name):
|
||||||
remove_script += '\nRemove-Extension ' + ext_name.slice(1);
|
remove_script += '\nRemove-Extension ' + ext_name.slice(1);
|
||||||
break;
|
break;
|
||||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
// match 5.4blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
// match 5.4blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||||
// match pdo_oci and oci8
|
case /^(5\.[4-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /^pdo_oci$|^oci8$/.test(extension):
|
add_script += await customExtension(
|
||||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
'blackfire.ps1',
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
'Add-Blackfire',
|
||||||
add_script += await utils.customPackage(
|
extension
|
||||||
ext_name,
|
|
||||||
'ext',
|
|
||||||
extension,
|
|
||||||
'win32'
|
|
||||||
);
|
);
|
||||||
return;
|
break;
|
||||||
|
// match pdo_oci and oci8
|
||||||
|
case /^pdo_oci$|^oci8$/.test(extension):
|
||||||
|
add_script += await customExtension('oci.ps1', 'Add-OCI', extension);
|
||||||
|
break;
|
||||||
|
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||||
|
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||||
|
add_script += await customExtension('ioncube.ps1', 'Add-Ioncube');
|
||||||
|
break;
|
||||||
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
|
add_script += await customExtension(
|
||||||
|
'phalcon.ps1',
|
||||||
|
'Add-Phalcon',
|
||||||
|
extension
|
||||||
|
);
|
||||||
|
break;
|
||||||
// match pre-release versions. For example - xdebug-beta
|
// match pre-release versions. For example - xdebug-beta
|
||||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||||
add_script += await utils.joins(
|
add_script += await utils.joins(
|
||||||
@ -232,32 +269,36 @@ export async function addExtensionLinux(
|
|||||||
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||||
return;
|
return;
|
||||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
// match 5.3blackfire-{semver}...5.6blackfire-{semver}, 7.0blackfire-{semver}...7.4blackfire-{semver}
|
||||||
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
|
||||||
// match pdo_oci and oci8
|
|
||||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
// match 5.6gearman..7.4gearman
|
|
||||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
add_script += await customExtension(
|
||||||
version_extension
|
'blackfire.sh',
|
||||||
):
|
'add_blackfire',
|
||||||
case /^pdo_oci$|^oci8$/.test(extension):
|
extension
|
||||||
case /^5\.6intl-[\d]+\.[\d]+$|^7\.[0-4]intl-[\d]+\.[\d]+$/.test(
|
|
||||||
version_extension
|
|
||||||
):
|
|
||||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
||||||
case /^((5\.6)|(7\.[0-4]))gearman$/.test(version_extension):
|
|
||||||
add_script += await utils.customPackage(
|
|
||||||
ext_name,
|
|
||||||
'ext',
|
|
||||||
extension,
|
|
||||||
'linux'
|
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
|
// match pdo_oci and oci8
|
||||||
|
case /^pdo_oci$|^oci8$/.test(extension):
|
||||||
|
add_script += await customExtension('oci.sh', 'add_oci', extension);
|
||||||
|
return;
|
||||||
|
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||||
|
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||||
|
add_script += await customExtension('ioncube.sh', 'add_ioncube');
|
||||||
|
return;
|
||||||
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
|
add_script += await customExtension(
|
||||||
|
'phalcon.sh',
|
||||||
|
'add_phalcon',
|
||||||
|
extension
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match 5.6gearman..7.4gearman
|
||||||
|
case /^((5\.6)|(7\.[0-4]))gearman$/.test(version_extension):
|
||||||
|
add_script += await customExtension('gearman.sh', 'add_gearman');
|
||||||
|
return;
|
||||||
// match pre-release versions. For example - xdebug-beta
|
// match pre-release versions. For example - xdebug-beta
|
||||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||||
add_script += await utils.joins(
|
add_script += await utils.joins(
|
||||||
|
@ -19,8 +19,6 @@ export async function build(
|
|||||||
version: string,
|
version: string,
|
||||||
os_version: string
|
os_version: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const name = 'setup-php';
|
|
||||||
const url = 'setup-php.com/support';
|
|
||||||
// taking inputs
|
// taking inputs
|
||||||
const extension_csv: string =
|
const extension_csv: string =
|
||||||
(await utils.getInput('extensions', false)) ||
|
(await utils.getInput('extensions', false)) ||
|
||||||
@ -50,9 +48,6 @@ export async function build(
|
|||||||
script += await config.addINIValues(ini_values_csv, os_version);
|
script += await config.addINIValues(ini_values_csv, os_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
script += '\n' + (await utils.stepLog('Support this project', os_version));
|
|
||||||
script += '\n' + (await utils.addLog('$tick', name, url, os_version));
|
|
||||||
|
|
||||||
return await utils.writeScript(filename, script);
|
return await utils.writeScript(filename, script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ configure_composer() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
composer -q global config process-timeout 0
|
composer -q global config process-timeout 0
|
||||||
echo "/Users/$USER/.composer/vendor/bin" >> $GITHUB_PATH
|
echo "::add-path::/Users/$USER/.composer/vendor/bin"
|
||||||
if [ -n "$COMPOSER_TOKEN" ]; then
|
if [ -n "$COMPOSER_TOKEN" ]; then
|
||||||
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
|
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
|
||||||
fi
|
fi
|
||||||
@ -166,12 +166,13 @@ add_tool() {
|
|||||||
if [ ! -e "$tool_path" ]; then
|
if [ ! -e "$tool_path" ]; then
|
||||||
rm -rf "$tool_path"
|
rm -rf "$tool_path"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$tool" = "composer" ]; then
|
if [ "$tool" = "composer" ]; then
|
||||||
IFS="," read -r -a urls <<< "$url"
|
IFS="," read -r -a urls <<< "$url"
|
||||||
status_code=$(sudo curl -f -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[0]}") ||
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[0]}") ||
|
||||||
status_code=$(sudo curl -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[1]}")
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[1]}")
|
||||||
else
|
else
|
||||||
status_code=$(sudo curl -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "$url")
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "$url")
|
||||||
fi
|
fi
|
||||||
if [ "$status_code" = "200" ]; then
|
if [ "$status_code" = "200" ]; then
|
||||||
sudo chmod a+x "$tool_path"
|
sudo chmod a+x "$tool_path"
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
# Function to log license details.
|
|
||||||
add_license_log() {
|
|
||||||
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$ext" "Click to read the $ext related license information"
|
|
||||||
printf "Cubrid CCI package is required for %s extension.\n" "$ext"
|
|
||||||
printf "The extension %s and Cubrid CCI are provided under the license linked below.\n" "$ext"
|
|
||||||
printf "Refer to: \033[35;1m%s \033[0m\n" "https://github.com/CUBRID/cubrid-cci/blob/develop/COPYING"
|
|
||||||
echo "::endgroup::"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to set cubrid repo for the extension.
|
|
||||||
set_cubrid_repo() {
|
|
||||||
case "${ext:?}" in
|
|
||||||
"cubrid") cubrid_repo="cubrid-php";;
|
|
||||||
"pdo_cubrid") cubrid_repo="cubrid-pdo";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to set cubrid branch for a PHP version.
|
|
||||||
set_cubrid_branch() {
|
|
||||||
case "${version:?}" in
|
|
||||||
5.[3-6]) cubrid_branch="RB-9.3.0";;
|
|
||||||
*) cubrid_branch="develop";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
add_cubrid_helper() {
|
|
||||||
if ! [ -e "${ext_dir:?}/$ext.so" ]; then
|
|
||||||
status='Installed and enabled'
|
|
||||||
set_cubrid_repo
|
|
||||||
set_cubrid_branch
|
|
||||||
(
|
|
||||||
git clone -b "$cubrid_branch" --recursive "https://github.com/CUBRID/$cubrid_repo" "/tmp/$cubrid_repo"
|
|
||||||
cd "/tmp/$cubrid_repo" || exit
|
|
||||||
! [[ "$version" =~ ${old_versions:?} ]] && add_devtools
|
|
||||||
phpize && ./configure --with-php-config="$(command -v php-config)" --with-"${ext/_/-}"=shared
|
|
||||||
make -j"$(nproc)"
|
|
||||||
sudo make install
|
|
||||||
)
|
|
||||||
echo "extension=$ext.so" | sudo tee "${scan_dir:?}/$ext.ini"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add cubrid and pdo_cubrid.
|
|
||||||
add_cubrid() {
|
|
||||||
ext=$1
|
|
||||||
status='Enabled'
|
|
||||||
add_cubrid_helper >/dev/null 2>&1
|
|
||||||
add_extension_log "$ext" "$status"
|
|
||||||
check_extension "$ext" && add_license_log
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
# Function to install ICU
|
|
||||||
install_icu() {
|
|
||||||
icu=$1
|
|
||||||
if [ "$(php -i | grep "ICU version =>" | sed -e "s|.*=> s*||")" != "$icu" ]; then
|
|
||||||
sudo curl -o /tmp/icu.tar.zst -sL "https://dl.bintray.com/shivammathur/icu4c/icu4c-$icu.tar.zst"
|
|
||||||
sudo tar -I zstd -xf /tmp/icu.tar.zst -C /usr/local
|
|
||||||
sudo cp -r /usr/local/icu/lib/* /usr/lib/x86_64-linux-gnu/
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add ext-intl with the given version of ICU
|
|
||||||
add_intl() {
|
|
||||||
icu=$(echo "$1" | cut -d'-' -f 2)
|
|
||||||
supported_version=$(curl "${curl_opts[@]:?}" https://api.bintray.com/packages/shivammathur/icu4c/icu4c | grep -Po "$icu" | head -n 1)
|
|
||||||
if [ "$icu" != "$supported_version" ]; then
|
|
||||||
add_log "${cross:?}" "intl" "ICU $icu is not supported"
|
|
||||||
else
|
|
||||||
install_icu "$icu" >/dev/null 2>&1
|
|
||||||
sudo curl "${curl_opts[@]:?}" -o "${ext_dir:?}/intl.so" "https://dl.bintray.com/shivammathur/icu4c/php${version:?}-intl-$icu.so"
|
|
||||||
enable_extension intl extension
|
|
||||||
add_extension_log intl "Installed and enabled with ICU $icu"
|
|
||||||
fi
|
|
||||||
}
|
|
@ -21,7 +21,7 @@ Function Add-InstantClient() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to install oci8 and pdo_oci.
|
# Function to install oci8 and pdo_oci.
|
||||||
Function Add-Oci() {
|
Function Add-OCI() {
|
||||||
Param (
|
Param (
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
[ValidateNotNull()]
|
[ValidateNotNull()]
|
||||||
@ -35,19 +35,16 @@ Function Add-Oci() {
|
|||||||
if ($extension -eq "pdo_oci") {
|
if ($extension -eq "pdo_oci") {
|
||||||
Enable-PhpExtension pdo_oci -Path $php_dir
|
Enable-PhpExtension pdo_oci -Path $php_dir
|
||||||
} else {
|
} else {
|
||||||
if(-not(Test-Path $ext_dir\php_oci8.dll)) {
|
$status = 'Installed and enabled'
|
||||||
$status = 'Installed and enabled'
|
$ociVersion = '2.2.0'
|
||||||
$ociVersion = '2.2.0'
|
if ($version -eq '7.0') {
|
||||||
if ($version -eq '7.0') {
|
$ociVersion = '2.1.8'
|
||||||
$ociVersion = '2.1.8'
|
} elseif ($version -lt '7.0') {
|
||||||
} elseif ($version -lt '7.0') {
|
$ociVersion = '2.0.12'
|
||||||
$ociVersion = '2.0.12'
|
|
||||||
}
|
|
||||||
$ociUrl = Get-PeclArchiveUrl oci8 $ociVersion $installed
|
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $ociUrl -OutFile $php_dir\oci8.zip
|
|
||||||
Expand-Archive -Path $php_dir\oci8.zip -DestinationPath $ext_dir -Force
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
$ociUrl = Get-PeclArchiveUrl oci8 $ociVersion $installed
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri $ociUrl -OutFile $php_dir\oci8.zip
|
||||||
|
Expand-Archive -Path $php_dir\oci8.zip -DestinationPath $ext_dir -Force
|
||||||
Add-Content -Value "`r`nextension=php_oci8.dll" -Path $php_dir\php.ini
|
Add-Content -Value "`r`nextension=php_oci8.dll" -Path $php_dir\php.ini
|
||||||
}
|
}
|
||||||
Add-Log $tick $extension $status
|
Add-Log $tick $extension $status
|
||||||
|
@ -41,7 +41,6 @@ cleanup_lists() {
|
|||||||
sudo mv /etc/apt/sources.list.d /etc/apt/sources.list.d.save
|
sudo mv /etc/apt/sources.list.d /etc/apt/sources.list.d.save
|
||||||
sudo mkdir /etc/apt/sources.list.d
|
sudo mkdir /etc/apt/sources.list.d
|
||||||
sudo mv /etc/apt/sources.list.d.save/*ondrej*.list /etc/apt/sources.list.d/
|
sudo mv /etc/apt/sources.list.d.save/*ondrej*.list /etc/apt/sources.list.d/
|
||||||
sudo mv /etc/apt/sources.list.d.save/*dotdeb*.list /etc/apt/sources.list.d/ 2>/dev/null || true
|
|
||||||
trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/" exit
|
trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/" exit
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -125,10 +124,6 @@ delete_extension() {
|
|||||||
sudo sed -i "/$extension/d" "$pecl_file"
|
sudo sed -i "/$extension/d" "$pecl_file"
|
||||||
sudo rm -rf "$scan_dir"/*"$extension"* >/dev/null 2>&1
|
sudo rm -rf "$scan_dir"/*"$extension"* >/dev/null 2>&1
|
||||||
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
||||||
if [ "$runner" = "self-hosted" ]; then
|
|
||||||
$apt_remove "php-$extension" >/dev/null 2>&1 || true
|
|
||||||
$apt_remove "php$version-$extension" >/dev/null 2>&1 || true
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable and delete extensions.
|
# Function to disable and delete extensions.
|
||||||
@ -169,7 +164,7 @@ add_pdo_extension() {
|
|||||||
read -r ext ext_name <<< "sqlite3 sqlite3"
|
read -r ext ext_name <<< "sqlite3 sqlite3"
|
||||||
fi
|
fi
|
||||||
add_extension "$ext_name" "$apt_install php$version-$ext" "extension" >/dev/null 2>&1
|
add_extension "$ext_name" "$apt_install php$version-$ext" "extension" >/dev/null 2>&1
|
||||||
add_extension "$pdo_ext" "pecl_install $pdo_ext" "extension" >/dev/null 2>&1
|
enable_extension "$pdo_ext" "extension"
|
||||||
add_extension_log "$pdo_ext" "Enabled"
|
add_extension_log "$pdo_ext" "Enabled"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -233,7 +228,7 @@ add_extension_from_source() {
|
|||||||
(
|
(
|
||||||
add_devtools
|
add_devtools
|
||||||
delete_extension "$extension"
|
delete_extension "$extension"
|
||||||
curl -o /tmp/"$extension".tar.gz "${curl_opts[@]}" https://github.com/"$repo"/archive/"$release".tar.gz
|
curl -o /tmp/"$extension".tar.gz "${curl_opts[@]}" https://github.com/"$repo"/archive/"$release".tar.gz
|
||||||
tar xf /tmp/"$extension".tar.gz -C /tmp
|
tar xf /tmp/"$extension".tar.gz -C /tmp
|
||||||
cd /tmp/"$extension-$release" || exit 1
|
cd /tmp/"$extension-$release" || exit 1
|
||||||
phpize && ./configure "$args" && make && sudo make install
|
phpize && ./configure "$args" && make && sudo make install
|
||||||
@ -252,7 +247,7 @@ configure_composer() {
|
|||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
composer -q global config process-timeout 0
|
composer -q global config process-timeout 0
|
||||||
echo "/home/$USER/.composer/vendor/bin" >> $GITHUB_PATH
|
echo "::add-path::/home/$USER/.composer/vendor/bin"
|
||||||
if [ -n "$COMPOSER_TOKEN" ]; then
|
if [ -n "$COMPOSER_TOKEN" ]; then
|
||||||
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
|
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
|
||||||
fi
|
fi
|
||||||
@ -268,10 +263,10 @@ add_tool() {
|
|||||||
fi
|
fi
|
||||||
if [ "$tool" = "composer" ]; then
|
if [ "$tool" = "composer" ]; then
|
||||||
IFS="," read -r -a urls <<< "$url"
|
IFS="," read -r -a urls <<< "$url"
|
||||||
status_code=$(sudo curl -f -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[0]}") ||
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[0]}") ||
|
||||||
status_code=$(sudo curl -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[1]}")
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "${urls[1]}")
|
||||||
else
|
else
|
||||||
status_code=$(sudo curl -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "$url")
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" "${curl_opts[@]}" "$url")
|
||||||
fi
|
fi
|
||||||
if [ "$status_code" = "200" ]; then
|
if [ "$status_code" = "200" ]; then
|
||||||
sudo chmod a+x "$tool_path"
|
sudo chmod a+x "$tool_path"
|
||||||
@ -402,7 +397,6 @@ old_versions="5.[3-5]"
|
|||||||
debconf_fix="DEBIAN_FRONTEND=noninteractive"
|
debconf_fix="DEBIAN_FRONTEND=noninteractive"
|
||||||
github="https://github.com/shivammathur"
|
github="https://github.com/shivammathur"
|
||||||
apt_install="sudo $debconf_fix apt-fast install -y"
|
apt_install="sudo $debconf_fix apt-fast install -y"
|
||||||
apt_remove="sudo $debconf_fix apt-fast remove -y"
|
|
||||||
tool_path_dir="/usr/local/bin"
|
tool_path_dir="/usr/local/bin"
|
||||||
curl_opts=(-sL)
|
curl_opts=(-sL)
|
||||||
existing_version=$(php-config --version 2>/dev/null | cut -c 1-3)
|
existing_version=$(php-config --version 2>/dev/null | cut -c 1-3)
|
||||||
@ -450,6 +444,5 @@ scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
|||||||
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
||||||
pecl_file="$scan_dir"/99-pecl.ini
|
pecl_file="$scan_dir"/99-pecl.ini
|
||||||
echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
|
echo '' | sudo tee "$pecl_file" >/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"
|
||||||
add_log "$tick" "PHP" "$status PHP $semver"
|
add_log "$tick" "PHP" "$status PHP $semver"
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
# Function to add blackfire and blackfire-agent.
|
# Function to add blackfire and blackfire-agent.
|
||||||
Function Add-Blackfire() {
|
Function Add-Blackfire() {
|
||||||
$arch_name ='amd64'
|
|
||||||
if(-not([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
|
|
||||||
$arch_name = '386'
|
|
||||||
}
|
|
||||||
$agent_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).agent
|
$agent_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).agent
|
||||||
$url = "https://packages.blackfire.io/binaries/blackfire-agent/${agent_version}/blackfire-agent-windows_${arch_name}.zip"
|
$url = "https://packages.blackfire.io/binaries/blackfire-agent/${agent_version}/blackfire-agent-windows_${arch_name}.zip"
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
|
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
|
||||||
|
@ -10,7 +10,7 @@ Function Add-Msys2() {
|
|||||||
Function Add-Grpc_php_plugin() {
|
Function Add-Grpc_php_plugin() {
|
||||||
$msys_location = Add-Msys2
|
$msys_location = Add-Msys2
|
||||||
. $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm mingw-w64-x86_64-grpc" >$null 2>&1
|
. $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm mingw-w64-x86_64-grpc" >$null 2>&1
|
||||||
Write-Output "$msys_location\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
|
Write-Output "::add-path::$msys_location\mingw64\bin"
|
||||||
Write-Output "::set-output name=grpc_php_plugin_path::$msys_location\mingw64\bin\grpc_php_plugin.exe"
|
Write-Output "::set-output name=grpc_php_plugin_path::$msys_location\mingw64\bin\grpc_php_plugin.exe"
|
||||||
Add-ToProfile $current_profile 'grpc_php_plugin' "New-Alias grpc_php_plugin $msys_location\mingw64\bin\grpc_php_plugin.exe"
|
Add-ToProfile $current_profile 'grpc_php_plugin' "New-Alias grpc_php_plugin $msys_location\mingw64\bin\grpc_php_plugin.exe"
|
||||||
Add-Log $tick "grpc_php_plugin" "Added"
|
Add-Log $tick "grpc_php_plugin" "Added"
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
get_protobuf_tag() {
|
get_protobuf_tag() {
|
||||||
if [ "$protobuf_tag" = "latest" ]; then
|
if [ "$protobuf_tag" = "latest" ]; then
|
||||||
protobuf_tag=$(curl "${curl_opts[@]:?}" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]+\.[0-9]+\.[0-9]+)" | head -n 1)
|
protobuf_tag=$(curl "${curl_opts[@]:?}" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]+.[0-9]+.[0-9]+)" | head -n 1)
|
||||||
else
|
else
|
||||||
status_code=$(sudo curl -s -w "%{http_code}" -o /tmp/protobuf.tmp "${curl_opts[@]:?}" "https://github.com/protocolbuffers/protobuf/releases/tag/v$protobuf_tag")
|
status_code=$(sudo curl -s -w "%{http_code}" -o /tmp/protobuf.tmp "${curl_opts[@]:?}" "https://github.com/protocolbuffers/protobuf/releases/tag/v$protobuf_tag")
|
||||||
if [ "$status_code" = "200" ]; then
|
if [ "$status_code" = "200" ]; then
|
||||||
protobuf_tag="v$protobuf_tag"
|
protobuf_tag="v$protobuf_tag"
|
||||||
else
|
else
|
||||||
protobuf_tag=$(curl "${curl_opts[@]:?}" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]+\.[0-9]+\.[0-9]+)" | head -n 1)
|
protobuf_tag=$(curl "${curl_opts[@]:?}" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]+.[0-9]+.[0-9]+)" | head -n 1)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -64,20 +64,6 @@ Function Add-Path {
|
|||||||
Get-PathFromRegistry
|
Get-PathFromRegistry
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to make sure printf is in PATH.
|
|
||||||
Function Add-Printf {
|
|
||||||
if (-not(Test-Path "C:\Program Files\Git\usr\bin\printf.exe")) {
|
|
||||||
if(Test-Path "C:\msys64\usr\bin\printf.exe") {
|
|
||||||
New-Item -Path $bin_dir\printf.exe -ItemType SymbolicLink -Value C:\msys64\usr\bin\printf.exe
|
|
||||||
} else {
|
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/shivammathur/printf/releases/latest/download/printf-x64.zip" -OutFile "$bin_dir\printf.zip"
|
|
||||||
Expand-Archive -Path $bin_dir\printf.zip -DestinationPath $bin_dir -Force
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
New-Item -Path $bin_dir\printf.exe -ItemType SymbolicLink -Value "C:\Program Files\Git\usr\bin\printf.exe"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get a clean Powershell profile.
|
# Function to get a clean Powershell profile.
|
||||||
Function Get-CleanPSProfile {
|
Function Get-CleanPSProfile {
|
||||||
if(-not(Test-Path -LiteralPath $profile)) {
|
if(-not(Test-Path -LiteralPath $profile)) {
|
||||||
@ -89,12 +75,13 @@ Function Get-CleanPSProfile {
|
|||||||
|
|
||||||
# Function to install PhpManager.
|
# Function to install PhpManager.
|
||||||
Function Install-PhpManager() {
|
Function Install-PhpManager() {
|
||||||
$module_path = "$bin_dir\PhpManager\PhpManager.psm1"
|
$repo = "mlocati/powershell-phpmanager"
|
||||||
|
$tag = (Invoke-RestMethod https://api.github.com/repos/$repo/tags)[0].Name
|
||||||
|
$module_path = "$bin_dir\PhpManager\powershell-phpmanager-$tag\PhpManager\PhpManager.psm1"
|
||||||
if(-not (Test-Path $module_path -PathType Leaf)) {
|
if(-not (Test-Path $module_path -PathType Leaf)) {
|
||||||
$release = Invoke-RestMethod https://api.github.com/repos/mlocati/powershell-phpmanager/releases/latest
|
|
||||||
$zip_file = "$bin_dir\PhpManager.zip"
|
$zip_file = "$bin_dir\PhpManager.zip"
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $release.assets[0].browser_download_url -OutFile $zip_file
|
Invoke-WebRequest -UseBasicParsing -Uri https://github.com/$repo/archive/$tag.zip -OutFile $zip_file
|
||||||
Expand-Archive -Path $zip_file -DestinationPath $bin_dir -Force
|
Expand-Archive -Path $zip_file -DestinationPath $bin_dir\PhpManager -Force
|
||||||
}
|
}
|
||||||
Import-Module $module_path
|
Import-Module $module_path
|
||||||
Add-ToProfile $current_profile 'powershell-phpmanager' "Import-Module $module_path"
|
Add-ToProfile $current_profile 'powershell-phpmanager' "Import-Module $module_path"
|
||||||
@ -189,7 +176,7 @@ Function Edit-ComposerConfig() {
|
|||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
composer -q global config process-timeout 0
|
composer -q global config process-timeout 0
|
||||||
Write-Output "$env:APPDATA\Composer\vendor\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
|
Write-Output "::add-path::$env:APPDATA\Composer\vendor\bin"
|
||||||
if (Test-Path env:COMPOSER_TOKEN) {
|
if (Test-Path env:COMPOSER_TOKEN) {
|
||||||
composer -q global config github-oauth.github.com $env:COMPOSER_TOKEN
|
composer -q global config github-oauth.github.com $env:COMPOSER_TOKEN
|
||||||
}
|
}
|
||||||
@ -289,14 +276,17 @@ $master_version = '8.0'
|
|||||||
$cert_source='CurrentUser'
|
$cert_source='CurrentUser'
|
||||||
|
|
||||||
$arch = 'x64'
|
$arch = 'x64'
|
||||||
|
$arch_name ='amd64'
|
||||||
if(-not([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
|
if(-not([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
|
||||||
$arch = 'x86'
|
$arch = 'x86'
|
||||||
|
$arch_name = '386'
|
||||||
}
|
}
|
||||||
|
|
||||||
$ts = $env:PHPTS -eq 'ts'
|
$ts = $env:PHPTS -eq 'ts'
|
||||||
if($env:PHPTS -ne 'ts') {
|
if($env:PHPTS -ne 'ts') {
|
||||||
$env:PHPTS = 'nts'
|
$env:PHPTS = 'nts'
|
||||||
}
|
}
|
||||||
|
|
||||||
if($env:RUNNER -eq 'self-hosted') {
|
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"
|
||||||
@ -305,6 +295,10 @@ if($env:RUNNER -eq 'self-hosted') {
|
|||||||
Get-CleanPSProfile >$null 2>&1
|
Get-CleanPSProfile >$null 2>&1
|
||||||
New-Item $bin_dir -Type Directory 2>&1 | Out-Null
|
New-Item $bin_dir -Type Directory 2>&1 | Out-Null
|
||||||
Add-Path -PathItem $bin_dir
|
Add-Path -PathItem $bin_dir
|
||||||
|
if(-not(Test-Path $bin_dir\printf.exe)) {
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/shivammathur/printf/releases/latest/download/printf-$arch.zip" -OutFile "$bin_dir\printf.zip" >$null 2>&1
|
||||||
|
Expand-Archive -Path $bin_dir\printf.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
||||||
|
}
|
||||||
if($version -lt 5.6) {
|
if($version -lt 5.6) {
|
||||||
Add-Log $cross "PHP" "PHP $version is not supported on self-hosted runner"
|
Add-Log $cross "PHP" "PHP $version is not supported on self-hosted runner"
|
||||||
Start-Sleep 1
|
Start-Sleep 1
|
||||||
@ -322,8 +316,6 @@ if($env:RUNNER -eq 'self-hosted') {
|
|||||||
New-Item -Path $current_profile -ItemType "file" -Force >$null 2>&1
|
New-Item -Path $current_profile -ItemType "file" -Force >$null 2>&1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Add-Printf >$null 2>&1
|
|
||||||
Step-Log "Setup PhpManager"
|
Step-Log "Setup PhpManager"
|
||||||
Install-PhpManager >$null 2>&1
|
Install-PhpManager >$null 2>&1
|
||||||
Add-Log $tick "PhpManager" "Installed"
|
Add-Log $tick "PhpManager" "Installed"
|
||||||
|
115
src/tools.ts
115
src/tools.ts
@ -1,4 +1,32 @@
|
|||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
import * as httpm from '@actions/http-client';
|
||||||
|
import {IHttpClientResponse as hcr} from '@actions/http-client/interfaces';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get command to setup tools
|
||||||
|
*
|
||||||
|
* @param os_version
|
||||||
|
* @param suffix
|
||||||
|
*/
|
||||||
|
export async function getCommand(
|
||||||
|
os_version: string,
|
||||||
|
suffix: string
|
||||||
|
): Promise<string> {
|
||||||
|
switch (os_version) {
|
||||||
|
case 'linux':
|
||||||
|
case 'darwin':
|
||||||
|
return 'add_' + suffix + ' ';
|
||||||
|
case 'win32':
|
||||||
|
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
||||||
|
default:
|
||||||
|
return await utils.log(
|
||||||
|
'Platform ' + os_version + ' is not supported',
|
||||||
|
os_version,
|
||||||
|
'error'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to get tool version
|
* Function to get tool version
|
||||||
@ -166,12 +194,12 @@ export async function addPhive(
|
|||||||
switch (version) {
|
switch (version) {
|
||||||
case 'latest':
|
case 'latest':
|
||||||
return (
|
return (
|
||||||
(await utils.getCommand(os_version, 'tool')) +
|
(await getCommand(os_version, 'tool')) +
|
||||||
'https://phar.io/releases/phive.phar phive'
|
'https://phar.io/releases/phive.phar phive'
|
||||||
);
|
);
|
||||||
default:
|
default:
|
||||||
return (
|
return (
|
||||||
(await utils.getCommand(os_version, 'tool')) +
|
(await getCommand(os_version, 'tool')) +
|
||||||
'https://github.com/phar-io/phive/releases/download/' +
|
'https://github.com/phar-io/phive/releases/download/' +
|
||||||
version +
|
version +
|
||||||
'/phive-' +
|
'/phive-' +
|
||||||
@ -305,15 +333,21 @@ export async function getComposerUrl(version: string): Promise<string> {
|
|||||||
'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-' +
|
'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-' +
|
||||||
version.replace('latest', 'stable') +
|
version.replace('latest', 'stable') +
|
||||||
'.phar,';
|
'.phar,';
|
||||||
|
const getComposerUrlHelper = async function (
|
||||||
|
version: string
|
||||||
|
): Promise<string> {
|
||||||
|
const client: httpm.HttpClient = new httpm.HttpClient('setup-php');
|
||||||
|
const response: hcr = await client.get('https://getcomposer.org/versions');
|
||||||
|
const data = JSON.parse(await response.readBody());
|
||||||
|
return cache_url + 'https://getcomposer.org' + data[version][0]['path'];
|
||||||
|
};
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case 'snapshot':
|
case 'snapshot':
|
||||||
return cache_url + 'https://getcomposer.org/composer.phar';
|
return cache_url + 'https://getcomposer.org/composer.phar';
|
||||||
case 'preview':
|
case 'preview':
|
||||||
case '1':
|
case '1':
|
||||||
case '2':
|
case '2':
|
||||||
return (
|
return await getComposerUrlHelper(version);
|
||||||
cache_url + 'https://getcomposer.org/composer-' + version + '.phar'
|
|
||||||
);
|
|
||||||
default:
|
default:
|
||||||
return cache_url + 'https://getcomposer.org/composer-stable.phar';
|
return cache_url + 'https://getcomposer.org/composer-stable.phar';
|
||||||
}
|
}
|
||||||
@ -346,15 +380,17 @@ export async function getCleanedToolsList(
|
|||||||
* Helper function to get script to setup a tool using a phar url
|
* Helper function to get script to setup a tool using a phar url
|
||||||
*
|
*
|
||||||
* @param tool
|
* @param tool
|
||||||
|
* @param version
|
||||||
* @param url
|
* @param url
|
||||||
* @param os_version
|
* @param os_version
|
||||||
*/
|
*/
|
||||||
export async function addArchive(
|
export async function addArchive(
|
||||||
tool: string,
|
tool: string,
|
||||||
|
version: string,
|
||||||
url: string,
|
url: string,
|
||||||
os_version: string
|
os_version: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
return (await utils.getCommand(os_version, 'tool')) + url + ' ' + tool;
|
return (await getCommand(os_version, 'tool')) + url + ' ' + tool;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -406,10 +442,31 @@ export async function addPackage(
|
|||||||
prefix: string,
|
prefix: string,
|
||||||
os_version: string
|
os_version: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const tool_command = await utils.getCommand(os_version, 'composertool');
|
const tool_command = await getCommand(os_version, 'composertool');
|
||||||
return tool_command + tool + ' ' + release + ' ' + prefix;
|
return tool_command + tool + ' ' + release + ' ' + prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get script to add tools with custom support.
|
||||||
|
*
|
||||||
|
* @param tool
|
||||||
|
* @param version
|
||||||
|
* @param os_version
|
||||||
|
*/
|
||||||
|
export async function addCustomTool(
|
||||||
|
tool: string,
|
||||||
|
version: string,
|
||||||
|
os_version: string
|
||||||
|
): Promise<string> {
|
||||||
|
const script_extension: string = await utils.scriptExtension(os_version);
|
||||||
|
const script: string = path.join(
|
||||||
|
__dirname,
|
||||||
|
'../src/scripts/tools/' + tool + script_extension
|
||||||
|
);
|
||||||
|
const command: string = await getCommand(os_version, tool);
|
||||||
|
return '. ' + script + '\n' + command + version;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup tools
|
* Setup tools
|
||||||
*
|
*
|
||||||
@ -443,26 +500,26 @@ export async function addTools(
|
|||||||
case 'blackfire':
|
case 'blackfire':
|
||||||
case 'grpc_php_plugin':
|
case 'grpc_php_plugin':
|
||||||
case 'protoc':
|
case 'protoc':
|
||||||
script += await utils.customPackage(tool, 'tools', version, os_version);
|
script += await addCustomTool(tool, version, os_version);
|
||||||
break;
|
break;
|
||||||
case 'blackfire-player':
|
case 'blackfire-player':
|
||||||
url = await getPharUrl('https://get.blackfire.io', tool, 'v', version);
|
url = await getPharUrl('https://get.blackfire.io', tool, 'v', version);
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'codeception':
|
case 'codeception':
|
||||||
url =
|
url =
|
||||||
'https://codeception.com/' +
|
'https://codeception.com/' +
|
||||||
(await getCodeceptionUri(version, php_version));
|
(await getCodeceptionUri(version, php_version));
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer':
|
case 'composer':
|
||||||
url = await getComposerUrl(version);
|
url = await getComposerUrl(version);
|
||||||
script += await addArchive('composer', url, os_version);
|
script += await addArchive('composer', version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer-normalize':
|
case 'composer-normalize':
|
||||||
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
||||||
url = github + 'ergebnis/composer-normalize/' + uri;
|
url = github + 'ergebnis/composer-normalize/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer-prefetcher':
|
case 'composer-prefetcher':
|
||||||
script += await addPackage(
|
script += await addPackage(
|
||||||
@ -475,39 +532,35 @@ export async function addTools(
|
|||||||
case 'composer-require-checker':
|
case 'composer-require-checker':
|
||||||
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
||||||
url = github + 'maglnet/ComposerRequireChecker/' + uri;
|
url = github + 'maglnet/ComposerRequireChecker/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer-unused':
|
case 'composer-unused':
|
||||||
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
|
||||||
url = github + 'composer-unused/composer-unused/' + uri;
|
url = github + 'composer-unused/composer-unused/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'cs2pr':
|
case 'cs2pr':
|
||||||
uri = await getUri(tool, '', version, 'releases', '', 'download');
|
uri = await getUri(tool, '', version, 'releases', '', 'download');
|
||||||
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
|
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'deployer':
|
case 'deployer':
|
||||||
url = await getDeployerUrl(version);
|
url = await getDeployerUrl(version);
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'flex':
|
case 'flex':
|
||||||
script += await addPackage(tool, release, 'symfony/', os_version);
|
script += await addPackage(tool, release, 'symfony/', os_version);
|
||||||
break;
|
break;
|
||||||
case 'infection':
|
case 'infection':
|
||||||
url = github + 'infection/infection/' + uri;
|
url = github + 'infection/infection/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'pecl':
|
case 'pecl':
|
||||||
script += await utils.getCommand(os_version, 'pecl');
|
script += await getCommand(os_version, 'pecl');
|
||||||
break;
|
break;
|
||||||
case 'phan':
|
case 'phan':
|
||||||
url = github + 'phan/phan/' + uri;
|
url = github + 'phan/phan/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
|
||||||
case 'phing':
|
|
||||||
url = 'https://www.phing.info/get/phing-' + version + '.phar';
|
|
||||||
script += await addArchive(tool, url, os_version);
|
|
||||||
break;
|
break;
|
||||||
case 'phinx':
|
case 'phinx':
|
||||||
script += await addPackage(tool, release, 'robmorgan/', os_version);
|
script += await addPackage(tool, release, 'robmorgan/', os_version);
|
||||||
@ -522,48 +575,48 @@ export async function addTools(
|
|||||||
case 'php-cs-fixer':
|
case 'php-cs-fixer':
|
||||||
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
|
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
|
||||||
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
|
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'phpcbf':
|
case 'phpcbf':
|
||||||
case 'phpcs':
|
case 'phpcs':
|
||||||
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
|
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'phpcpd':
|
case 'phpcpd':
|
||||||
case 'phpunit':
|
case 'phpunit':
|
||||||
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
|
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'phplint':
|
case 'phplint':
|
||||||
script += await addPackage(tool, release, 'overtrue/', os_version);
|
script += await addPackage(tool, release, 'overtrue/', os_version);
|
||||||
break;
|
break;
|
||||||
case 'phpmd':
|
case 'phpmd':
|
||||||
url = github + 'phpmd/phpmd/' + uri;
|
url = github + 'phpmd/phpmd/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'phpstan':
|
case 'phpstan':
|
||||||
url = github + 'phpstan/phpstan/' + uri;
|
url = github + 'phpstan/phpstan/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'prestissimo':
|
case 'prestissimo':
|
||||||
script += await addPackage(tool, release, 'hirak/', os_version);
|
script += await addPackage(tool, release, 'hirak/', os_version);
|
||||||
break;
|
break;
|
||||||
case 'psalm':
|
case 'psalm':
|
||||||
url = github + 'vimeo/psalm/' + uri;
|
url = github + 'vimeo/psalm/' + uri;
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'symfony':
|
case 'symfony':
|
||||||
case 'symfony-cli':
|
case 'symfony-cli':
|
||||||
uri = await getSymfonyUri(version, os_version);
|
uri = await getSymfonyUri(version, os_version);
|
||||||
url = github + 'symfony/cli/' + uri;
|
url = github + 'symfony/cli/' + uri;
|
||||||
script += await addArchive('symfony', url, os_version);
|
script += await addArchive('symfony', version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'vapor-cli':
|
case 'vapor-cli':
|
||||||
script += await addPackage(tool, release, 'laravel/', os_version);
|
script += await addPackage(tool, release, 'laravel/', os_version);
|
||||||
break;
|
break;
|
||||||
case 'wp-cli':
|
case 'wp-cli':
|
||||||
url = github + (await getWpCliUrl(version));
|
url = github + (await getWpCliUrl(version));
|
||||||
script += await addArchive(tool, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
script += await utils.addLog(
|
script += await utils.addLog(
|
||||||
|
49
src/utils.ts
49
src/utils.ts
@ -284,31 +284,6 @@ export async function getUnsupportedLog(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to get command to setup tools
|
|
||||||
*
|
|
||||||
* @param os_version
|
|
||||||
* @param suffix
|
|
||||||
*/
|
|
||||||
export async function getCommand(
|
|
||||||
os_version: string,
|
|
||||||
suffix: string
|
|
||||||
): Promise<string> {
|
|
||||||
switch (os_version) {
|
|
||||||
case 'linux':
|
|
||||||
case 'darwin':
|
|
||||||
return 'add_' + suffix + ' ';
|
|
||||||
case 'win32':
|
|
||||||
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
|
||||||
default:
|
|
||||||
return await log(
|
|
||||||
'Platform ' + os_version + ' is not supported',
|
|
||||||
os_version,
|
|
||||||
'error'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to join strings with space
|
* Function to join strings with space
|
||||||
*
|
*
|
||||||
@ -338,27 +313,3 @@ export async function scriptExtension(os_version: string): Promise<string> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to get script to add tools with custom support.
|
|
||||||
*
|
|
||||||
* @param pkg
|
|
||||||
* @param type
|
|
||||||
* @param version
|
|
||||||
* @param os_version
|
|
||||||
*/
|
|
||||||
export async function customPackage(
|
|
||||||
pkg: string,
|
|
||||||
type: string,
|
|
||||||
version: string,
|
|
||||||
os_version: string
|
|
||||||
): Promise<string> {
|
|
||||||
const pkg_name: string = pkg.replace(/\d+|pdo[_-]/, '');
|
|
||||||
const script_extension: string = await scriptExtension(os_version);
|
|
||||||
const script: string = path.join(
|
|
||||||
__dirname,
|
|
||||||
'../src/scripts/' + type + '/' + pkg_name + script_extension
|
|
||||||
);
|
|
||||||
const command: string = await getCommand(os_version, pkg_name);
|
|
||||||
return '\n. ' + script + '\n' + command + version;
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user