mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-29 09:54:55 +07:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
fe504c5e23 | |||
61d755bd59 | |||
3455b4ca37 | |||
35c24a7d2f | |||
da7361cc8f | |||
3f4c1842a0 |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"env": { "node": true, "jest": true },
|
"env": { "node": true, "jest": true },
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
|
"parserOptions": { "ecmaVersion": 2019, "sourceType": "module" },
|
||||||
"extends": [
|
"extends": [
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
"plugin:@typescript-eslint/eslint-recommended",
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
@ -12,11 +12,5 @@
|
|||||||
"plugin:prettier/recommended",
|
"plugin:prettier/recommended",
|
||||||
"prettier/@typescript-eslint"
|
"prettier/@typescript-eslint"
|
||||||
],
|
],
|
||||||
"plugins": ["@typescript-eslint", "jest"],
|
"plugins": ["@typescript-eslint", "jest"]
|
||||||
"rules": {
|
|
||||||
"camelcase": "off",
|
|
||||||
"require-atomic-updates": "off",
|
|
||||||
"@typescript-eslint/ban-ts-ignore": "off",
|
|
||||||
"@typescript-eslint/camelcase": "off"
|
|
||||||
}
|
|
||||||
}
|
}
|
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@ -2,7 +2,5 @@
|
|||||||
|
|
||||||
github: shivammathur
|
github: shivammathur
|
||||||
community_bridge: setup-php
|
community_bridge: setup-php
|
||||||
issuehunt: shivammathur
|
|
||||||
patreon: shivammathur
|
patreon: shivammathur
|
||||||
liberapay: shivammathur
|
|
||||||
custom: https://www.paypal.me/shivammathur
|
custom: https://www.paypal.me/shivammathur
|
||||||
|
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: 🐞 Bug Fix
|
|
||||||
about: You have a fix for a bug?
|
|
||||||
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.
|
|
||||||
- [ ] I have run `npm run lint` before the commit.
|
|
||||||
- [ ] I have run `npm run release` before the commit.
|
|
||||||
- [ ] `npm test` returns with no unit test errors.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
- Please target the develop branch when submitting the pull request.
|
|
||||||
-->
|
|
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: ⚙ Improvement
|
|
||||||
about: You have some improvement to make setup-php better?
|
|
||||||
labels: enhancement
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
- [ ] I have run `npm run lint` before the commit.
|
|
||||||
- [ ] I have run `npm run release` before the commit.
|
|
||||||
- [ ] `npm test` returns with no unit test errors.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
- Please target the develop branch when submitting the pull request.
|
|
||||||
-->
|
|
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: 🎉 New Feature
|
|
||||||
about: You have implemented some neat idea that you want to make part of setup-php?
|
|
||||||
labels: enhancement
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
- [ ] I have run `npm run lint` before the commit.
|
|
||||||
- [ ] I have run `npm run release` before the commit.
|
|
||||||
- [ ] `npm test` returns with no unit test errors.
|
|
||||||
|
|
||||||
<!--
|
|
||||||
- Please target the develop branch when submitting the pull request.
|
|
||||||
-->
|
|
30
.github/SECURITY.md
vendored
Normal file
30
.github/SECURITY.md
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
The following versions of this project are supported for security updates.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| ------- | ------------------ |
|
||||||
|
| 1.9.x | :white_check_mark: |
|
||||||
|
| 2.3.x | :white_check_mark: |
|
||||||
|
|
||||||
|
## Supported PHP Versions
|
||||||
|
|
||||||
|
This security policy only applies to the latest patches of the following PHP versions.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| ------- | ------------------ |
|
||||||
|
| 7.2 | :white_check_mark: |
|
||||||
|
| 7.3 | :white_check_mark: |
|
||||||
|
| 7.4 | :white_check_mark: |
|
||||||
|
| 8.0 | :white_check_mark: |
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
If you have found any issues that might have security implications in the versions supported, please send a report privately to [contact@shivammathur.com](mailto:contact@shivammathur.com).
|
||||||
|
Do not report security reports publicly.
|
||||||
|
|
||||||
|
## Tidelift
|
||||||
|
|
||||||
|
If you use this GitHub Action through a Tidelift subscription, please refer to [https://tidelift.com/security](https://tidelift.com/security).
|
24
.github/workflows/experimental-workflow.yml
vendored
24
.github/workflows/experimental-workflow.yml
vendored
@ -19,34 +19,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-latest, macos-latest]
|
||||||
php-versions: ['8.0']
|
php-versions: ['8.0']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Node.js 12.x
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 12.x
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm install
|
|
||||||
|
|
||||||
- name: Prettier Format Check
|
|
||||||
run: npm run format-check
|
|
||||||
|
|
||||||
- name: ESLint Check
|
|
||||||
run: npm run lint
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm test
|
|
||||||
|
|
||||||
- name: Send Coverage
|
|
||||||
continue-on-error: true
|
|
||||||
timeout-minutes: 1
|
|
||||||
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
|
- name: Setup PHP with extensions and custom config
|
||||||
run: node dist/index.js
|
run: node dist/index.js
|
||||||
env:
|
env:
|
||||||
|
@ -19,34 +19,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-latest, macos-latest]
|
||||||
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
|
php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Node.js 12.x
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: 12.x
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm install
|
|
||||||
|
|
||||||
- name: Prettier Format Check
|
|
||||||
run: npm run format-check
|
|
||||||
|
|
||||||
- name: ESLint Check
|
|
||||||
run: npm run lint
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm test
|
|
||||||
|
|
||||||
- name: Send Coverage
|
|
||||||
continue-on-error: true
|
|
||||||
timeout-minutes: 1
|
|
||||||
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
|
- name: Setup PHP with extensions and custom config
|
||||||
run: node dist/index.js
|
run: node dist/index.js
|
||||||
env:
|
env:
|
47
.github/workflows/node-workflow.yml
vendored
Normal file
47
.github/workflows/node-workflow.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
name: Node workflow
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- releases/v1
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
- 'examples/**'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- releases/v1
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
- 'examples/**'
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
name: Run
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Prettier Format Check
|
||||||
|
run: npm run format-check
|
||||||
|
|
||||||
|
- name: ESLint Check
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: Send Coverage
|
||||||
|
continue-on-error: true
|
||||||
|
timeout-minutes: 1
|
||||||
|
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}
|
80
README.md
80
README.md
@ -18,26 +18,26 @@ Setup PHP with required extensions, php.ini configuration, code-coverage support
|
|||||||
## Contents
|
## Contents
|
||||||
|
|
||||||
- [PHP Support](#tada-php-support)
|
- [PHP Support](#tada-php-support)
|
||||||
- [OS/Platform Support](#cloud-osplatform-support)
|
- [GitHub-Hosted Runner Support](#cloud-github-hosted-runner-support)
|
||||||
- [PHP Extension Support](#heavy_plus_sign-php-extension-support)
|
- [PHP Extension Support](#heavy_plus_sign-php-extension-support)
|
||||||
- [Tools Support](#wrench-tools-support)
|
- [Tools Support](#wrench-tools-support)
|
||||||
- [Coverage support](#signal_strength-coverage-support)
|
- [Coverage Support](#signal_strength-coverage-support)
|
||||||
- [Xdebug](#xdebug)
|
- [Xdebug](#xdebug)
|
||||||
- [PCOV](#pcov)
|
- [PCOV](#pcov)
|
||||||
- [Disable coverage](#disable-coverage)
|
- [Disable coverage](#disable-coverage)
|
||||||
- [Usage](#memo-usage)
|
- [Usage](#memo-usage)
|
||||||
- [Basic Setup](#basic-setup)
|
- [Basic Setup](#basic-setup)
|
||||||
- [Matrix Setup](#matrix-setup)
|
- [Matrix Setup](#matrix-setup)
|
||||||
- [Experimental Setup](#experimental-setup)
|
- [Nightly Build Setup](#nightly-build-setup)
|
||||||
- [Thread Safe Setup](#thread-safe-setup)
|
- [Thread Safe Setup](#thread-safe-setup)
|
||||||
- [Cache dependencies](#cache-dependencies)
|
- [Cache Dependencies](#cache-dependencies)
|
||||||
- [Composer GitHub OAuth](#composer-github-oauth)
|
- [Composer GitHub OAuth](#composer-github-oauth)
|
||||||
- [Problem Matchers](#problem-matchers)
|
- [Problem Matchers](#problem-matchers)
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
- [License](#scroll-license)
|
- [License](#scroll-license)
|
||||||
- [Contributions](#1-contributions)
|
- [Contributions](#1-contributions)
|
||||||
- [Support this project](#sparkling_heart-support-this-project)
|
- [Support This project](#sparkling_heart-support-this-project)
|
||||||
- [This action uses the following works](#bookmark-this-action-uses-the-following-works)
|
- [Dependencies](#bookmark-dependencies)
|
||||||
- [Further Reading](#bookmark_tabs-further-reading)
|
- [Further Reading](#bookmark_tabs-further-reading)
|
||||||
|
|
||||||
## :tada: PHP Support
|
## :tada: PHP Support
|
||||||
@ -50,18 +50,19 @@ Setup PHP with required extensions, php.ini configuration, code-coverage support
|
|||||||
|7.2|`Stable`|`Security fixes only`|
|
|7.2|`Stable`|`Security fixes only`|
|
||||||
|7.3|`Stable`|`Active`|
|
|7.3|`Stable`|`Active`|
|
||||||
|7.4|`Stable`|`Active`|
|
|7.4|`Stable`|`Active`|
|
||||||
|8.0|`Experimental`|`In development`|
|
|8.0|`Nightly`|`In development`|
|
||||||
|
|
||||||
**Note:** Specifying `8.0` in `php-version` input installs a nightly build of `PHP 8.0.0-dev` with `PHP JIT`, `Union Types v2` and other [new features](https://wiki.php.net/rfc#php_80 "New features implemented in PHP 8"). See [experimental setup](#experimental-setup) for more information.
|
**Note:** Specifying `8.0` in `php-version` input installs a nightly build of `PHP 8.0.0-dev` with `PHP JIT`, `Union Types v2` and other [new features](https://wiki.php.net/rfc#php_80 "New features implemented in PHP 8"). See [nightly build setup](#nightly-build-setup) for more information.
|
||||||
|
|
||||||
## :cloud: OS/Platform Support
|
## :cloud: GitHub-Hosted Runner Support
|
||||||
|
|
||||||
|Virtual environment|matrix.operating-system|
|
|Virtual environment|YAML workflow label|Pre-installed PHP|
|
||||||
|--- |--- |
|
|--- |--- |--- |
|
||||||
|Windows Server 2019|`windows-latest` or `windows-2019`|
|
|Ubuntu 16.04|`ubuntu-16.04`|`PHP 5.6` to `PHP 7.4`|
|
||||||
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|
|
|Ubuntu 18.04|`ubuntu-latest` or `ubuntu-18.04`|`PHP 7.1` to `PHP 7.4`|
|
||||||
|Ubuntu 16.04|`ubuntu-16.04`|
|
|Ubuntu 20.04|`ubuntu-20.04`|`PHP 7.4`|
|
||||||
|macOS X Catalina 10.15|`macos-latest` or `macos-10.15`|
|
|Windows Server 2019|`windows-latest` or `windows-2019`|`PHP 7.4`|
|
||||||
|
|macOS 10.15 Catalina|`macos-latest` or `macos-10.15`|`PHP 7.4`|
|
||||||
|
|
||||||
## :heavy_plus_sign: PHP Extension Support
|
## :heavy_plus_sign: PHP Extension Support
|
||||||
- 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` in the tools input.
|
- 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` in the tools input.
|
||||||
@ -85,22 +86,27 @@ with:
|
|||||||
```
|
```
|
||||||
|
|
||||||
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`.
|
||||||
Version should be in semver format and a valid release of the tool.
|
Latest stable version of `composer` is setup by default and accepts `v1`, `v2`, `snapshot` and `preview` as versions.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v1
|
||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
tools: php-cs-fixer:2.15.5, phpunit:8.5.1
|
tools: composer:v2
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note**
|
Version for other tools should be in `semver` format and a valid release of the tool.
|
||||||
- `composer` is setup by default.
|
|
||||||
- Specifying version for `composer` and `pecl` has no effect, latest version of both tools will be setup.
|
|
||||||
- If the version specified for the tool is not in semver format, latest version of the tool will be setup.
|
|
||||||
- Tools which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
|
|
||||||
|
|
||||||
## :signal_strength: Coverage support
|
```yaml
|
||||||
|
uses: shivammathur/setup-php@v1
|
||||||
|
with:
|
||||||
|
php-version: '7.4'
|
||||||
|
tools: php-cs-fixer:2.16.2, phpunit:8.5.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Tools which cannot be installed gracefully leave an error message in the logs, the action is not interrupted.
|
||||||
|
|
||||||
|
## :signal_strength: Coverage Support
|
||||||
|
|
||||||
### Xdebug
|
### Xdebug
|
||||||
|
|
||||||
@ -130,7 +136,7 @@ with:
|
|||||||
coverage: pcov
|
coverage: pcov
|
||||||
```
|
```
|
||||||
|
|
||||||
### Disable coverage
|
### Disable Coverage
|
||||||
|
|
||||||
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.
|
||||||
@ -204,12 +210,11 @@ jobs:
|
|||||||
tools: php-cs-fixer, phpunit #optional, setup tools globally
|
tools: php-cs-fixer, phpunit #optional, setup tools globally
|
||||||
```
|
```
|
||||||
|
|
||||||
### Experimental Setup
|
### Nightly Build Setup
|
||||||
|
|
||||||
> Setup a nightly build of `PHP 8.0.0-dev` from the [master branch](https://github.com/php/php-src/tree/master "Master branch on PHP source repository") of PHP.
|
> Setup a nightly build of `PHP 8.0.0-dev` from the [master branch](https://github.com/php/php-src/tree/master "Master branch on PHP source repository") of PHP.
|
||||||
|
|
||||||
- This version is currently in development and is an experimental feature on this action.
|
- `PECL` is installed by default with this version on `Ubuntu` and `macOS`.
|
||||||
- `PECL` is installed by default with this version on `ubuntu`.
|
|
||||||
- Some 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.
|
||||||
@ -249,10 +254,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
php-version: '7.4'
|
php-version: '7.4'
|
||||||
env:
|
env:
|
||||||
PHPTS: ts # specify ts or nts
|
phpts: ts # specify ts or nts
|
||||||
```
|
```
|
||||||
|
|
||||||
### Cache dependencies
|
### 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.
|
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.
|
||||||
|
|
||||||
@ -264,7 +269,7 @@ You can persist composer's internal cache directory using the [`action/cache`](h
|
|||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache dependencies
|
- name: Cache dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
@ -304,7 +309,7 @@ You can setup problem matchers for your `PHPUnit` output by adding this step aft
|
|||||||
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Other tools
|
#### Other Tools
|
||||||
|
|
||||||
For tools that support `checkstyle` reporting like `phpstan`, `psalm`, `php-cs-fixer` and `phpcs` you can use `cs2pr` to annotate your code.
|
For tools that support `checkstyle` reporting like `phpstan`, `psalm`, `php-cs-fixer` and `phpcs` you can use `cs2pr` to annotate your code.
|
||||||
For examples refer to [cs2pr documentation](https://github.com/staabm/annotate-pull-request-from-checkstyle).
|
For examples refer to [cs2pr documentation](https://github.com/staabm/annotate-pull-request-from-checkstyle).
|
||||||
@ -358,21 +363,22 @@ The scripts and documentation in this project are released under the [MIT Licens
|
|||||||
|
|
||||||
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").
|
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
|
||||||
|
|
||||||
If this action helped you.
|
If this action helped you.
|
||||||
|
|
||||||
|
- To support this project subscribe on [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") or sponsor using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
|
||||||
- Please star the project and share it with the community.
|
- Please star the project and share it with the community.
|
||||||
- If you blog, write about your experience while using this action.
|
- If you blog, write about your experience of using this action.
|
||||||
- I maintain this in my free time, please support me with a [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") subscription or a one time contribution using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal").
|
|
||||||
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
|
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
|
||||||
|
|
||||||
## :bookmark: This action uses the following works
|
## :bookmark: Dependencies
|
||||||
|
|
||||||
- [ppa:ondrej/php](https://launchpad.net/~ondrej/+archive/ubuntu/php "Pre-compiled ubuntu packages")
|
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
|
||||||
- [shivammathur/php-builder](https://github.com/shivammathur/php-builder "Pre-compiled nightly PHP builds")
|
|
||||||
- [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")
|
||||||
- [shivammathur/homebrew-php](https://github.com/shivammathur/homebrew-php "Tap for PHP builds for MacOS")
|
- [shivammathur/homebrew-php](https://github.com/shivammathur/homebrew-php "Tap for PHP builds for MacOS")
|
||||||
|
- [shivammathur/php-builder](https://github.com/shivammathur/php-builder "Nightly PHP package")
|
||||||
|
|
||||||
## :bookmark_tabs: Further Reading
|
## :bookmark_tabs: Further Reading
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ jest.mock('../src/install', () => ({
|
|||||||
case 'darwin':
|
case 'darwin':
|
||||||
case 'linux':
|
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 += 'bash script.sh ' + version + ' ' + __dirname;
|
||||||
break;
|
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);
|
||||||
@ -93,20 +93,20 @@ function setEnv(
|
|||||||
describe('Install', () => {
|
describe('Install', () => {
|
||||||
it('Test install on windows', async () => {
|
it('Test install on windows', async () => {
|
||||||
setEnv('7.0', 'win32', '', '', '', '', '');
|
setEnv('7.0', 'win32', '', '', '', '', '');
|
||||||
// @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 7.0 ' + __dirname);
|
expect(script).toContain('pwsh script.ps1 7.0 ' + __dirname);
|
||||||
|
|
||||||
setEnv('7.3', 'win32', '', '', '', '', '');
|
setEnv('7.3', 'win32', '', '', '', '', '');
|
||||||
// @ts-ignore
|
|
||||||
script = await install.run();
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('initial script');
|
||||||
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
|
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
|
||||||
|
|
||||||
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '', '');
|
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '', '');
|
||||||
// @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');
|
||||||
@ -116,66 +116,66 @@ describe('Install', () => {
|
|||||||
|
|
||||||
it('Test install on linux', async () => {
|
it('Test install on linux', async () => {
|
||||||
setEnv('7.3', 'linux', '', '', '', '', '');
|
setEnv('7.3', 'linux', '', '', '', '', '');
|
||||||
// @ts-ignore
|
|
||||||
let script: string = await install.run();
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('sh script.sh 7.3 ');
|
|
||||||
|
|
||||||
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', 'true');
|
let script: string = '' + (await install.run());
|
||||||
// @ts-ignore
|
expect(script).toContain('initial script');
|
||||||
script = await install.run();
|
expect(script).toContain('bash script.sh 7.3 ');
|
||||||
|
|
||||||
|
setEnv('7.4', 'linux', 'a, b', 'a=b', 'x', 'phpunit', 'true');
|
||||||
|
|
||||||
|
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');
|
expect(script).toContain('bash script.sh 7.4');
|
||||||
expect(script).toContain('add_tool');
|
expect(script).toContain('add_tool');
|
||||||
|
|
||||||
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', '');
|
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', '');
|
||||||
// @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');
|
expect(script).toContain('bash script.sh 7.3');
|
||||||
expect(script).toContain('add_tool');
|
expect(script).toContain('add_tool');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Test install on darwin', async () => {
|
it('Test install on darwin', async () => {
|
||||||
setEnv('7.3', 'darwin', '', '', '', '', '');
|
setEnv('7.3', 'darwin', '', '', '', '', '');
|
||||||
// @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('bash 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
|
|
||||||
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('bash script.sh 7.3 ' + __dirname);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Test malformed version inputs', async () => {
|
it('Test malformed version inputs', async () => {
|
||||||
setEnv('7.4.1', 'darwin', '', '', '', '', '');
|
setEnv('7.4.1', 'darwin', '', '', '', '', '');
|
||||||
// @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.4 ' + __dirname);
|
expect(script).toContain('bash script.sh 7.4 ' + __dirname);
|
||||||
|
|
||||||
setEnv(8.0, 'darwin', '', '', '', '', '');
|
setEnv(8.0, 'darwin', '', '', '', '', '');
|
||||||
// @ts-ignore
|
|
||||||
script = await install.run();
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('initial script');
|
||||||
expect(script).toContain('sh script.sh 8.0 ' + __dirname);
|
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
|
||||||
|
|
||||||
setEnv(8, 'darwin', '', '', '', '', '');
|
setEnv(8, 'darwin', '', '', '', '', '');
|
||||||
// @ts-ignore
|
|
||||||
script = await install.run();
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('initial script');
|
||||||
expect(script).toContain('sh script.sh 8.0 ' + __dirname);
|
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -243,6 +243,41 @@ describe('Tools tests', () => {
|
|||||||
expect(
|
expect(
|
||||||
await tools.addComposer(['a', 'b', 'composer:1.2.3'])
|
await tools.addComposer(['a', 'b', 'composer:1.2.3'])
|
||||||
).toStrictEqual(['composer', 'a', 'b']);
|
).toStrictEqual(['composer', 'a', 'b']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'composer:snapshot'])
|
||||||
|
).toStrictEqual(['composer:snapshot', 'a', 'b']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'composer:preview'])
|
||||||
|
).toStrictEqual(['composer:preview', 'a', 'b']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'c', 'composer:1'])
|
||||||
|
).toStrictEqual(['composer:1', 'a', 'b', 'c']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'c', 'composer:2'])
|
||||||
|
).toStrictEqual(['composer:2', 'a', 'b', 'c']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'c', 'composer:v1'])
|
||||||
|
).toStrictEqual(['composer:1', 'a', 'b', 'c']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'c', 'composer:v2'])
|
||||||
|
).toStrictEqual(['composer:2', 'a', 'b', 'c']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking updateComposer', async () => {
|
||||||
|
expect(await tools.updateComposer('latest', 'linux')).toContain('');
|
||||||
|
expect(await tools.updateComposer('stable', 'win32')).toContain('');
|
||||||
|
expect(await tools.updateComposer('snapshot', 'darwin')).toContain(
|
||||||
|
'\ncomposer self-update --snapshot'
|
||||||
|
);
|
||||||
|
expect(await tools.updateComposer('preview', 'linux')).toContain(
|
||||||
|
'\ncomposer self-update --preview'
|
||||||
|
);
|
||||||
|
expect(await tools.updateComposer('1', 'win32')).toContain(
|
||||||
|
'\ncomposer self-update --1'
|
||||||
|
);
|
||||||
|
expect(await tools.updateComposer('2', 'darwin')).toContain(
|
||||||
|
'\ncomposer self-update --2'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getSymfonyUri', async () => {
|
it('checking getSymfonyUri', async () => {
|
||||||
@ -485,4 +520,24 @@ describe('Tools tests', () => {
|
|||||||
'Add-Composertool composer-prefetcher composer-prefetcher narrowspark/automatic-'
|
'Add-Composertool composer-prefetcher composer-prefetcher narrowspark/automatic-'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
it('checking composer setup', async () => {
|
||||||
|
let script: string = await tools.addTools(
|
||||||
|
'composer, composer:v1',
|
||||||
|
'7.4',
|
||||||
|
'linux'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://getcomposer.org/composer-stable.phar composer'
|
||||||
|
);
|
||||||
|
expect(script).toContain('composer self-update --1');
|
||||||
|
|
||||||
|
script = await tools.addTools('composer:preview', '7.4', 'linux');
|
||||||
|
expect(script).toContain('composer self-update --preview');
|
||||||
|
script = await tools.addTools(
|
||||||
|
'composer:v1, composer:preview, composer:snapshot',
|
||||||
|
'7.4',
|
||||||
|
'linux'
|
||||||
|
);
|
||||||
|
expect(script).toContain('composer self-update --snapshot');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
66
dist/index.js
vendored
66
dist/index.js
vendored
@ -19,7 +19,13 @@ module.exports =
|
|||||||
/******/ };
|
/******/ };
|
||||||
/******/
|
/******/
|
||||||
/******/ // Execute the module function
|
/******/ // Execute the module function
|
||||||
|
/******/ var threw = true;
|
||||||
|
/******/ try {
|
||||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||||
|
/******/ threw = false;
|
||||||
|
/******/ } finally {
|
||||||
|
/******/ if(threw) delete installedModules[moduleId];
|
||||||
|
/******/ }
|
||||||
/******/
|
/******/
|
||||||
/******/ // Flag the module as loaded
|
/******/ // Flag the module as loaded
|
||||||
/******/ module.l = true;
|
/******/ module.l = true;
|
||||||
@ -967,7 +973,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@ -1023,7 +1029,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@ -1598,12 +1604,12 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.addTools = exports.addPackage = exports.addDevTools = exports.addArchive = exports.getCleanedToolsList = exports.addComposer = exports.getSymfonyUri = exports.getDeployerUrl = exports.getPharUrl = exports.addPhive = exports.getCodeceptionUri = exports.getCodeceptionUriBuilder = exports.getUri = exports.parseTool = exports.getToolVersion = exports.getCommand = void 0;
|
exports.addTools = exports.addPackage = exports.addDevTools = exports.addArchive = exports.getCleanedToolsList = exports.updateComposer = exports.addComposer = exports.getSymfonyUri = exports.getDeployerUrl = exports.getPharUrl = exports.addPhive = exports.getCodeceptionUri = exports.getCodeceptionUriBuilder = exports.getUri = exports.parseTool = exports.getToolVersion = exports.getCommand = void 0;
|
||||||
const utils = __importStar(__webpack_require__(163));
|
const utils = __importStar(__webpack_require__(163));
|
||||||
/**
|
/**
|
||||||
* Function to get command to setup tools
|
* Function to get command to setup tools
|
||||||
@ -1631,8 +1637,10 @@ exports.getCommand = getCommand;
|
|||||||
async function getToolVersion(version) {
|
async function getToolVersion(version) {
|
||||||
// semver_regex - https://semver.org/
|
// semver_regex - https://semver.org/
|
||||||
const semver_regex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
const semver_regex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
||||||
|
const composer_regex = /^stable$|^preview$|^snapshot$|^v?[1|2]$/;
|
||||||
version = version.replace(/[><=^]*/, '');
|
version = version.replace(/[><=^]*/, '');
|
||||||
switch (true) {
|
switch (true) {
|
||||||
|
case composer_regex.test(version):
|
||||||
case semver_regex.test(version):
|
case semver_regex.test(version):
|
||||||
return version;
|
return version;
|
||||||
default:
|
default:
|
||||||
@ -1843,19 +1851,42 @@ exports.getSymfonyUri = getSymfonyUri;
|
|||||||
* @param tools_list
|
* @param tools_list
|
||||||
*/
|
*/
|
||||||
async function addComposer(tools_list) {
|
async function addComposer(tools_list) {
|
||||||
const regex = /^composer($|:.*)/;
|
const regex_any = /^composer($|:.*)/;
|
||||||
const composer = tools_list.filter(tool => regex.test(tool))[0];
|
const regex_valid = /^composer:?($|preview$|snapshot$|v?[1-2]$)/;
|
||||||
switch (composer) {
|
const matches = tools_list.filter(tool => regex_valid.test(tool));
|
||||||
|
let composer = 'composer';
|
||||||
|
tools_list = tools_list.filter(tool => !regex_any.test(tool));
|
||||||
|
switch (matches[0]) {
|
||||||
case undefined:
|
case undefined:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tools_list = tools_list.filter(tool => !regex.test(tool));
|
composer = matches[matches.length - 1].replace(/v([1-2])/, '$1');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tools_list.unshift('composer');
|
tools_list.unshift(composer);
|
||||||
return tools_list;
|
return tools_list;
|
||||||
}
|
}
|
||||||
exports.addComposer = addComposer;
|
exports.addComposer = addComposer;
|
||||||
|
/**
|
||||||
|
* Function to get script to update composer
|
||||||
|
*
|
||||||
|
* @param version
|
||||||
|
* @param os_version
|
||||||
|
*/
|
||||||
|
async function updateComposer(version, os_version) {
|
||||||
|
switch (version) {
|
||||||
|
case 'snapshot':
|
||||||
|
case 'preview':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
return ('\ncomposer self-update --' +
|
||||||
|
version +
|
||||||
|
(await utils.suppressOutput(os_version)));
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.updateComposer = updateComposer;
|
||||||
/**
|
/**
|
||||||
* Function to get Tools list after cleanup
|
* Function to get Tools list after cleanup
|
||||||
*
|
*
|
||||||
@ -1970,11 +2001,10 @@ async function addTools(tools_csv, php_version, os_version) {
|
|||||||
script += await addArchive(tool, version, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer':
|
case 'composer':
|
||||||
// If RC is released as latest release, switch to getcomposer.
|
|
||||||
// Preferred source is GitHub as it is faster.
|
|
||||||
// url = github + 'composer/composer/releases/latest/download/composer.phar';
|
|
||||||
url = 'https://getcomposer.org/composer-stable.phar';
|
url = 'https://getcomposer.org/composer-stable.phar';
|
||||||
script += await addArchive(tool, version, url, os_version);
|
script +=
|
||||||
|
(await addArchive('composer', version, url, os_version)) +
|
||||||
|
(await updateComposer(version, os_version));
|
||||||
break;
|
break;
|
||||||
case 'codeception':
|
case 'codeception':
|
||||||
url =
|
url =
|
||||||
@ -2059,7 +2089,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@ -2199,7 +2229,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@ -2295,7 +2325,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
@ -2358,7 +2388,7 @@ async function run() {
|
|||||||
case 'darwin':
|
case 'darwin':
|
||||||
case 'linux':
|
case 'linux':
|
||||||
script_path = await build(os_version + '.sh', version, os_version);
|
script_path = await build(os_version + '.sh', version, os_version);
|
||||||
await exec_1.exec('sh ' + script_path + ' ' + version + ' ' + __dirname);
|
await exec_1.exec('bash ' + script_path + ' ' + version + ' ' + __dirname);
|
||||||
break;
|
break;
|
||||||
case 'win32':
|
case 'win32':
|
||||||
script_path = await build('win32.ps1', version, os_version);
|
script_path = await build('win32.ps1', version, os_version);
|
||||||
@ -2614,7 +2644,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|||||||
var __importStar = (this && this.__importStar) || function (mod) {
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
if (mod && mod.__esModule) return mod;
|
if (mod && mod.__esModule) return mod;
|
||||||
var result = {};
|
var result = {};
|
||||||
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@ jobs:
|
|||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- uses: actions/cache@v1
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -40,7 +40,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -73,7 +73,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -101,7 +101,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -38,7 +38,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -71,7 +71,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -99,7 +99,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -22,7 +22,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -51,7 +51,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -79,7 +79,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -21,7 +21,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -23,7 +23,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -23,7 +23,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -47,7 +47,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -46,7 +46,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -27,7 +27,7 @@ jobs:
|
|||||||
- name: Get yarn cache
|
- name: Get yarn cache
|
||||||
id: yarn-cache
|
id: yarn-cache
|
||||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
- uses: actions/cache@v1
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.yarn-cache.outputs.dir }}
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
||||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
@ -36,7 +36,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -21,7 +21,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -34,7 +34,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -32,7 +32,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -23,7 +23,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -44,7 +44,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -42,7 +42,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
@ -21,7 +21,7 @@ jobs:
|
|||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
|
596
package-lock.json
generated
596
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
22
package.json
22
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "1.8.8",
|
"version": "1.9.0",
|
||||||
"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",
|
||||||
@ -30,22 +30,22 @@
|
|||||||
"fs": "0.0.1-security"
|
"fs": "0.0.1-security"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^25.2.1",
|
"@types/jest": "^25.2.3",
|
||||||
"@types/node": "^14.0.1",
|
"@types/node": "^14.0.11",
|
||||||
"@typescript-eslint/eslint-plugin": "^2.33.0",
|
"@typescript-eslint/eslint-plugin": "^3.1.0",
|
||||||
"@typescript-eslint/parser": "^2.33.0",
|
"@typescript-eslint/parser": "^3.1.0",
|
||||||
"@zeit/ncc": "^0.22.1",
|
"@zeit/ncc": "^0.22.3",
|
||||||
"eslint": "^7.0.0",
|
"eslint": "^7.2.0",
|
||||||
"eslint-config-prettier": "^6.11.0",
|
"eslint-config-prettier": "^6.11.0",
|
||||||
"eslint-plugin-import": "^2.20.2",
|
"eslint-plugin-import": "^2.21.0",
|
||||||
"eslint-plugin-jest": "^23.11.0",
|
"eslint-plugin-jest": "^23.13.2",
|
||||||
"eslint-plugin-prettier": "^3.1.3",
|
"eslint-plugin-prettier": "^3.1.3",
|
||||||
"husky": "^4.2.5",
|
"husky": "^4.2.5",
|
||||||
"jest": "^26.0.1",
|
"jest": "^26.0.1",
|
||||||
"jest-circus": "^26.0.1",
|
"jest-circus": "^26.0.1",
|
||||||
"prettier": "^2.0.5",
|
"prettier": "^2.0.5",
|
||||||
"ts-jest": "^25.5.1",
|
"ts-jest": "^26.1.0",
|
||||||
"typescript": "^3.9.2"
|
"typescript": "^3.9.5"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
"skipCI": true,
|
"skipCI": true,
|
||||||
|
@ -67,7 +67,7 @@ export async function run(): Promise<void> {
|
|||||||
case 'darwin':
|
case 'darwin':
|
||||||
case 'linux':
|
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('bash ' + script_path + ' ' + version + ' ' + __dirname);
|
||||||
break;
|
break;
|
||||||
case 'win32':
|
case 'win32':
|
||||||
script_path = await build('win32.ps1', version, os_version);
|
script_path = await build('win32.ps1', version, os_version);
|
||||||
|
@ -17,8 +17,8 @@ add_log() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Function to update php ppa
|
# Function to update php ppa
|
||||||
update_ppa() {
|
update_lists() {
|
||||||
if [ "$ppa_updated" = "false" ]; then
|
if [ "$lists_updated" = "false" ]; then
|
||||||
sudo "$debconf_fix" apt-get update >/dev/null 2>&1
|
sudo "$debconf_fix" apt-get update >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ add_extension() {
|
|||||||
add_log "$tick" "$extension" "Enabled"
|
add_log "$tick" "$extension" "Enabled"
|
||||||
elif ! check_extension "$extension"; then
|
elif ! check_extension "$extension"; then
|
||||||
eval "$install_command" >/dev/null 2>&1 ||
|
eval "$install_command" >/dev/null 2>&1 ||
|
||||||
(update_ppa && eval "$install_command" >/dev/null 2>&1) ||
|
(update_lists && eval "$install_command" >/dev/null 2>&1) ||
|
||||||
sudo pecl install -f "$extension" >/dev/null 2>&1
|
sudo pecl install -f "$extension" >/dev/null 2>&1
|
||||||
(check_extension "$extension" && add_log "$tick" "$extension" "Installed and enabled") ||
|
(check_extension "$extension" && add_log "$tick" "$extension" "Installed and enabled") ||
|
||||||
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
||||||
@ -134,7 +134,7 @@ update_extension() {
|
|||||||
if [ "$final_version" != "$current_version" ]; then
|
if [ "$final_version" != "$current_version" ]; then
|
||||||
version_exists=$(apt-cache policy -- *"$extension" | grep "$final_version")
|
version_exists=$(apt-cache policy -- *"$extension" | grep "$final_version")
|
||||||
if [ -z "$version_exists" ]; then
|
if [ -z "$version_exists" ]; then
|
||||||
update_ppa
|
update_lists
|
||||||
fi
|
fi
|
||||||
$apt_install php"$version"-"$extension"
|
$apt_install php"$version"-"$extension"
|
||||||
fi
|
fi
|
||||||
@ -184,7 +184,7 @@ add_composertool() {
|
|||||||
# Function to setup phpize and php-config
|
# Function to setup phpize and php-config
|
||||||
add_devtools() {
|
add_devtools() {
|
||||||
if ! [ -e "/usr/bin/phpize$version" ] || ! [ -e "/usr/bin/php-config$version" ]; then
|
if ! [ -e "/usr/bin/phpize$version" ] || ! [ -e "/usr/bin/php-config$version" ]; then
|
||||||
update_ppa && $apt_install php"$version"-dev php"$version"-xml >/dev/null 2>&1
|
update_lists && $apt_install php"$version"-dev php"$version"-xml >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
sudo update-alternatives --set php-config /usr/bin/php-config"$version" >/dev/null 2>&1
|
sudo update-alternatives --set php-config /usr/bin/php-config"$version" >/dev/null 2>&1
|
||||||
sudo update-alternatives --set phpize /usr/bin/phpize"$version" >/dev/null 2>&1
|
sudo update-alternatives --set phpize /usr/bin/phpize"$version" >/dev/null 2>&1
|
||||||
@ -193,19 +193,7 @@ add_devtools() {
|
|||||||
|
|
||||||
# Function to setup the nightly build from master branch
|
# Function to setup the nightly build from master branch
|
||||||
setup_master() {
|
setup_master() {
|
||||||
update_ppa && $apt_install libzip-dev libwebp-dev >/dev/null 2>&1
|
curl -sSL https://github.com/shivammathur/php-builder/releases/latest/download/install.sh | bash -s "github"
|
||||||
tar_file=php_"$version"%2Bubuntu"$(lsb_release -r -s)".tar.xz
|
|
||||||
install_dir=~/php/"$version"
|
|
||||||
bintray_url=https://dl.bintray.com/shivammathur/php/"$tar_file"
|
|
||||||
sudo mkdir -m 777 -p ~/php
|
|
||||||
curl -o /tmp/"$tar_file" -sSL "$bintray_url"
|
|
||||||
sudo tar xf /tmp/"$tar_file" -C ~/php
|
|
||||||
for tool_path in "$install_dir"/bin/*; do
|
|
||||||
tool=$(basename "$tool_path")
|
|
||||||
sudo cp "$tool_path" /usr/bin/"$tool$version"
|
|
||||||
sudo update-alternatives --install /usr/bin/"$tool" "$tool" /usr/bin/"$tool$version" 50 >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
sudo ln -sf "$install_dir"/etc/php.ini /etc/php.ini
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup PECL
|
# Function to setup PECL
|
||||||
@ -222,7 +210,7 @@ add_pecl() {
|
|||||||
switch_version() {
|
switch_version() {
|
||||||
for tool in pear pecl php phar phar.phar php-cgi php-config phpize phpdbg; do
|
for tool in pear pecl php phar phar.phar php-cgi php-config phpize phpdbg; do
|
||||||
if [ -e "/usr/bin/$tool$version" ]; then
|
if [ -e "/usr/bin/$tool$version" ]; then
|
||||||
sudo update-alternatives --set $tool /usr/bin/"$tool$version" >/dev/null 2>&1
|
sudo update-alternatives --set $tool /usr/bin/"$tool$version"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -239,7 +227,7 @@ php_semver() {
|
|||||||
# Variables
|
# Variables
|
||||||
tick="✓"
|
tick="✓"
|
||||||
cross="✗"
|
cross="✗"
|
||||||
ppa_updated="false"
|
lists_updated="false"
|
||||||
pecl_config="false"
|
pecl_config="false"
|
||||||
version=$1
|
version=$1
|
||||||
debconf_fix="DEBIAN_FRONTEND=noninteractive"
|
debconf_fix="DEBIAN_FRONTEND=noninteractive"
|
||||||
@ -254,17 +242,18 @@ sudo mkdir -p /var/run /run/php
|
|||||||
if [ "$existing_version" != "$version" ]; then
|
if [ "$existing_version" != "$version" ]; then
|
||||||
if [ ! -e "/usr/bin/php$version" ]; then
|
if [ ! -e "/usr/bin/php$version" ]; then
|
||||||
if [ "$version" = "8.0" ]; then
|
if [ "$version" = "8.0" ]; then
|
||||||
setup_master
|
setup_master >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
update_ppa
|
update_lists
|
||||||
$apt_install php"$version" php"$version"-curl php"$version"-mbstring php"$version"-xml >/dev/null 2>&1
|
IFS=' ' read -r -a packages <<< "$(echo "curl mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
|
||||||
|
$apt_install php"$version" "${packages[@]}" >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
status="Installed"
|
status="Installed"
|
||||||
else
|
else
|
||||||
status="Switched to"
|
status="Switched to"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
switch_version
|
switch_version >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
status="Found"
|
status="Found"
|
||||||
fi
|
fi
|
||||||
@ -274,6 +263,6 @@ 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")
|
||||||
ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
|
ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
|
||||||
pecl_file="$scan_dir"/99-pecl.ini
|
pecl_file="$scan_dir"/99-pecl.ini
|
||||||
sudo touch "$pecl_file" >/dev/null 2>&1
|
echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
|
||||||
sudo chmod 777 "$ini_file" "$tool_path_dir" "$pecl_file"
|
sudo chmod 777 "$ini_file" "$pecl_file" "$tool_path_dir"
|
||||||
add_log "$tick" "PHP" "$status PHP $semver"
|
add_log "$tick" "PHP" "$status PHP $semver"
|
||||||
|
@ -20,16 +20,38 @@ Function Add-Log($mark, $subject, $message) {
|
|||||||
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $code $mark $subject $message
|
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $code $mark $subject $message
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Function Add-ToProfile {
|
||||||
|
param(
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
|
[string]
|
||||||
|
$input_profile,
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
|
[string]
|
||||||
|
$search,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
|
[string]
|
||||||
|
$value
|
||||||
|
)
|
||||||
|
if($null -eq (Get-Content $input_profile | findstr $search)) {
|
||||||
|
Add-Content -Path $input_profile -Value $value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Function Install-PhpManager() {
|
Function Install-PhpManager() {
|
||||||
$repo = "mlocati/powershell-phpmanager"
|
$repo = "mlocati/powershell-phpmanager"
|
||||||
$zip_file = "$php_dir\PhpManager.zip"
|
$zip_file = "$php_dir\PhpManager.zip"
|
||||||
$tags = Invoke-WebRequest https://api.github.com/repos/$repo/tags | ConvertFrom-Json
|
$tag = (Invoke-RestMethod https://api.github.com/repos/$repo/tags)[0].Name
|
||||||
$tag = $tags[0].Name
|
|
||||||
$module_path = "$php_dir\PhpManager\powershell-phpmanager-$tag\PhpManager"
|
$module_path = "$php_dir\PhpManager\powershell-phpmanager-$tag\PhpManager"
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri https://github.com/$repo/archive/$tag.zip -OutFile $zip_file
|
Invoke-WebRequest -UseBasicParsing -Uri https://github.com/$repo/archive/$tag.zip -OutFile $zip_file
|
||||||
Expand-Archive -Path $zip_file -DestinationPath $php_dir\PhpManager
|
Expand-Archive -Path $zip_file -DestinationPath $php_dir\PhpManager -Force
|
||||||
Import-Module $module_path
|
Import-Module $module_path
|
||||||
Add-Content -Path $PsHome\profile.ps1 -Value "Import-Module $module_path"
|
Add-ToProfile $current_profile "PhpManager" "Import-Module $module_path"
|
||||||
}
|
}
|
||||||
|
|
||||||
Function Add-Extension {
|
Function Add-Extension {
|
||||||
@ -105,7 +127,7 @@ Function Add-Tool() {
|
|||||||
}
|
}
|
||||||
if ($tool -eq "symfony") {
|
if ($tool -eq "symfony") {
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $php_dir\$tool.exe
|
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $php_dir\$tool.exe
|
||||||
Add-Content -Path $PsHome\profile.ps1 -Value "New-Alias $tool $php_dir\$tool.exe" > $null 2>&1
|
Add-ToProfile $current_profile $tool "New-Alias $tool $php_dir\$tool.exe" > $null 2>&1
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $php_dir\$tool
|
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $php_dir\$tool
|
||||||
@ -115,7 +137,7 @@ Function Add-Tool() {
|
|||||||
$bat_content += "SET BIN_TARGET=%~dp0/" + $tool
|
$bat_content += "SET BIN_TARGET=%~dp0/" + $tool
|
||||||
$bat_content += "php %BIN_TARGET% %*"
|
$bat_content += "php %BIN_TARGET% %*"
|
||||||
Set-Content -Path $php_dir\$tool.bat -Value $bat_content
|
Set-Content -Path $php_dir\$tool.bat -Value $bat_content
|
||||||
Add-Content -Path $PsHome\profile.ps1 -Value "New-Alias $tool $php_dir\$tool.bat" > $null 2>&1
|
Add-ToProfile $current_profile $tool "New-Alias $tool $php_dir\$tool.bat" > $null 2>&1
|
||||||
} catch { }
|
} catch { }
|
||||||
}
|
}
|
||||||
if($tool -eq "phive") {
|
if($tool -eq "phive") {
|
||||||
@ -174,6 +196,7 @@ $tick = ([char]8730)
|
|||||||
$cross = ([char]10007)
|
$cross = ([char]10007)
|
||||||
$php_dir = 'C:\tools\php'
|
$php_dir = 'C:\tools\php'
|
||||||
$ext_dir = "$php_dir\ext"
|
$ext_dir = "$php_dir\ext"
|
||||||
|
$current_profile = "$PSHOME\Profile.ps1"
|
||||||
$ProgressPreference = 'SilentlyContinue'
|
$ProgressPreference = 'SilentlyContinue'
|
||||||
$master_version = '8.0'
|
$master_version = '8.0'
|
||||||
$arch = 'x64'
|
$arch = 'x64'
|
||||||
@ -181,6 +204,9 @@ $ts = $env:PHPTS -eq 'ts'
|
|||||||
if($env:PHPTS -ne 'ts') {
|
if($env:PHPTS -ne 'ts') {
|
||||||
$env:PHPTS = 'nts'
|
$env:PHPTS = 'nts'
|
||||||
}
|
}
|
||||||
|
if(-not(Test-Path -LiteralPath $current_profile)) {
|
||||||
|
New-Item -Path $current_profile -ItemType "file" -Force >$null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
Step-Log "Setup PhpManager"
|
Step-Log "Setup PhpManager"
|
||||||
Install-PhpManager >$null 2>&1
|
Install-PhpManager >$null 2>&1
|
||||||
|
47
src/tools.ts
47
src/tools.ts
@ -33,8 +33,10 @@ export async function getCommand(
|
|||||||
export async function getToolVersion(version: string): Promise<string> {
|
export async function getToolVersion(version: string): Promise<string> {
|
||||||
// semver_regex - https://semver.org/
|
// semver_regex - https://semver.org/
|
||||||
const semver_regex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
const semver_regex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
||||||
|
const composer_regex = /^stable$|^preview$|^snapshot$|^v?[1|2]$/;
|
||||||
version = version.replace(/[><=^]*/, '');
|
version = version.replace(/[><=^]*/, '');
|
||||||
switch (true) {
|
switch (true) {
|
||||||
|
case composer_regex.test(version):
|
||||||
case semver_regex.test(version):
|
case semver_regex.test(version):
|
||||||
return version;
|
return version;
|
||||||
default:
|
default:
|
||||||
@ -279,19 +281,47 @@ export async function getSymfonyUri(
|
|||||||
* @param tools_list
|
* @param tools_list
|
||||||
*/
|
*/
|
||||||
export async function addComposer(tools_list: string[]): Promise<string[]> {
|
export async function addComposer(tools_list: string[]): Promise<string[]> {
|
||||||
const regex = /^composer($|:.*)/;
|
const regex_any = /^composer($|:.*)/;
|
||||||
const composer: string = tools_list.filter(tool => regex.test(tool))[0];
|
const regex_valid = /^composer:?($|preview$|snapshot$|v?[1-2]$)/;
|
||||||
switch (composer) {
|
const matches: string[] = tools_list.filter(tool => regex_valid.test(tool));
|
||||||
|
let composer = 'composer';
|
||||||
|
tools_list = tools_list.filter(tool => !regex_any.test(tool));
|
||||||
|
switch (matches[0]) {
|
||||||
case undefined:
|
case undefined:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tools_list = tools_list.filter(tool => !regex.test(tool));
|
composer = matches[matches.length - 1].replace(/v([1-2])/, '$1');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tools_list.unshift('composer');
|
tools_list.unshift(composer);
|
||||||
return tools_list;
|
return tools_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to get script to update composer
|
||||||
|
*
|
||||||
|
* @param version
|
||||||
|
* @param os_version
|
||||||
|
*/
|
||||||
|
export async function updateComposer(
|
||||||
|
version: string,
|
||||||
|
os_version: string
|
||||||
|
): Promise<string> {
|
||||||
|
switch (version) {
|
||||||
|
case 'snapshot':
|
||||||
|
case 'preview':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
return (
|
||||||
|
'\ncomposer self-update --' +
|
||||||
|
version +
|
||||||
|
(await utils.suppressOutput(os_version))
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to get Tools list after cleanup
|
* Function to get Tools list after cleanup
|
||||||
*
|
*
|
||||||
@ -443,11 +473,10 @@ export async function addTools(
|
|||||||
script += await addArchive(tool, version, url, os_version);
|
script += await addArchive(tool, version, url, os_version);
|
||||||
break;
|
break;
|
||||||
case 'composer':
|
case 'composer':
|
||||||
// If RC is released as latest release, switch to getcomposer.
|
|
||||||
// Preferred source is GitHub as it is faster.
|
|
||||||
// url = github + 'composer/composer/releases/latest/download/composer.phar';
|
|
||||||
url = 'https://getcomposer.org/composer-stable.phar';
|
url = 'https://getcomposer.org/composer-stable.phar';
|
||||||
script += await addArchive(tool, version, url, os_version);
|
script +=
|
||||||
|
(await addArchive('composer', version, url, os_version)) +
|
||||||
|
(await updateComposer(version, os_version));
|
||||||
break;
|
break;
|
||||||
case 'codeception':
|
case 'codeception':
|
||||||
url =
|
url =
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
/* Basic Options */
|
/* Basic Options */
|
||||||
// "incremental": true, /* Enable incremental compilation */
|
// "incremental": true, /* Enable incremental compilation */
|
||||||
"target": "ES2020", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
"target": "ES2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
||||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
||||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||||
// "checkJs": true, /* Report errors in .js files. */
|
// "checkJs": true, /* Report errors in .js files. */
|
||||||
|
Reference in New Issue
Block a user