Compare commits

...

27 Commits
1.4.6 ... 1.5.3

Author SHA1 Message Date
2b938d931a Merge pull request #82 from shivammathur/develop
Improve workflows and documentation
2019-11-22 01:59:30 +05:30
71bd88f604 Combine workflows into one 2019-11-22 01:16:07 +05:30
242082a22f Update workflows and README, bump version 2019-11-22 01:13:20 +05:30
b9db11a072 Merge pull request #81 from shivammathur/develop
Fix check for existing extensions on windows
2019-11-15 21:00:02 +05:30
f381d2384c Fix check for existing extensions on windows 2019-11-15 20:36:50 +05:30
63d8fa1a9e Merge pull request #79 from shivammathur/develop
Bump PHP7.4 version on windows and macOS
2019-11-15 06:20:14 +05:30
dd1c34be39 Bump PHP7.4 version on windows and macOS 2019-11-15 05:24:58 +05:30
1eb8e8f5cd Merge pull request #78 from shivammathur/develop
1.5.1
2019-11-13 07:02:47 +05:30
0000679cbb Bump version to 1.5.1 2019-11-13 06:48:35 +05:30
7c5f2ab8e9 Fix extensions with PDO prefix 2019-11-13 06:29:58 +05:30
9d5e8ddc70 Update cache dependencies section after fix 2019-11-13 06:14:04 +05:30
77bc79bd22 Merge pull request #76 from shivammathur/develop
Edit extension installation, update cache yml
2019-11-08 16:16:49 +05:30
02c5ec11cc Use runner context in cache yml 2019-11-08 16:00:22 +05:30
d2e09be6ce Edit extensions installation on PHP7.4 2019-11-07 23:22:34 +05:30
013ddc75a3 Merge pull request #75 from shivammathur/develop
Fix matrix usage yml
2019-11-07 15:11:34 +05:30
25abc4c776 Fix matrix usage yml 2019-11-07 15:02:05 +05:30
4000f65b59 Merge pull request #74 from shivammathur/develop
Add PECL support on Linux
2019-11-07 14:47:29 +05:30
e14155415a Add PECL support on linux 2019-11-07 14:35:31 +05:30
9f16995a6f Merge pull request #73 from shivammathur/develop
Update OS/virtual environments available
2019-11-07 02:35:55 +05:30
24ecbee4ea Update OS/virtual environments available 2019-11-07 02:24:12 +05:30
c71102b8a0 Merge pull request #72 from shivammathur/develop
Revert to apt for extensions
2019-11-07 02:00:57 +05:30
0815f5a8bb Revert to apt for extensions 2019-11-07 01:31:01 +05:30
e5076cee70 Merge pull request #70 from shivammathur/develop
Update cache dependencies section in README
2019-11-05 05:24:16 +05:30
bd85a2a227 Update cache dependencies section 2019-11-05 05:07:46 +05:30
976fb6996a Merge pull request #69 from shivammathur/develop
Improve documentation and workflows.
2019-11-03 10:48:58 +05:30
06e916db9d Improve documentation 2019-11-03 10:28:43 +05:30
46ac6f2211 Cache node_modules in workflows 2019-11-03 08:40:57 +05:30
24 changed files with 308 additions and 405 deletions

View File

@ -13,11 +13,11 @@ Please note that this project is released with a [Contributor Code of Conduct](C
Please make sure that you have [set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project. Please make sure that you have [set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project.
Due to time constraints, you may not always get a quick responce. Please do not take delays personal and feel free to remind me. Due to time constraints, you may not always get a quick response. Please do not take delays personal and feel free to remind.
## Coding Guidelines ## Coding Guidelines
This project comes with a `.prettierrc.json` configuration file. Please run the following command to format the code before commiting it. This project comes with a `.prettierrc.json` configuration file. Please run the following command to format the code before committing it.
```bash ```bash
$ npm run format $ npm run format
@ -49,6 +49,6 @@ $ npm test
## Reporting issues ## Reporting issues
Please submit the issue using the appropiate template provided for a bug report or a feature request: Please submit the issue using the appropriate template provided for a bug report or a feature request:
* [Issues](https://github.com/shivammathur/setup-php/issues) * [Issues](https://github.com/shivammathur/setup-php/issues)

View File

@ -1,11 +1,8 @@
--- ---
name: | name: 🐞 Bug Fix, ⚙ Improvement or 🎉 New Feature
🐞 Failing Test about: You found a bug, want to improve something or add a new feature
🐞 Bug Fix
⚙ Improvement
🎉 New Feature
about: You found a bug, have a failing test, want to improve something or add a new feature
labels: bug or enhancement labels: bug or enhancement
--- ---
## A Pull Request should be associated with an Issue. ## A Pull Request should be associated with an Issue.

View File

@ -1,30 +0,0 @@
---
name: 🐞 Failing Test
about: You found a bug and have a failing test?
labels: bug
---
## A Pull Request should be associated with an Issue.
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
> and potentially we'll be able to point development in a particular direction.
Related issue:
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
### Description
This PR [briefly explain what it does]
> In case this PR introduced TypeScript/JavaScript code changes:
- [ ] I have written test cases for the changes in this pull request
- [ ] I have run `npm run format` before the commit.
- [ ] `npm test` returns with no unit test errors.
<!--
- Please target the develop branch when submitting the pull request.
-->

View File

@ -2,6 +2,7 @@
name: 🐞 Bug Fix name: 🐞 Bug Fix
about: You have a fix for a bug? about: You have a fix for a bug?
labels: bug labels: bug
--- ---
## A Pull Request should be associated with an Issue. ## A Pull Request should be associated with an Issue.

View File

@ -2,6 +2,7 @@
name: ⚙ Improvement name: ⚙ Improvement
about: You have some improvement to make setup-php better? about: You have some improvement to make setup-php better?
labels: enhancement labels: enhancement
--- ---
## A Pull Request should be associated with an Issue. ## A Pull Request should be associated with an Issue.

View File

@ -2,6 +2,7 @@
name: 🎉 New Feature name: 🎉 New Feature
about: You have implemented some neat idea that you want to make part of setup-php? about: You have implemented some neat idea that you want to make part of setup-php?
labels: enhancement labels: enhancement
--- ---
## A Pull Request should be associated with an Issue. ## A Pull Request should be associated with an Issue.

View File

@ -1,52 +0,0 @@
name: Darwin workflow
on: [push, pull_request]
jobs:
run:
name: Run
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
max-parallel: 15
matrix:
operating-system: [macOS-latest]
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Setup Node.js 12.x
uses: actions/setup-node@master
with:
node-version: 12.x
- name: Installing NPM packages
run: npm install
- name: Run tests
run: npm test
- name: Send Coverage
continue-on-error: true
timeout-minutes: 2
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}
- name: Setup PHP with extensions and custom config
run: node lib/install.js
env:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, xdebug, pcov #optional
ini-values-csv: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata #optional
- name: Testing PHP version
run: php -v
- name: Testing Composer version
run: composer -V
- name: Testing Extensions
run: php -m
- name: Testing ini values
run: |
printf "post_max_size: %s\n" $(php -r "echo ini_get('post_max_size');")
printf "short_open_tag: %s\n" $(php -r "echo ini_get('short_open_tag');")
printf "date.timezone: %s\n" $(php -r "echo ini_get('date.timezone');")

View File

@ -1,52 +0,0 @@
name: Windows workflow
on: [push, pull_request]
jobs:
run:
name: Run
runs-on: ${{ matrix.operating-system }}
strategy:
fail-fast: false
max-parallel: 15
matrix:
operating-system: [windows-latest]
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3']
steps:
- name: Checkout
uses: actions/checkout@master
with:
fetch-depth: 1
- name: Setup Node.js 12.x
uses: actions/setup-node@master
with:
node-version: 12.x
- name: Installing NPM packages
run: npm install
- name: Run tests
run: npm test
- name: Send Coverage
continue-on-error: true
timeout-minutes: 2
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}
- name: Setup PHP with extensions and custom config
run: node lib/install.js
env:
php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, xdebug, pcov #optional
ini-values-csv: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata #optional
- name: Testing PHP version
run: php -v
- name: Testing Composer version
run: composer -V
- name: Testing Extensions
run: php -m
- name: Testing ini values
run: |
printf "post_max_size: %s\n" $(php -r "echo ini_get('post_max_size');")
printf "short_open_tag: %s\n" $(php -r "echo ini_get('short_open_tag');")
printf "date.timezone: %s\n" $(php -r "echo ini_get('date.timezone');")

View File

@ -1,4 +1,4 @@
name: Ubuntu workflow name: Main workflow
on: [push, pull_request] on: [push, pull_request]
jobs: jobs:
run: run:
@ -6,9 +6,8 @@ jobs:
runs-on: ${{ matrix.operating-system }} runs-on: ${{ matrix.operating-system }}
strategy: strategy:
fail-fast: false fail-fast: false
max-parallel: 15
matrix: matrix:
operating-system: [ubuntu-latest] operating-system: [ubuntu-latest, windows-latest, macOS-latest]
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3'] php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3']
steps: steps:
- name: Checkout - name: Checkout
@ -21,7 +20,17 @@ jobs:
with: with:
node-version: 12.x node-version: 12.x
- name: Cache node modules
uses: actions/cache@preview
id: cache
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Installing NPM packages - name: Installing NPM packages
if: steps.cache.outputs.cache-hit != 'true'
run: npm install run: npm install
- name: Run tests - name: Run tests

View File

@ -17,6 +17,26 @@
Setup PHP with required extensions, php.ini configuration and composer in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action can be added as a step in your action workflow and it will 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 and composer in [GitHub Actions](https://github.com/features/actions "GitHub Actions"). This action can be added as a step in your action workflow and it will 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.
## Contents
- [PHP Support](#tada-php-support)
- [OS/Platform Support](#cloud-osplatform-support)
- [PHP Extension Support](#wrench-php-extension-support)
- [Coverage support](#signal_strength-coverage-support)
- [Xdebug](#xdebug)
- [PCOV](#pcov)
- [Disable coverage](#disable-coverage)
- [Usage](#memo-usage)
- [Basic Usage](#basic-usage)
- [Matrix Testing](#matrix-testing)
- [Cache dependencies](#cache-dependencies)
- [Examples](#examples)
- [License](#scroll-license)
- [Contributions](#1-contributions)
- [Support this project](#sparkling_heart-support-this-project)
- [This action uses the following works](#bookmark-this-action-uses-the-following-works)
- [Further Reading](#bookmark_tabs-further-reading)
## :tada: PHP Support ## :tada: PHP Support
|PHP Version|Stability|Release Support| |PHP Version|Stability|Release Support|
@ -26,23 +46,21 @@ Setup PHP with required extensions, php.ini configuration and composer in [GitHu
|7.1|`Stable`|`Security fixes only`| |7.1|`Stable`|`Security fixes only`|
|7.2|`Stable`|`Active`| |7.2|`Stable`|`Active`|
|7.3|`Stable`|`Active`| |7.3|`Stable`|`Active`|
|7.4|`RC4`/`RC5`|`Active`| |7.4|`RC6`|`Active`|
**Note:** PHP 7.4 is currently in development, do not use in production/release branches.
## :cloud: OS/Platform Support ## :cloud: OS/Platform Support
|Virtual environment|matrix.operating-system| |Virtual environment|matrix.operating-system|
|--- |--- | |--- |--- |
|Windows Server 2019|`windows-latest` or `windows-2019`| |Windows Server 2019|`windows-latest` or `windows-2019`|
|Windows Server 2016 R2|`windows-2016`|
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`| |Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|
|Ubuntu 16.04|`ubuntu-16.04`| |Ubuntu 16.04|`ubuntu-16.04`|
|macOS X Mojave 10.14|`macOS-latest` or `macOS-10.14`| |macOS X Catalina 10.15|`macOS-latest` or `macOS-10.15`|
## :wrench: PHP Extension Support ## :wrench: PHP Extension Support
- On `ubuntu` extensions which have the package in apt are installed. - On `ubuntu` by default extensions which are available as a package can be installed. If the extension is not available as a package but it is on `PECL`, it can be installed by specifying `pecl: true`.
- On `windows` and `macOS` PECL extensions are installed. - On `windows` extensions which have `windows` binary on `PECL` can be installed.
- On `macOS` extensions which are on `PECL` can be installed.
- Extensions which are installed along with PHP if specified are enabled. - Extensions which are installed along with PHP if specified are enabled.
- Extensions which cannot be installed gracefully leave an error message in the logs, the action is not interrupted. - Extensions which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
@ -64,7 +82,7 @@ with:
Specify `coverage: pcov` to use `PCOV`. Specify `coverage: pcov` to use `PCOV`.
It is much faster than `Xdebug`. It is much faster than `Xdebug`.
`PCOV` needs `PHP >= 7.1` `PCOV` needs `PHP >= 7.1`.
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values-csv` input. If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values-csv` input.
@ -80,9 +98,10 @@ with:
Specify `coverage: none` to disable both `Xdebug` and `PCOV`. Specify `coverage: none` to disable both `Xdebug` and `PCOV`.
Consider disabling the coverage using this PHP action for these reasons. Consider disabling the coverage using this PHP action for these reasons.
- You are not generating coverage reports while testing. - You are not generating coverage reports while testing.
- It will disable `Xdebug`, which will have a positive impact on PHP performance. - It will disable `Xdebug`, which will have a positive impact on PHP performance.
- You are using `phpdbg`. - You are using `phpdbg` for running your tests.
```yaml ```yaml
uses: shivammathur/setup-php@master uses: shivammathur/setup-php@master
@ -99,6 +118,7 @@ Inputs supported by this GitHub Action.
- extension-csv `optional` - extension-csv `optional`
- ini-values-csv `optional` - ini-values-csv `optional`
- coverage `optional` - coverage `optional`
- pecl `optional`
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info. See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
@ -108,17 +128,22 @@ See [action.yml](action.yml "Metadata for this GitHub Action") and usage below f
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@master uses: actions/checkout@master
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@master uses: shivammathur/setup-php@master
with: with:
php-version: '7.3' php-version: '7.3'
extension-csv: mbstring, xdebug #optional extension-csv: mbstring, intl #optional, setup extensions
ini-values-csv: post_max_size=256M, short_open_tag=On #optional ini-values-csv: post_max_size=256M, short_open_tag=On #optional, setup php.ini configuration
coverage: xdebug #optional coverage: xdebug #optional, setup coverage driver
pecl: false #optional, setup PECL
- name: Check PHP Version - name: Check PHP Version
run: php -v run: php -v
- name: Check Composer Version - name: Check Composer Version
run: composer -V run: composer -V
- name: Check PHP Extensions - name: Check PHP Extensions
run: php -m run: php -m
``` ```
@ -130,7 +155,6 @@ jobs:
run: run:
runs-on: ${{ matrix.operating-system }} runs-on: ${{ matrix.operating-system }}
strategy: strategy:
max-parallel: 15
matrix: matrix:
operating-system: [ubuntu-latest, windows-latest, macOS-latest] operating-system: [ubuntu-latest, windows-latest, macOS-latest]
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3'] php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3']
@ -138,21 +162,48 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@master uses: actions/checkout@master
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@master uses: shivammathur/setup-php@master
with: with:
php-version: ${{ matrix.php-versions }} php-version: ${{ matrix.php-versions }}
extension-csv: mbstring, xdebug #optional extension-csv: mbstring, intl #optional, setup extensions
ini-values-csv: post_max_size=256M, short_open_tag=On #optional ini-values-csv: post_max_size=256M, short_open_tag=On #optional, setup php.ini configuration
coverage: xdebug #optional coverage: xdebug #optional, setup coverage driver
pecl: false #optional, setup PECL
- name: Check PHP Version - name: Check PHP Version
run: php -v run: php -v
- name: Check Composer Version - name: Check Composer Version
run: composer -V run: composer -V
- name: Check PHP Extensions - name: Check PHP Extensions
run: php -m run: php -m
``` ```
### Cache dependencies
You can persist composer's internal cache directory using the [`action/cache`](https://github.com/actions/cache "GitHub Action to cache files") GitHub Action. Dependencies cached are loaded directly instead of downloading them while installation. The files cached are available across check-runs and will reduce the workflow execution time.
**Note:** Please do not cache `vendor` directory using `action/cache` as that will have side-effects.
```yaml
- name: Get Composer Cache Directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v1
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- name: Install Dependencies
run: composer install --prefer-dist
```
### Examples ### Examples
Examples for setting up this GitHub Action with different PHP Frameworks/Packages. Examples for setting up this GitHub Action with different PHP Frameworks/Packages.
@ -177,16 +228,19 @@ Examples for setting up this GitHub Action with different PHP Frameworks/Package
## :scroll: License ## :scroll: License
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/setup-php"). This project has multiple [dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Dependencies for this PHP Action") and their licenses can be found in their respective repositories. The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/setup-php"). This project has multiple [dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Dependencies for this PHP Action") and uses [various works](#bookmark-this-action-uses-the-following-works "Tools used by this action"). Their licenses can be found in their respective repositories.
## :+1: Contributions ## :+1: Contributions
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide"). Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/setup-php contribution guide"). 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").
## :sparkling_heart: Support this project ## :sparkling_heart: Support this project
- Please star the project and share it. If this action helped you.
- Please support on <a href="https://www.patreon.com/shivammathur"><img alt="Support me on Patreon" src="https://shivammathur.com/badges/patreon.svg"></a> and <a href="https://www.paypal.me/shivammathur"><img alt="Support me on Paypal" src="https://shivammathur.com/badges/paypal.svg"></a>.
- Please star the project and share it, this helps reach more people.
- If you blog, write about your experience using this.
- Support on this project on <a href="https://www.patreon.com/shivammathur"><img alt="Patreon" src="https://shivammathur.com/badges/patreon.svg"></a> or using <a href="https://www.paypal.me/shivammathur"><img alt="Paypal" src="https://shivammathur.com/badges/paypal.svg"></a>.
## :bookmark: This action uses the following works ## :bookmark: This action uses the following works

View File

@ -40,15 +40,13 @@ describe('Extension tests', () => {
'linux' 'linux'
); );
expect(linux).toContain( expect(linux).toContain(
'sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php7.2-xdebug' 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php7.2-xdebug'
); );
expect(linux).toContain('pecl install xdebug');
expect(linux).toContain( expect(linux).toContain(
'sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php7.2-pcov' 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php7.2-pcov'
); );
expect(linux).toContain('pecl install pcov');
linux = await extensions.addExtension('xdebug, pcov', '7.4', 'linux');
expect(linux).toContain('xdebug.sh');
expect(linux).toContain('pcov.sh');
linux = await extensions.addExtension('phalcon3, phalcon4', '7.2', 'linux'); linux = await extensions.addExtension('phalcon3, phalcon4', '7.2', 'linux');
expect(linux).toContain('phalcon.sh master 7.2'); expect(linux).toContain('phalcon.sh master 7.2');
@ -80,12 +78,6 @@ describe('Extension tests', () => {
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin'); darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug-2.5.5'); expect(darwin).toContain('sudo pecl install xdebug-2.5.5');
darwin = await extensions.addExtension('xdebug', '7.4', 'darwin');
expect(darwin).toContain('xdebug_darwin.sh');
darwin = await extensions.addExtension('pcov', '7.4', 'darwin');
expect(darwin).toContain('pcov.sh');
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin'); darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
expect(darwin).toContain('sudo pecl install xdebug'); expect(darwin).toContain('sudo pecl install xdebug');

View File

@ -35,10 +35,14 @@ jest.mock('../src/install', () => ({
let script: string = ''; let script: string = '';
switch (os_version) { switch (os_version) {
case 'darwin': case 'darwin':
case 'linux':
script = await install.build(os_version + '.sh', version, os_version); script = await install.build(os_version + '.sh', version, os_version);
script += 'sh script.sh ' + version + ' ' + __dirname; script += 'sh script.sh ' + version + ' ' + __dirname;
break; break;
case 'linux':
let pecl: string = process.env['pecl'] || '';
script = await install.build(os_version + '.sh', version, os_version);
script += 'sh script.sh ' + version + ' ' + pecl + ' ' + __dirname;
break;
case 'win32': case 'win32':
script = await install.build(os_version + '.sh', version, os_version); script = await install.build(os_version + '.sh', version, os_version);
script += script +=
@ -67,24 +71,26 @@ function setEnv(
os: string, os: string,
extension_csv: string, extension_csv: string,
ini_values_csv: string, ini_values_csv: string,
coverage_driver: string coverage_driver: string,
pecl: any
): void { ): void {
process.env['php-version'] = version; process.env['php-version'] = version;
process.env['RUNNER_OS'] = os; process.env['RUNNER_OS'] = os;
process.env['extension-csv'] = extension_csv; process.env['extension-csv'] = extension_csv;
process.env['ini-values-csv'] = ini_values_csv; process.env['ini-values-csv'] = ini_values_csv;
process.env['coverage'] = coverage_driver; process.env['coverage'] = coverage_driver;
process.env['pecl'] = pecl;
} }
describe('Install', () => { describe('Install', () => {
it('Test install on windows', async () => { it('Test install on windows', async () => {
setEnv('7.3', 'win32', '', '', ''); setEnv('7.3', 'win32', '', '', '', '');
// @ts-ignore // @ts-ignore
let script: string = await install.run(); let script: string = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');
expect(script).toContain('pwsh script.ps1 -version 7.3 -dir ' + __dirname); expect(script).toContain('pwsh script.ps1 -version 7.3 -dir ' + __dirname);
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x'); setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '');
// @ts-ignore // @ts-ignore
script = await install.run(); script = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');
@ -95,30 +101,39 @@ describe('Install', () => {
}); });
it('Test install on linux', async () => { it('Test install on linux', async () => {
setEnv('7.3', 'linux', '', '', ''); setEnv('7.3', 'linux', '', '', '', '');
// @ts-ignore // @ts-ignore
let script: string = await install.run(); let script: string = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');
expect(script).toContain('sh script.sh 7.3 ' + __dirname); expect(script).toContain('sh script.sh 7.3 ');
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x'); setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'true');
// @ts-ignore // @ts-ignore
script = await install.run(); script = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');
expect(script).toContain('install extensions'); expect(script).toContain('install extensions');
expect(script).toContain('edit php.ini'); expect(script).toContain('edit php.ini');
expect(script).toContain('set coverage driver'); expect(script).toContain('set coverage driver');
expect(script).toContain('sh script.sh 7.3 ' + __dirname); expect(script).toContain('sh script.sh 7.3 true');
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', true);
// @ts-ignore
script = await install.run();
expect(script).toContain('initial script');
expect(script).toContain('install extensions');
expect(script).toContain('edit php.ini');
expect(script).toContain('set coverage driver');
expect(script).toContain('sh script.sh 7.3 true');
}); });
it('Test install on darwin', async () => { it('Test install on darwin', async () => {
setEnv('7.3', 'darwin', '', '', ''); setEnv('7.3', 'darwin', '', '', '', '');
// @ts-ignore // @ts-ignore
let script: string = await install.run(); let script: string = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');
expect(script).toContain('sh script.sh 7.3 ' + __dirname); expect(script).toContain('sh script.sh 7.3 ' + __dirname);
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x'); setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '');
// @ts-ignore // @ts-ignore
script = await install.run(); script = await install.run();
expect(script).toContain('initial script'); expect(script).toContain('initial script');

View File

@ -16,6 +16,9 @@ inputs:
coverage: coverage:
description: '(Optional) Code coverage driver you want to install. (Accepts: xdebug, pcov and none)' description: '(Optional) Code coverage driver you want to install. (Accepts: xdebug, pcov and none)'
required: false required: false
pecl:
description: '(Optional) Setup PECL on ubuntu'
required: false
runs: runs:
using: 'node12' using: 'node12'
main: 'lib/install.js' main: 'lib/install.js'

View File

@ -69,18 +69,6 @@ function addExtensionDarwin(extension_csv, version) {
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
let install_command = ''; let install_command = '';
switch (version + extension) { switch (version + extension) {
case '7.4xdebug':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/xdebug_darwin.sh') +
' >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
break;
case '7.4pcov':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/pcov.sh') +
' >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
case '5.6xdebug': case '5.6xdebug':
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1'; install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break; break;
@ -159,18 +147,6 @@ function addExtensionLinux(extension_csv, version) {
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
let install_command = ''; let install_command = '';
switch (version + extension) { switch (version + extension) {
case '7.4xdebug':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/xdebug.sh') +
' >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
break;
case '7.4pcov':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/pcov.sh') +
' >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
case '7.2phalcon3': case '7.2phalcon3':
case '7.3phalcon3': case '7.3phalcon3':
install_command = install_command =
@ -192,9 +168,11 @@ function addExtensionLinux(extension_csv, version) {
break; break;
default: default:
install_command = install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php' + 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php' +
version + version +
'-' + '-' +
extension.replace('pdo_', '').replace('pdo-', '') +
' >/dev/null 2>&1 || sudo pecl install ' +
extension + extension +
' >/dev/null 2>&1'; ' >/dev/null 2>&1';
break; break;

View File

@ -61,10 +61,14 @@ function run() {
let script_path = ''; let script_path = '';
switch (os_version) { switch (os_version) {
case 'darwin': case 'darwin':
case 'linux':
script_path = yield build(os_version + '.sh', version, os_version); script_path = yield build(os_version + '.sh', version, os_version);
yield exec_1.exec('sh ' + script_path + ' ' + version + ' ' + __dirname); yield exec_1.exec('sh ' + script_path + ' ' + version + ' ' + __dirname);
break; break;
case 'linux':
let pecl = yield utils.getInput('pecl', false);
script_path = yield build(os_version + '.sh', version, os_version);
yield exec_1.exec('sh ' + script_path + ' ' + version + ' ' + pecl);
break;
case 'win32': case 'win32':
script_path = yield build('win32.ps1', version, os_version); script_path = yield build('win32.ps1', version, os_version);
yield exec_1.exec('pwsh ' + script_path + ' -version ' + version + ' -dir ' + __dirname); yield exec_1.exec('pwsh ' + script_path + ' -version ' + version + ' -dir ' + __dirname);

View File

@ -110,9 +110,7 @@ function extensionArray(extension_csv) {
return extension return extension
.trim() .trim()
.replace('php-', '') .replace('php-', '')
.replace('php_', '') .replace('php_', '');
.replace('pdo_', '')
.replace('pdo-', '');
}); });
} }
}); });

292
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "setup-php", "name": "setup-php",
"version": "1.4.6", "version": "1.5.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -24,19 +24,19 @@
} }
}, },
"@babel/core": { "@babel/core": {
"version": "7.6.4", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz",
"integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==", "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.5.5", "@babel/code-frame": "^7.5.5",
"@babel/generator": "^7.6.4", "@babel/generator": "^7.7.2",
"@babel/helpers": "^7.6.2", "@babel/helpers": "^7.7.0",
"@babel/parser": "^7.6.4", "@babel/parser": "^7.7.2",
"@babel/template": "^7.6.0", "@babel/template": "^7.7.0",
"@babel/traverse": "^7.6.3", "@babel/traverse": "^7.7.2",
"@babel/types": "^7.6.3", "@babel/types": "^7.7.2",
"convert-source-map": "^1.1.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"json5": "^2.1.0", "json5": "^2.1.0",
"lodash": "^4.17.13", "lodash": "^4.17.13",
@ -69,12 +69,12 @@
} }
}, },
"@babel/generator": { "@babel/generator": {
"version": "7.6.4", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz",
"integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==", "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.6.3", "@babel/types": "^7.7.2",
"jsesc": "^2.5.1", "jsesc": "^2.5.1",
"lodash": "^4.17.13", "lodash": "^4.17.13",
"source-map": "^0.5.0" "source-map": "^0.5.0"
@ -89,23 +89,23 @@
} }
}, },
"@babel/helper-function-name": { "@babel/helper-function-name": {
"version": "7.1.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz",
"integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-get-function-arity": "^7.7.0",
"@babel/template": "^7.1.0", "@babel/template": "^7.7.0",
"@babel/types": "^7.0.0" "@babel/types": "^7.7.0"
} }
}, },
"@babel/helper-get-function-arity": { "@babel/helper-get-function-arity": {
"version": "7.0.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz",
"integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.0.0" "@babel/types": "^7.7.0"
} }
}, },
"@babel/helper-plugin-utils": { "@babel/helper-plugin-utils": {
@ -115,23 +115,23 @@
"dev": true "dev": true
}, },
"@babel/helper-split-export-declaration": { "@babel/helper-split-export-declaration": {
"version": "7.4.4", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz",
"integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.4.4" "@babel/types": "^7.7.0"
} }
}, },
"@babel/helpers": { "@babel/helpers": {
"version": "7.6.2", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz",
"integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/template": "^7.6.0", "@babel/template": "^7.7.0",
"@babel/traverse": "^7.6.2", "@babel/traverse": "^7.7.0",
"@babel/types": "^7.6.0" "@babel/types": "^7.7.0"
} }
}, },
"@babel/highlight": { "@babel/highlight": {
@ -146,9 +146,9 @@
} }
}, },
"@babel/parser": { "@babel/parser": {
"version": "7.6.4", "version": "7.7.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
"integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==",
"dev": true "dev": true
}, },
"@babel/plugin-syntax-object-rest-spread": { "@babel/plugin-syntax-object-rest-spread": {
@ -161,28 +161,28 @@
} }
}, },
"@babel/template": { "@babel/template": {
"version": "7.6.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz",
"integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.0.0", "@babel/code-frame": "^7.0.0",
"@babel/parser": "^7.6.0", "@babel/parser": "^7.7.0",
"@babel/types": "^7.6.0" "@babel/types": "^7.7.0"
} }
}, },
"@babel/traverse": { "@babel/traverse": {
"version": "7.6.3", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz",
"integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==", "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/code-frame": "^7.5.5", "@babel/code-frame": "^7.5.5",
"@babel/generator": "^7.6.3", "@babel/generator": "^7.7.2",
"@babel/helper-function-name": "^7.1.0", "@babel/helper-function-name": "^7.7.0",
"@babel/helper-split-export-declaration": "^7.4.4", "@babel/helper-split-export-declaration": "^7.7.0",
"@babel/parser": "^7.6.3", "@babel/parser": "^7.7.2",
"@babel/types": "^7.6.3", "@babel/types": "^7.7.2",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0", "globals": "^11.1.0",
"lodash": "^4.17.13" "lodash": "^4.17.13"
@ -206,9 +206,9 @@
} }
}, },
"@babel/types": { "@babel/types": {
"version": "7.6.3", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz",
"integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==", "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==",
"dev": true, "dev": true,
"requires": { "requires": {
"esutils": "^2.0.2", "esutils": "^2.0.2",
@ -467,9 +467,9 @@
} }
}, },
"@types/babel__traverse": { "@types/babel__traverse": {
"version": "7.0.7", "version": "7.0.8",
"resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz",
"integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@babel/types": "^7.3.0" "@babel/types": "^7.3.0"
@ -501,24 +501,18 @@
} }
}, },
"@types/jest": { "@types/jest": {
"version": "24.0.21", "version": "24.0.23",
"resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.21.tgz", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.23.tgz",
"integrity": "sha512-uyqFvx78Tuy0h5iLCPWRCvi5HhWwEqhIj30doitp191oYLqlCxUyAJHdWVm5+Nr271/vPnkyt6rWeEIjGowBTg==", "integrity": "sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/jest-diff": "*" "jest-diff": "^24.3.0"
} }
}, },
"@types/jest-diff": {
"version": "20.0.1",
"resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz",
"integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==",
"dev": true
},
"@types/node": { "@types/node": {
"version": "12.12.5", "version": "12.12.11",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.5.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.11.tgz",
"integrity": "sha512-KEjODidV4XYUlJBF3XdjSH5FWoMCtO0utnhtdLf1AgeuZLOrRbvmU/gaRCVg7ZaQDjVf3l84egiY0mRNe5xE4A==", "integrity": "sha512-O+x6uIpa6oMNTkPuHDa9MhMMehlxLAd5QcOvKRjAFsBVpeFWTOPnXbDvILvFgFFZfQ1xh1EZi1FbXxUix+zpsQ==",
"dev": true "dev": true
}, },
"@types/normalize-package-data": { "@types/normalize-package-data": {
@ -549,9 +543,9 @@
"dev": true "dev": true
}, },
"abab": { "abab": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz",
"integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==",
"dev": true "dev": true
}, },
"acorn": { "acorn": {
@ -1142,9 +1136,9 @@
"dev": true "dev": true
}, },
"convert-source-map": { "convert-source-map": {
"version": "1.6.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
"integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
"dev": true, "dev": true,
"requires": { "requires": {
"safe-buffer": "~5.1.1" "safe-buffer": "~5.1.1"
@ -1392,9 +1386,9 @@
} }
}, },
"es-to-primitive": { "es-to-primitive": {
"version": "1.2.0", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true, "dev": true,
"requires": { "requires": {
"is-callable": "^1.1.4", "is-callable": "^1.1.4",
@ -1448,9 +1442,9 @@
"dev": true "dev": true
}, },
"exec-sh": { "exec-sh": {
"version": "0.3.2", "version": "0.3.4",
"resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
"integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==",
"dev": true "dev": true
}, },
"execa": { "execa": {
@ -2310,9 +2304,9 @@
} }
}, },
"glob": { "glob": {
"version": "7.1.5", "version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true, "dev": true,
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
@ -2342,9 +2336,9 @@
"dev": true "dev": true
}, },
"handlebars": { "handlebars": {
"version": "4.5.1", "version": "4.5.3",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
"integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==",
"dev": true, "dev": true,
"requires": { "requires": {
"neo-async": "^2.6.0", "neo-async": "^2.6.0",
@ -2385,9 +2379,9 @@
"dev": true "dev": true
}, },
"has-symbols": { "has-symbols": {
"version": "1.0.0", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
"dev": true "dev": true
}, },
"has-value": { "has-value": {
@ -2449,9 +2443,9 @@
} }
}, },
"husky": { "husky": {
"version": "3.0.9", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/husky/-/husky-3.0.9.tgz", "resolved": "https://registry.npmjs.org/husky/-/husky-3.1.0.tgz",
"integrity": "sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==", "integrity": "sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"chalk": "^2.4.2", "chalk": "^2.4.2",
@ -2733,12 +2727,12 @@
"dev": true "dev": true
}, },
"is-symbol": { "is-symbol": {
"version": "1.0.2", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"has-symbols": "^1.0.0" "has-symbols": "^1.0.1"
} }
}, },
"is-typedarray": { "is-typedarray": {
@ -3624,18 +3618,18 @@
} }
}, },
"mime-db": { "mime-db": {
"version": "1.40.0", "version": "1.42.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.24", "version": "2.1.25",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
"dev": true, "dev": true,
"requires": { "requires": {
"mime-db": "1.40.0" "mime-db": "1.42.0"
} }
}, },
"minimatch": { "minimatch": {
@ -3797,9 +3791,9 @@
} }
}, },
"nwsapi": { "nwsapi": {
"version": "2.1.4", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
"integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==",
"dev": true "dev": true
}, },
"oauth-sign": { "oauth-sign": {
@ -3840,9 +3834,9 @@
} }
}, },
"object-inspect": { "object-inspect": {
"version": "1.6.0", "version": "1.7.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
"integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
"dev": true "dev": true
}, },
"object-keys": { "object-keys": {
@ -3913,25 +3907,17 @@
} }
}, },
"optionator": { "optionator": {
"version": "0.8.2", "version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dev": true, "dev": true,
"requires": { "requires": {
"deep-is": "~0.1.3", "deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.4", "fast-levenshtein": "~2.0.6",
"levn": "~0.3.0", "levn": "~0.3.0",
"prelude-ls": "~1.1.2", "prelude-ls": "~1.1.2",
"type-check": "~0.3.2", "type-check": "~0.3.2",
"wordwrap": "~1.0.0" "word-wrap": "~1.2.3"
},
"dependencies": {
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
}
} }
}, },
"p-each-series": { "p-each-series": {
@ -4092,9 +4078,9 @@
"dev": true "dev": true
}, },
"prettier": { "prettier": {
"version": "1.18.2", "version": "1.19.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
"integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true "dev": true
}, },
"pretty-format": { "pretty-format": {
@ -4110,9 +4096,9 @@
} }
}, },
"prompts": { "prompts": {
"version": "2.2.1", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz",
"integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==",
"dev": true, "dev": true,
"requires": { "requires": {
"kleur": "^3.0.3", "kleur": "^3.0.3",
@ -4148,9 +4134,9 @@
"dev": true "dev": true
}, },
"react-is": { "react-is": {
"version": "16.11.0", "version": "16.12.0",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz",
"integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==", "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==",
"dev": true "dev": true
}, },
"read-pkg": { "read-pkg": {
@ -4320,21 +4306,21 @@
} }
}, },
"request-promise-core": { "request-promise-core": {
"version": "1.1.2", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz",
"integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"lodash": "^4.17.11" "lodash": "^4.17.15"
} }
}, },
"request-promise-native": { "request-promise-native": {
"version": "1.0.7", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz",
"integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"request-promise-core": "1.1.2", "request-promise-core": "1.1.3",
"stealthy-require": "^1.1.1", "stealthy-require": "^1.1.1",
"tough-cookie": "^2.3.3" "tough-cookie": "^2.3.3"
} }
@ -4521,9 +4507,9 @@
"dev": true "dev": true
}, },
"sisteransi": { "sisteransi": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz",
"integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", "integrity": "sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==",
"dev": true "dev": true
}, },
"slash": { "slash": {
@ -5028,15 +5014,15 @@
"dev": true "dev": true
}, },
"typescript": { "typescript": {
"version": "3.6.4", "version": "3.7.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz",
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
"dev": true "dev": true
}, },
"uglify-js": { "uglify-js": {
"version": "3.6.7", "version": "3.6.9",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.7.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz",
"integrity": "sha512-4sXQDzmdnoXiO+xvmTzQsfIiwrjUCSA95rSP4SEd8tDb51W2TiDOlL76Hl+Kw0Ie42PSItCW8/t6pBNCF2R48A==", "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
@ -5219,6 +5205,12 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true "dev": true
}, },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
"wordwrap": { "wordwrap": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "setup-php", "name": "setup-php",
"version": "1.4.6", "version": "1.5.3",
"private": false, "private": false,
"description": "Setup PHP for use with GitHub Actions", "description": "Setup PHP for use with GitHub Actions",
"main": "lib/setup-php.js", "main": "lib/setup-php.js",

View File

@ -61,18 +61,6 @@ export async function addExtensionDarwin(
// add script to enable extension is already installed along with php // add script to enable extension is already installed along with php
let install_command: string = ''; let install_command: string = '';
switch (version + extension) { switch (version + extension) {
case '7.4xdebug':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/xdebug_darwin.sh') +
' >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
break;
case '7.4pcov':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/pcov.sh') +
' >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
case '5.6xdebug': case '5.6xdebug':
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1'; install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
break; break;
@ -152,18 +140,6 @@ export async function addExtensionLinux(
let install_command: string = ''; let install_command: string = '';
switch (version + extension) { switch (version + extension) {
case '7.4xdebug':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/xdebug.sh') +
' >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
break;
case '7.4pcov':
install_command =
'sh ' +
path.join(__dirname, '../src/scripts/pcov.sh') +
' >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
case '7.2phalcon3': case '7.2phalcon3':
case '7.3phalcon3': case '7.3phalcon3':
install_command = install_command =
@ -185,9 +161,11 @@ export async function addExtensionLinux(
break; break;
default: default:
install_command = install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php' + 'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php' +
version + version +
'-' + '-' +
extension.replace('pdo_', '').replace('pdo-', '') +
' >/dev/null 2>&1 || sudo pecl install ' +
extension + extension +
' >/dev/null 2>&1'; ' >/dev/null 2>&1';
break; break;

View File

@ -47,10 +47,14 @@ export async function run() {
let script_path: string = ''; let script_path: string = '';
switch (os_version) { switch (os_version) {
case 'darwin': case 'darwin':
case 'linux':
script_path = await build(os_version + '.sh', version, os_version); script_path = await build(os_version + '.sh', version, os_version);
await exec('sh ' + script_path + ' ' + version + ' ' + __dirname); await exec('sh ' + script_path + ' ' + version + ' ' + __dirname);
break; break;
case 'linux':
let pecl: string = await utils.getInput('pecl', false);
script_path = await build(os_version + '.sh', version, os_version);
await exec('sh ' + script_path + ' ' + version + ' ' + pecl);
break;
case 'win32': case 'win32':
script_path = await build('win32.ps1', version, os_version); script_path = await build('win32.ps1', version, os_version);
await exec( await exec(

View File

@ -16,7 +16,7 @@ add_log() {
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message" printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
fi fi
} }
version='7.4.0RC5' version='7.4.0RC6'
step_log "Setup dependencies" step_log "Setup dependencies"
for package in pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl; for package in pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl;
do do

View File

@ -26,12 +26,11 @@ if [ "$existing_version" != "$1" ]; then
if [ "$1" != "7.4" ]; then if [ "$1" != "7.4" ]; then
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1" curl php"$1"-curl >/dev/null 2>&1 sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1" curl php"$1"-curl >/dev/null 2>&1
else else
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1" php"$1"-dev curl php"$1"-curl >/dev/null 2>&1 sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1" php"$1"-dev php"$1"-xml curl php"$1"-curl >/dev/null 2>&1
fi fi
status="Installed PHP$version" status="Installed PHP$version"
fi fi
for tool in php phar phar.phar php-cgi php-config phpize; do for tool in php phar phar.phar php-cgi php-config phpize; do
if [ -e "/usr/bin/$tool$1" ]; then if [ -e "/usr/bin/$tool$1" ]; then
sudo update-alternatives --set $tool /usr/bin/"$tool$1" >/dev/null 2>&1 sudo update-alternatives --set $tool /usr/bin/"$tool$1" >/dev/null 2>&1
@ -44,6 +43,17 @@ ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
sudo chmod 777 "$ini_file" sudo chmod 777 "$ini_file"
sudo mkdir -p /run/php sudo mkdir -p /run/php
add_log "$tick" "PHP" "$status" add_log "$tick" "PHP" "$status"
if [ "$2" = "true" ]; then
if [ "$1" != "7.4" ]; then
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1"-dev php"$1"-xml >/dev/null 2>&1
fi
sudo update-alternatives --set php-config /usr/bin/php-config"$1" >/dev/null 2>&1
sudo update-alternatives --set phpize /usr/bin/phpize"$1" >/dev/null 2>&1
wget https://github.com/pear/pearweb_phars/raw/master/install-pear-nozlib.phar >/dev/null 2>&1
sudo php install-pear-nozlib.phar >/dev/null 2>&1
sudo pear config-set php_ini "$ini_file" >/dev/null 2>&1
add_log "$tick" "PECL" "Installed"
fi
if [ ! -e "/usr/bin/composer" ]; then if [ ! -e "/usr/bin/composer" ]; then
curl -s -L https://getcomposer.org/installer > composer-setup.php curl -s -L https://getcomposer.org/installer > composer-setup.php
@ -71,6 +81,6 @@ add_extension()
( (
eval "$install_command" && \ eval "$install_command" && \
add_log "$tick" "$extension" "Installed and enabled" add_log "$tick" "$extension" "Installed and enabled"
) || add_log "$cross" "$extension" "Could not find php$version-$extension" ) || add_log "$cross" "$extension" "Could not install $extension on php$version"
fi fi
} }

View File

@ -52,9 +52,11 @@ Add-Log $tick "Composer" "Installed"
Function Add-Extension($extension, $install_command, $prefix) Function Add-Extension($extension, $install_command, $prefix)
{ {
try { try {
$exist = Test-Path -Path C:\tools\php\ext\php_$extension.dll $existing_extensions = Get-PhpExtension -Path C:\tools\php
if(!(php -m | findstr -i ${extension}) -and $exist) { $match = @($existing_extensions | Where-Object { $_.Name -like $extension })
Add-Content C:\tools\php\php.ini "$prefix=php_$extension.dll" if(!(php -m | findstr -i ${extension}) -and $match) {
$filename = $match."Filename".split('\')[-1]
Add-Content C:\tools\php\php.ini "`n$prefix=$filename"
Add-Log $tick $extension "Enabled" Add-Log $tick $extension "Enabled"
} elseif(php -m | findstr -i $extension) { } elseif(php -m | findstr -i $extension) {
Add-Log $tick $extension "Enabled" Add-Log $tick $extension "Enabled"

View File

@ -112,9 +112,7 @@ export async function extensionArray(
return extension return extension
.trim() .trim()
.replace('php-', '') .replace('php-', '')
.replace('php_', '') .replace('php_', '');
.replace('pdo_', '')
.replace('pdo-', '');
}); });
} }
} }