mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-01 12:43:17 +07:00
Compare commits
389 Commits
Author | SHA1 | Date | |
---|---|---|---|
6e94dfca93 | |||
7e68292070 | |||
51d5ac37df | |||
51c455198d | |||
b95ad9e061 | |||
c9a96cbdd1 | |||
60a4a89981 | |||
a36d464b4a | |||
669a423ff1 | |||
113fcc64e3 | |||
afefcaf556 | |||
df4388ca60 | |||
fa18c2b29f | |||
399ab79d14 | |||
9601a19811 | |||
60ff151fc1 | |||
121cb19a65 | |||
739ccacdc4 | |||
cff0bdeaa3 | |||
70d858dd49 | |||
3340d60d91 | |||
57c17e3349 | |||
356e1a5128 | |||
633920d001 | |||
406f3c410a | |||
17349dafc1 | |||
962f570776 | |||
f66ac5d5a6 | |||
3f466981fc | |||
fd62612e9e | |||
26791e8412 | |||
f42065d568 | |||
912f27c42c | |||
86e1ccdd8d | |||
36ec0200a6 | |||
1686147b24 | |||
ecc8611061 | |||
abefdb50ee | |||
2ea6ca5b36 | |||
a83d4379b1 | |||
fbc8407035 | |||
6972aed899 | |||
d2f58713aa | |||
068c794af7 | |||
1e119b6d1a | |||
77721f6637 | |||
d731e56579 | |||
e5b90e33c6 | |||
849315646a | |||
d891a81b7f | |||
5098017251 | |||
2da85f306f | |||
1f94ad201f | |||
862f206cd2 | |||
81964ae791 | |||
b7d1d9c9a9 | |||
c5e4d55c3b | |||
d74064b67a | |||
8862a73fdd | |||
7b44f7e007 | |||
ff5499165a | |||
b3cd6b4dab | |||
ce02569aea | |||
f1c04eb1eb | |||
77aeac1761 | |||
569522d50d | |||
ea8be20255 | |||
d6f700217a | |||
1015b3659d | |||
03359ef1ab | |||
fd9aae59b0 | |||
9af1e7006f | |||
5efdcae81a | |||
f0fb8731a5 | |||
5a15252e66 | |||
c0c6e403b6 | |||
d0677c93b9 | |||
466908db61 | |||
8dbd6b7684 | |||
5a40a5875d | |||
790a41a722 | |||
62c7ba2bee | |||
41797e3af9 | |||
c6150c6a2b | |||
19b09596c6 | |||
4ec398d39a | |||
6bbaac9c49 | |||
012f269570 | |||
09222f42ae | |||
403191b6b6 | |||
02cba443ad | |||
31fa0d7883 | |||
f9caa0457d | |||
248394635c | |||
a094f682be | |||
45213ad923 | |||
385e3b6e96 | |||
5453c1f4f0 | |||
787c534f64 | |||
d812e938ac | |||
7de94e6400 | |||
68fbd80105 | |||
02445f719d | |||
215b040f0d | |||
925ede2589 | |||
d1510a82d5 | |||
808e74aed5 | |||
f51d00d350 | |||
c8111b053c | |||
294f03454a | |||
5d27b8f90e | |||
87e62cbb7f | |||
2c29e8b9a1 | |||
04a9e3b562 | |||
4adaa73d25 | |||
234594684c | |||
3c0527bec1 | |||
c5d41cd3f1 | |||
601cabfd2a | |||
81c750c6d7 | |||
0661130e18 | |||
4244b92ac6 | |||
e9595da9ac | |||
b77ec78d01 | |||
96d8c1e901 | |||
8816b6ff48 | |||
9205a596c9 | |||
6fc20c9b7f | |||
eb07280d5c | |||
eaaab1cec3 | |||
853381d0bb | |||
1394617d60 | |||
093498a0a1 | |||
d2241010ef | |||
a0f02c17c0 | |||
bb5257e07d | |||
f687ff8f21 | |||
537c66b2ea | |||
073c2e666b | |||
465e63b28c | |||
b8f0b066dc | |||
9e663851ce | |||
ad196941ed | |||
f8e867a9ff | |||
8cb01730c7 | |||
ebba1db2c3 | |||
716331904e | |||
2ad63ddbd3 | |||
c4606c9269 | |||
7dcb43c768 | |||
691c5309aa | |||
84b222366a | |||
b98ed88402 | |||
0ca827ae3b | |||
16b0a25bf6 | |||
fa0af5c382 | |||
db36b200b1 | |||
7cfd76cc1b | |||
682b1f5e44 | |||
7b56e4491e | |||
acc1fdb337 | |||
e3286d1234 | |||
83019fade2 | |||
83b3d4a8f9 | |||
56273e234f | |||
48a00b4d3f | |||
f641885a8d | |||
9457ce6e2b | |||
a31f8b1a2b | |||
ffded4a3e8 | |||
9e6b9d7d70 | |||
7d45057bba | |||
c4fd8b0739 | |||
49088ede98 | |||
3543ed1ef8 | |||
9bd0fdbc18 | |||
c5d29cf8e3 | |||
c5e0997b44 | |||
ee084d3176 | |||
c256f0c9cb | |||
d84365cd03 | |||
3c52e818b1 | |||
188598ef9d | |||
f8b8d766d5 | |||
15a6402865 | |||
91bd6b26c2 | |||
9dae796baf | |||
6d9aef83a3 | |||
bd5a0d94b6 | |||
5405f14867 | |||
cb25b9c13a | |||
e63d25d41f | |||
2a7ae24c8e | |||
e68a74a71c | |||
67152eb712 | |||
83bdf158fa | |||
5e240ab99f | |||
0fae072f07 | |||
e0561697dc | |||
3aa0f17b55 | |||
8b218279a3 | |||
90b6355bf0 | |||
84f23853b7 | |||
a4001afbd6 | |||
cfbb105cb6 | |||
c549015370 | |||
9e22b87414 | |||
7961bc11b1 | |||
87f807365d | |||
25d9bbc737 | |||
d2f865c91a | |||
a13373a271 | |||
a764546381 | |||
380b68048b | |||
4dcf9cd2ab | |||
f3641e0c33 | |||
d35633ec7a | |||
7eea3d82f6 | |||
57ecdba082 | |||
db03758c66 | |||
82837572d4 | |||
8efcf46b31 | |||
4391cf8a4c | |||
87a69f94d9 | |||
c12fad850b | |||
47b8d68850 | |||
530929f741 | |||
a965723128 | |||
9845a63f5c | |||
4af7e96d03 | |||
13a3d9d0a9 | |||
9d042b2683 | |||
7a59874419 | |||
8dee767b82 | |||
5fc5a95363 | |||
8ba779d78e | |||
04376074d2 | |||
262202d43f | |||
f64dddeeb4 | |||
1d50c4a8cd | |||
d313593fee | |||
5753a00ef5 | |||
38731c6386 | |||
9f400a0dfd | |||
ba020e3463 | |||
c0d425d939 | |||
4752a51595 | |||
10608f5908 | |||
d01ec214f2 | |||
6158538131 | |||
dd27d4eb81 | |||
248d04f73c | |||
c5e40d9067 | |||
e0ed1ad0ef | |||
2907f8a584 | |||
52691651dc | |||
b9404683e1 | |||
70954fb6f8 | |||
65e65163cd | |||
41397ce45e | |||
c09954033f | |||
7cec1987ac | |||
739e40fb5e | |||
9dec5892e7 | |||
94616818f0 | |||
4f0d9003dc | |||
b2edfc47dd | |||
6bd872ad2c | |||
03eb8cc744 | |||
9687dd1d8a | |||
2df0d2b443 | |||
0e56c0b653 | |||
0469a6f681 | |||
325413a824 | |||
b84dd3ce25 | |||
190220c10d | |||
4fb049a68b | |||
3e0678b50f | |||
5b06192e7c | |||
b419442896 | |||
49b8b7e301 | |||
b1776b79c8 | |||
a48ff666f8 | |||
3bffbad95a | |||
18041fdab5 | |||
b36d2222e6 | |||
50ffa593bb | |||
6cbc46fdb6 | |||
08c60fceea | |||
c30a9630bb | |||
0158fe2782 | |||
3a8557bcc6 | |||
d10d1e249b | |||
3ec1728de8 | |||
9c266d4158 | |||
0135ee2ed1 | |||
5c2618165a | |||
8123132b99 | |||
f5863fd356 | |||
cf0fdf35f2 | |||
8830cdd08c | |||
4960e3179f | |||
0f3f604249 | |||
5915f05b06 | |||
dccdb5ab67 | |||
9a01fd28ca | |||
d5cd6a4bd1 | |||
006301e81d | |||
4a38014043 | |||
a0ac655b06 | |||
41e56c42c7 | |||
4e8a0cfe8b | |||
ee72f2f8ad | |||
ed557fd2c3 | |||
d90cd153ee | |||
3376371dd8 | |||
a2b261d79a | |||
6c93dbd391 | |||
f58dc6eca1 | |||
5326f2302f | |||
b9a78a31fb | |||
ba69b25cab | |||
a6533acdd4 | |||
d3b37e3d0d | |||
f3a1262ff6 | |||
933abd531a | |||
67ed7f234b | |||
f90accffb3 | |||
93441b70bf | |||
67f23b6380 | |||
2937ad6e7a | |||
a5e5d07fcb | |||
30d8b321f4 | |||
405e57e429 | |||
58f376b118 | |||
b7d68d8225 | |||
9252820289 | |||
a5cc9fab25 | |||
4e5685a75d | |||
d475227ba5 | |||
38cb8b924d | |||
fdd83e94df | |||
ad112b7981 | |||
2b0d6e221f | |||
acee5b203f | |||
84e88e382f | |||
bbdc4e3b67 | |||
311eb9f3ba | |||
3dfd7a648b | |||
943f491830 | |||
dc9461a053 | |||
f2720d7b82 | |||
99161b7790 | |||
5de6285e1f | |||
14d702e830 | |||
9539b27b4a | |||
a4f7326577 | |||
9b297384e1 | |||
9d77946f60 | |||
6d21e6dc05 | |||
68c827cfcf | |||
d95ca49e8d | |||
03fd0b8719 | |||
ebe1c12c21 | |||
b46021d870 | |||
64ba54fc1b | |||
71571f685a | |||
10f86cb1a1 | |||
0f694c5087 | |||
9dfebd1adb | |||
3781acab4b | |||
cdfbf6d0f0 | |||
0ccb02802f | |||
a4572586dc | |||
cb3c752d1f | |||
383a511d0e | |||
cc55dbcaa8 | |||
e644692ccf | |||
96d5358317 | |||
3a473c9a22 | |||
40944de129 | |||
f9202d6b64 | |||
d99c8732ba | |||
2c559eae3d | |||
3a2ca44a8a | |||
17241e2689 | |||
ca33d01e9f | |||
3c6644f237 | |||
326dfd1e76 |
@ -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",
|
||||||
@ -10,14 +10,7 @@
|
|||||||
"plugin:import/warnings",
|
"plugin:import/warnings",
|
||||||
"plugin:import/typescript",
|
"plugin:import/typescript",
|
||||||
"plugin:prettier/recommended",
|
"plugin:prettier/recommended",
|
||||||
"prettier/@typescript-eslint"
|
"prettier"
|
||||||
],
|
],
|
||||||
"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",
|
|
||||||
"@typescript-eslint/no-unused-vars": "off"
|
|
||||||
}
|
|
||||||
}
|
}
|
29
.github/CONTRIBUTING.md
vendored
29
.github/CONTRIBUTING.md
vendored
@ -8,22 +8,16 @@ Please note that this project is released with a [Contributor Code of Conduct](C
|
|||||||
|
|
||||||
* Fork the project.
|
* Fork the project.
|
||||||
* Make your bug fix or feature addition.
|
* Make your bug fix or feature addition.
|
||||||
* Add tests for it. This is important so we don't break it in a future version unintentionally.
|
* Add tests for it, so we don't break it in a future version unintentionally.
|
||||||
* Send a pull request to the develop branch.
|
* If editing the scripts, create a demo integration test.
|
||||||
|
* Send a pull request to the develop branch with all the details.
|
||||||
|
|
||||||
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 response. Please do not take delays personal and feel free to remind.
|
Due to time constraints, you may not always get a quick response. Please do not take delays personally and feel free to remind.
|
||||||
|
|
||||||
## Coding Guidelines
|
## Coding Guidelines
|
||||||
|
|
||||||
This project comes with `.prettierrc.json` and `eslintrc.json` configuration files. Please run the following commands to format the code before committing it.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ npm run format
|
|
||||||
$ npm run lint
|
|
||||||
```
|
|
||||||
|
|
||||||
## Using setup-php from a Git checkout
|
## Using setup-php from a Git checkout
|
||||||
|
|
||||||
The following commands can be used to perform the initial checkout of setup-php:
|
The following commands can be used to perform the initial checkout of setup-php:
|
||||||
@ -40,6 +34,19 @@ Install setup-php dependencies using [npm](https://www.npmjs.com/):
|
|||||||
$ npm install
|
$ npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you are using `Windows` configure `git` to handle line endings.
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
git config --local core.autocrlf true
|
||||||
|
```
|
||||||
|
|
||||||
|
This project comes with `.prettierrc.json` and `eslintrc.json` configuration files. Please run the following commands to fix and verify the code quality.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm run format
|
||||||
|
$ npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
## Running the test suite
|
## Running the test suite
|
||||||
|
|
||||||
After following the steps shown above, The `setup-php` tests in the `__tests__` directory can be run using this command:
|
After following the steps shown above, The `setup-php` tests in the `__tests__` directory can be run using this command:
|
||||||
@ -60,4 +67,4 @@ $ npm run release
|
|||||||
|
|
||||||
Please submit the issue using the appropriate 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)
|
||||||
|
5
.github/FUNDING.yml
vendored
5
.github/FUNDING.yml
vendored
@ -1,8 +1,7 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: shivammathur
|
open_collective: setup-php
|
||||||
|
tidelift: "npm/setup-php"
|
||||||
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
|
||||||
|
37
.github/ISSUE_TEMPLATE/bug_report.md
vendored
37
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,23 +1,42 @@
|
|||||||
---
|
---
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Create a report to help us improve
|
about: Nice, you found a bug!
|
||||||
title: ''
|
title: ''
|
||||||
labels: ''
|
labels: 'bug'
|
||||||
assignees: ''
|
assignees: 'shivammathur'
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Describe the bug**
|
**Describe the bug**
|
||||||
A clear and concise description of what the bug is.
|
<!-- Please describe the bug concisely. -->
|
||||||
|
|
||||||
|
**Version**
|
||||||
|
- [ ] I have checked releases, and the bug exists in the latest patch version of `v1` or `v2`.
|
||||||
|
- [ ] `v2`
|
||||||
|
- [ ] `v1`
|
||||||
|
|
||||||
|
**Runners**
|
||||||
|
<!-- Please mark the GitHub Action runner your workflow uses. -->
|
||||||
|
- [ ] GitHub Hosted
|
||||||
|
- [ ] Self Hosted
|
||||||
|
|
||||||
|
**Operating systems**
|
||||||
|
<!-- Please mention the operating systems your workflow uses. -->
|
||||||
|
|
||||||
|
**PHP versions**
|
||||||
|
<!-- Please mention the PHP versions your workflow uses. -->
|
||||||
|
|
||||||
**To Reproduce**
|
**To Reproduce**
|
||||||
Please provide the GitHub Action `.yml` file.
|
<!-- Please provide the relevant steps of your workflow `.yml` file. -->
|
||||||
|
|
||||||
**Expected behavior**
|
**Expected behavior**
|
||||||
A clear and concise description of what you expected to happen.
|
<!-- A clear and concise description of what you expected to happen. -->
|
||||||
|
|
||||||
**Screenshots**
|
**Screenshots/Logs**
|
||||||
If applicable, add screenshots to help explain your problem.
|
<!-- If applicable, add screenshots or logs to help explain your problem. -->
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context about the problem here.
|
<!-- Add any other context about the problem here. -->
|
||||||
|
|
||||||
|
**Are you willing to submit a PR?**
|
||||||
|
<!-- We accept pull requests targeting the develop branch. -->
|
||||||
|
26
.github/ISSUE_TEMPLATE/feature_request.md
vendored
26
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,20 +1,26 @@
|
|||||||
---
|
---
|
||||||
name: Feature request
|
name: Feature request
|
||||||
about: Suggest an idea for this project
|
about: Suggest a new feature
|
||||||
title: ''
|
title: ''
|
||||||
labels: ''
|
labels: 'enhancement'
|
||||||
assignees: ''
|
assignees: 'shivammathur'
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
**Describe the feature**
|
||||||
A clear and concise description of what the problem is. Ex. I want to improve [...]
|
<!-- Please describe concisely the feature you want to add. -->
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
**Version**
|
||||||
A clear and concise description of what you want to happen.
|
- [ ] I have checked releases, and the feature is missing in the latest patch version of `v2`.
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
**Underlying issue**
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
<!-- Please describe the issue this would solve. -->
|
||||||
|
|
||||||
|
**Describe alternatives**
|
||||||
|
<!-- Please mention any alternative solutions you've considered. -->
|
||||||
|
|
||||||
**Additional context**
|
**Additional context**
|
||||||
Add any other context or screenshots about the feature request here.
|
<!-- Add any other context or screenshots about the feature request here. -->
|
||||||
|
|
||||||
|
**Are you willing to submit a PR?**
|
||||||
|
<!-- We accept pull requests targeting the develop branch. -->
|
||||||
|
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -5,16 +5,15 @@ labels: bug or enhancement
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## A Pull Request should be associated with an Issue.
|
## A Pull Request should be associated with a Discussion.
|
||||||
|
|
||||||
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
> If you're fixing a bug, adding a new feature or improving something please provide the details in discussions,
|
||||||
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
> so that the development can be pointed in the intended direction.
|
||||||
> and potentially we'll be able to point development in a particular direction.
|
|
||||||
|
|
||||||
Related issue:
|
Related discussion: <!-- Please link the related discussion -->
|
||||||
|
|
||||||
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
> 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
|
> Thank you for your contribution.
|
||||||
|
|
||||||
### Description
|
### Description
|
||||||
|
|
||||||
@ -26,7 +25,12 @@ This PR [briefly explain what it does]
|
|||||||
- [ ] I have run `npm run format` before the commit.
|
- [ ] I have run `npm run format` before the commit.
|
||||||
- [ ] I have run `npm run lint` before the commit.
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
- [ ] I have run `npm run release` before the commit.
|
- [ ] I have run `npm run release` before the commit.
|
||||||
- [ ] `npm test` returns with no unit test errors.
|
- [ ] `npm test` returns with no unit test errors and all code covered.
|
||||||
|
|
||||||
|
> In case this PR edits any scripts:
|
||||||
|
|
||||||
|
- [ ] I have checked the edited scripts for syntax.
|
||||||
|
- [ ] I have tested the changes in an integration test (If yes, provide workflow YAML and link).
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
- Please target the develop branch when submitting the pull request.
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
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.10.x | :white_check_mark: |
|
||||||
|
| 2.8.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).
|
77
.github/workflows/docs.yml
vendored
Normal file
77
.github/workflows/docs.yml
vendored
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
name: Docs workflow
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 15 * * 6'
|
||||||
|
jobs:
|
||||||
|
create:
|
||||||
|
name: Create
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-2019, macos-10.15]
|
||||||
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
|
||||||
|
steps:
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
- name: Save unix
|
||||||
|
env:
|
||||||
|
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||||
|
version: ${{ matrix.php-versions }}
|
||||||
|
if: matrix.operating-system != 'windows-2019'
|
||||||
|
run: |
|
||||||
|
echo "## PHP $version" >> "$file"
|
||||||
|
printf "\n" >> "$file"
|
||||||
|
echo "\`\`\`" >> "$file"
|
||||||
|
php -m >> "$file"
|
||||||
|
echo "\`\`\`" >> "$file"
|
||||||
|
printf "\n" >> "$file"
|
||||||
|
- name: Save Windows
|
||||||
|
env:
|
||||||
|
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||||
|
version: ${{ matrix.php-versions }}
|
||||||
|
if: matrix.operating-system == 'windows-2019'
|
||||||
|
run: |
|
||||||
|
Write-Output "## PHP ${{ matrix.php-versions }}`n" | Out-File -FilePath "$env:file"
|
||||||
|
Write-Output "``````" | Out-File -FilePath "$env:file" -Append
|
||||||
|
php -m | Out-File -FilePath "$env:file" -Append
|
||||||
|
Write-Output "```````n" | Out-File -FilePath "$env:file" -Append
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: lists
|
||||||
|
path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||||
|
update:
|
||||||
|
name: Update
|
||||||
|
needs: create
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: ${{ github.repository }}.wiki
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
path: ${{ github.workspace }}
|
||||||
|
- name: Combine
|
||||||
|
run: |
|
||||||
|
git config --local user.email "${{ secrets.email }}"
|
||||||
|
git config --local user.name "${{ github.repository_owner }}"
|
||||||
|
for os in ubuntu-20.04 ubuntu-18.04 ubuntu-16.04 windows-2019 macos-10.15 macos-11.0; do
|
||||||
|
echo "These are extensions which are loaded by default on the following PHP versions. More extensions which are available as packages and available on pecl are supported by setup-php. Refer to [php extension support](https://github.com/shivammathur/setup-php#heavy_plus_sign-php-extension-support) for more details." > Php-extensions-loaded-on-"$os".md
|
||||||
|
for version in 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1; do
|
||||||
|
if [ "$os" = "macos-11.0" ]; then
|
||||||
|
cat lists/php"$version"-macos-10.15.md >> Php-extensions-loaded-on-"$os".md
|
||||||
|
else
|
||||||
|
cat lists/php"$version"-"$os".md >> Php-extensions-loaded-on-"$os".md
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
rm -rf ./lists
|
||||||
|
if [ "$(git status --porcelain=v1 2>/dev/null | wc -l)" != "0" ]; then
|
||||||
|
git add .
|
||||||
|
git commit -m "Update PHP extensions on wiki - $(date +'%d-%m-%y')"
|
||||||
|
git push -f https://${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.wiki.git master || true
|
||||||
|
fi
|
92
.github/workflows/experimental-workflow.yml
vendored
92
.github/workflows/experimental-workflow.yml
vendored
@ -1,92 +0,0 @@
|
|||||||
name: Experimental workflow
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- nightly
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
- verbose
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
- 'examples/**'
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- nightly
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
- verbose
|
|
||||||
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]
|
|
||||||
php-versions: ['8.0']
|
|
||||||
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 }}-php${{ matrix.php-versions }}
|
|
||||||
|
|
||||||
- name: Setup PHP with extensions and custom config
|
|
||||||
run: node dist/index.js
|
|
||||||
env:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
extensions: xml, opcache, xdebug, pcov #optional
|
|
||||||
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata #optional
|
|
||||||
coverage: pcov
|
|
||||||
|
|
||||||
- name: Testing PHP version
|
|
||||||
run: |
|
|
||||||
php -v
|
|
||||||
php -r "if(strpos(phpversion(), '${{ matrix.php-versions }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
|
||||||
|
|
||||||
- name: Testing Composer version
|
|
||||||
run: |
|
|
||||||
composer -V
|
|
||||||
php -r "if(strpos(@exec('composer -V'), 'Composer version') === false) {throw new Exception('Composer not found');}"
|
|
||||||
- name: Testing Extensions
|
|
||||||
run: |
|
|
||||||
php -m
|
|
||||||
php -r "if(! extension_loaded('mbstring')) {throw new Exception('mbstring not found');}"
|
|
||||||
php -r "if(! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
|
||||||
- name: Testing ini values
|
|
||||||
run: |
|
|
||||||
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
|
||||||
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
|
||||||
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
|
||||||
- name: Test JIT
|
|
||||||
run: |
|
|
||||||
php -r "if(! extension_loaded('Zend OPcache')) {throw new Exception('Zend OPcache not found');}"
|
|
||||||
php -r "if(ini_get('opcache.jit_buffer_size')!='256M') {throw new Exception('opcache.jit_buffer_size not set');}"
|
|
||||||
php -r "if(ini_get('opcache.jit')!=1235) {throw new Exception('opcache.jit not set');}"
|
|
||||||
php -r "if(ini_get('pcre.jit')!=1) {throw new Exception('pcre.jit not set');}"
|
|
||||||
- name: Benchmark JIT
|
|
||||||
run: |
|
|
||||||
curl -o bench.php https://raw.githubusercontent.com/php/php-src/master/Zend/bench.php
|
|
||||||
php bench.php
|
|
51
.github/workflows/node-workflow.yml
vendored
Normal file
51
.github/workflows/node-workflow.yml
vendored
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
name: Node workflow
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- verbose
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
- 'examples/**'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- verbose
|
||||||
|
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 14.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.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 }}
|
44
.github/workflows/workflow.yml
vendored
44
.github/workflows/workflow.yml
vendored
@ -1,5 +1,6 @@
|
|||||||
name: Main workflow
|
name: Main workflow
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
@ -23,40 +24,36 @@ 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.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
|
||||||
|
env:
|
||||||
|
extensions: xml, opcache, xdebug, pcov
|
||||||
|
key: cache-v3
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Node.js 12.x
|
- name: Setup cache environment
|
||||||
uses: actions/setup-node@v1
|
id: cache-env
|
||||||
|
uses: shivammathur/cache-extensions@develop
|
||||||
with:
|
with:
|
||||||
node-version: 12.x
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
key: ${{ env.key }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Cache extensions
|
||||||
run: npm install
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
- name: Prettier Format Check
|
path: ${{ steps.cache-env.outputs.dir }}
|
||||||
run: npm run format-check
|
key: ${{ steps.cache-env.outputs.key }}
|
||||||
|
restore-keys: ${{ steps.cache-env.outputs.key }}
|
||||||
- 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:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: xml, opcache, xdebug, pcov #optional
|
extensions: ${{ env.extensions }}
|
||||||
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata #optional
|
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata
|
||||||
|
|
||||||
- name: Testing PHP version
|
- name: Testing PHP version
|
||||||
run: |
|
run: |
|
||||||
@ -75,6 +72,7 @@ jobs:
|
|||||||
php -r "if(phpversion()>=7.1 && ! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
php -r "if(phpversion()>=7.1 && ! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
||||||
- name: Testing ini values
|
- name: Testing ini values
|
||||||
run: |
|
run: |
|
||||||
|
php -r "if(ini_get('memory_limit')!='-1') {throw new Exception('memory_limit not disabled');}"
|
||||||
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
||||||
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
||||||
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
@ -1,11 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
"arrowParens": "avoid",
|
||||||
|
"bracketSpacing": false,
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"parser": "typescript",
|
||||||
"printWidth": 80,
|
"printWidth": 80,
|
||||||
"tabWidth": 2,
|
|
||||||
"useTabs": false,
|
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
|
"tabWidth": 2,
|
||||||
"trailingComma": "none",
|
"trailingComma": "none",
|
||||||
"bracketSpacing": false,
|
"useTabs": false
|
||||||
"arrowParens": "avoid",
|
}
|
||||||
"parser": "typescript"
|
|
||||||
}
|
|
@ -7,14 +7,14 @@ describe('Config tests', () => {
|
|||||||
'win32'
|
'win32'
|
||||||
);
|
);
|
||||||
expect(win32).toContain(
|
expect(win32).toContain(
|
||||||
'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
'Add-Content "$php_dir\\php.ini" "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||||
);
|
);
|
||||||
|
|
||||||
win32 = await config.addINIValues(
|
win32 = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'fedora'
|
'openbsd'
|
||||||
);
|
);
|
||||||
expect(win32).toContain('Platform fedora is not supported');
|
expect(win32).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addINIValuesOnLinux', async () => {
|
it('checking addINIValuesOnLinux', async () => {
|
||||||
@ -24,14 +24,14 @@ describe('Config tests', () => {
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
expect(linux).toContain(
|
expect(linux).toContain(
|
||||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'
|
||||||
);
|
);
|
||||||
|
|
||||||
linux = await config.addINIValues(
|
linux = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'fedora'
|
'openbsd'
|
||||||
);
|
);
|
||||||
expect(linux).toContain('Platform fedora is not supported');
|
expect(linux).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addINIValuesOnDarwin', async () => {
|
it('checking addINIValuesOnDarwin', async () => {
|
||||||
@ -40,13 +40,13 @@ describe('Config tests', () => {
|
|||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain(
|
expect(darwin).toContain(
|
||||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'
|
||||||
);
|
);
|
||||||
|
|
||||||
darwin = await config.addINIValues(
|
darwin = await config.addINIValues(
|
||||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
'fedora'
|
'openbsd'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain('Platform fedora is not supported');
|
expect(darwin).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
import * as coverage from '../src/coverage';
|
import * as coverage from '../src/coverage';
|
||||||
|
|
||||||
jest.mock('../src/extensions', () => ({
|
|
||||||
addExtension: jest.fn().mockImplementation(extension => {
|
|
||||||
return 'add_extension ' + extension + '\n';
|
|
||||||
})
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('Config tests', () => {
|
describe('Config tests', () => {
|
||||||
it('checking addCoverage with PCOV on windows', async () => {
|
it('checking addCoverage with PCOV on windows', async () => {
|
||||||
let win32: string = await coverage.addCoverage('PCOV', '7.4', 'win32');
|
let win32: string = await coverage.addCoverage('PCOV', '7.4', 'win32');
|
||||||
expect(win32).toContain('add_extension pcov');
|
expect(win32).toContain('Add-Extension pcov');
|
||||||
expect(win32).toContain('Remove-Extension xdebug');
|
expect(win32).toContain('Remove-Extension xdebug');
|
||||||
|
|
||||||
win32 = await coverage.addCoverage('pcov', '7.0', 'win32');
|
win32 = await coverage.addCoverage('pcov', '7.0', 'win32');
|
||||||
@ -27,28 +21,38 @@ describe('Config tests', () => {
|
|||||||
|
|
||||||
it('checking addCoverage with PCOV on darwin', async () => {
|
it('checking addCoverage with PCOV on darwin', async () => {
|
||||||
const darwin: string = await coverage.addCoverage('pcov', '7.4', 'darwin');
|
const darwin: string = await coverage.addCoverage('pcov', '7.4', 'darwin');
|
||||||
expect(darwin).toContain('add_extension pcov');
|
expect(darwin).toContain('add_brew_extension pcov');
|
||||||
expect(darwin).toContain('remove_extension xdebug');
|
expect(darwin).toContain('remove_extension xdebug');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on windows', async () => {
|
it('checking addCoverage with Xdebug on windows', async () => {
|
||||||
const win32: string = await coverage.addCoverage('xdebug', '7.4', 'win32');
|
const win32: string = await coverage.addCoverage('xdebug', '7.4', 'win32');
|
||||||
expect(win32).toContain('add_extension xdebug');
|
expect(win32).toContain('Add-Extension xdebug');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on windows', async () => {
|
it('checking addCoverage with Xdebug3 on windows', async () => {
|
||||||
const win32: string = await coverage.addCoverage('xdebug', '8.0', 'win32');
|
const win32: string = await coverage.addCoverage('xdebug3', '7.4', 'win32');
|
||||||
expect(win32).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
expect(win32).toContain('Add-Extension xdebug');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on linux', async () => {
|
it('checking addCoverage with Xdebug2 on windows', async () => {
|
||||||
const linux: string = await coverage.addCoverage('xdebug', '7.4', 'linux');
|
const win32: string = await coverage.addCoverage('xdebug2', '7.4', 'win32');
|
||||||
expect(linux).toContain('add_extension xdebug');
|
expect(win32).toContain('Add-Extension xdebug stable 2.9.8');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on linux', async () => {
|
it('checking addCoverage with Xdebug on linux', async () => {
|
||||||
const linux: string = await coverage.addCoverage('xdebug', '8.0', 'linux');
|
const linux: string = await coverage.addCoverage('xdebug', '8.0', 'linux');
|
||||||
expect(linux).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
expect(linux).toContain('add_extension xdebug');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCoverage with Xdebug3 on linux', async () => {
|
||||||
|
const linux: string = await coverage.addCoverage('xdebug3', '8.0', 'linux');
|
||||||
|
expect(linux).toContain('add_extension xdebug');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCoverage with Xdebug2 on linux', async () => {
|
||||||
|
const linux: string = await coverage.addCoverage('xdebug2', '7.4', 'linux');
|
||||||
|
expect(linux).toContain('add_pecl_extension xdebug 2.9.8 zend_extension');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on darwin', async () => {
|
it('checking addCoverage with Xdebug on darwin', async () => {
|
||||||
@ -57,16 +61,25 @@ describe('Config tests', () => {
|
|||||||
'7.4',
|
'7.4',
|
||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain('add_extension xdebug');
|
expect(darwin).toContain('add_brew_extension xdebug');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addCoverage with Xdebug on darwin', async () => {
|
it('checking addCoverage with Xdebug3 on darwin', async () => {
|
||||||
const darwin: string = await coverage.addCoverage(
|
const darwin: string = await coverage.addCoverage(
|
||||||
'xdebug',
|
'xdebug3',
|
||||||
'8.0',
|
'7.4',
|
||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
expect(darwin).toContain('add_brew_extension xdebug');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCoverage with Xdebug2 on darwin', async () => {
|
||||||
|
const darwin: string = await coverage.addCoverage(
|
||||||
|
'xdebug2',
|
||||||
|
'7.4',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('add_brew_extension xdebug2');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking disableCoverage windows', async () => {
|
it('checking disableCoverage windows', async () => {
|
||||||
|
@ -3,14 +3,44 @@ import * as extensions from '../src/extensions';
|
|||||||
describe('Extension tests', () => {
|
describe('Extension tests', () => {
|
||||||
it('checking addExtensionOnWindows', async () => {
|
it('checking addExtensionOnWindows', async () => {
|
||||||
let win32: string = await extensions.addExtension(
|
let win32: string = await extensions.addExtension(
|
||||||
'xdebug, pcov, phalcon4, ast-beta',
|
'Xdebug, pcov, sqlite, :intl, phalcon4, pecl_http, ioncube, oci8, pdo_oci, ast-beta, grpc-1.2.3, inotify-1.2.3alpha2, sqlsrv-1.2.3preview1',
|
||||||
'7.4',
|
'7.4',
|
||||||
'win32'
|
'win32'
|
||||||
);
|
);
|
||||||
expect(win32).toContain('Add-Extension xdebug');
|
expect(win32).toContain('Add-Extension xdebug');
|
||||||
expect(win32).toContain('Add-Extension pcov');
|
expect(win32).toContain('Add-Extension pcov');
|
||||||
expect(win32).toContain('phalcon.ps1 phalcon4');
|
expect(win32).toContain('Add-Extension sqlite3');
|
||||||
|
expect(win32).toContain('Remove-Extension intl');
|
||||||
|
expect(win32).toContain('Add-Phalcon phalcon4');
|
||||||
|
expect(win32).toContain('Add-Http');
|
||||||
|
expect(win32).toContain('Add-Ioncube');
|
||||||
|
expect(win32).toContain('Add-Oci oci8');
|
||||||
|
expect(win32).toContain('Add-Oci pdo_oci');
|
||||||
expect(win32).toContain('Add-Extension ast beta');
|
expect(win32).toContain('Add-Extension ast beta');
|
||||||
|
expect(win32).toContain('Add-Extension grpc stable 1.2.3');
|
||||||
|
expect(win32).toContain('Add-Extension inotify alpha 1.2.3');
|
||||||
|
expect(win32).toContain('Add-Extension sqlsrv devel 1.2.3');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('pcov', '5.6', 'win32');
|
||||||
|
expect(win32).toContain(
|
||||||
|
'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||||
|
);
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('xdebug2', '7.2', 'win32');
|
||||||
|
expect(win32).toContain('Add-Extension xdebug stable 2.9.8');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('mysql', '7.4', 'win32');
|
||||||
|
expect(win32).toContain('Add-Extension mysqli');
|
||||||
|
expect(win32).toContain('Add-Extension mysqlnd');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('mysql', '8.0', 'win32');
|
||||||
|
expect(win32).toContain('Add-Extension mysqli');
|
||||||
|
expect(win32).toContain('Add-Extension mysqlnd');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('mysql', '5.5', 'win32');
|
||||||
|
expect(win32).toContain('Add-Extension mysql');
|
||||||
|
expect(win32).toContain('Add-Extension mysqli');
|
||||||
|
expect(win32).toContain('Add-Extension mysqlnd');
|
||||||
|
|
||||||
win32 = await extensions.addExtension(
|
win32 = await extensions.addExtension(
|
||||||
'phalcon3, does_not_exist',
|
'phalcon3, does_not_exist',
|
||||||
@ -18,94 +48,194 @@ describe('Extension tests', () => {
|
|||||||
'win32',
|
'win32',
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
expect(win32).toContain('phalcon.ps1 phalcon3');
|
expect(win32).toContain('Add-Phalcon phalcon3');
|
||||||
expect(win32).toContain('Add-Extension does_not_exist');
|
expect(win32).toContain('Add-Extension does_not_exist');
|
||||||
|
|
||||||
win32 = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
win32 = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||||
expect(win32).toContain('Platform fedora is not supported');
|
expect(win32).toContain('Platform openbsd is not supported');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('blackfire', '7.3', 'win32');
|
||||||
|
expect(win32).toContain('Add-Blackfire blackfire');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension('blackfire-1.31.0', '7.3', 'win32');
|
||||||
|
expect(win32).toContain('Add-Blackfire blackfire-1.31.0');
|
||||||
|
|
||||||
|
win32 = await extensions.addExtension(
|
||||||
|
'mongodb-mongodb/mongo-php-driver@master',
|
||||||
|
'7.3',
|
||||||
|
'win32'
|
||||||
|
);
|
||||||
|
expect(win32).toContain(
|
||||||
|
'Add-Log "$cross" "mongodb-mongodb/mongo-php-driver@master" "mongodb-mongodb/mongo-php-driver@master is not supported on PHP 7.3"'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addExtensionOnLinux', async () => {
|
it('checking addExtensionOnLinux', async () => {
|
||||||
let linux: string = await extensions.addExtension(
|
let linux: string = await extensions.addExtension(
|
||||||
'xdebug, pcov, ast-beta, xdebug-alpha',
|
'Xdebug, pcov, sqlite, :intl, ast, ast-beta, pdo_mysql, pdo-odbc, xdebug-alpha, grpc-1.2.3',
|
||||||
'7.4',
|
'7.4',
|
||||||
'linux'
|
'linux'
|
||||||
);
|
);
|
||||||
expect(linux).toContain('update_extension xdebug 2.9.0');
|
expect(linux).toContain('add_extension xdebug');
|
||||||
expect(linux).toContain(
|
expect(linux).toContain('add_extension sqlite3');
|
||||||
'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php7.4-pcov'
|
expect(linux).toContain('remove_extension intl');
|
||||||
);
|
|
||||||
expect(linux).toContain('add_unstable_extension ast beta extension');
|
expect(linux).toContain('add_unstable_extension ast beta extension');
|
||||||
|
expect(linux).toContain('add_pdo_extension mysql');
|
||||||
|
expect(linux).toContain('add_pdo_extension odbc');
|
||||||
|
expect(linux).toContain('add_pecl_extension grpc 1.2.3 extension');
|
||||||
expect(linux).toContain(
|
expect(linux).toContain(
|
||||||
'add_unstable_extension xdebug alpha zend_extension'
|
'add_unstable_extension xdebug alpha zend_extension'
|
||||||
);
|
);
|
||||||
|
|
||||||
linux = await extensions.addExtension('gearman', '7.0', 'linux');
|
linux = await extensions.addExtension('pcov', '5.6', 'linux');
|
||||||
expect(linux).toContain('gearman.sh 7.0');
|
expect(linux).toContain(
|
||||||
linux = await extensions.addExtension('gearman', '7.1', 'linux');
|
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||||
expect(linux).toContain('gearman.sh 7.1');
|
);
|
||||||
|
|
||||||
linux = await extensions.addExtension('gearman', '7.2', 'linux');
|
|
||||||
expect(linux).toContain('gearman.sh 7.2');
|
|
||||||
|
|
||||||
linux = await extensions.addExtension('gearman', '7.3', 'linux');
|
|
||||||
expect(linux).toContain('gearman.sh 7.3');
|
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('gearman', '5.6', 'linux');
|
||||||
|
expect(linux).toContain('add_gearman');
|
||||||
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
||||||
expect(linux).toContain('gearman.sh 7.4');
|
expect(linux).toContain('add_gearman');
|
||||||
|
|
||||||
linux = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
linux = await extensions.addExtension('couchbase', '5.6', 'linux');
|
||||||
expect(linux).toContain('Platform fedora is not supported');
|
expect(linux).toContain('add_couchbase');
|
||||||
|
linux = await extensions.addExtension('couchbase', '7.4', 'linux');
|
||||||
|
expect(linux).toContain('add_couchbase');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('pdo_cubrid', '7.0', 'linux');
|
||||||
|
expect(linux).toContain('add_cubrid pdo_cubrid');
|
||||||
|
linux = await extensions.addExtension('cubrid', '7.4', 'linux');
|
||||||
|
expect(linux).toContain('add_cubrid cubrid');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('xdebug2', '7.2', 'linux');
|
||||||
|
expect(linux).toContain('add_pecl_extension xdebug 2.9.8 zend_extension');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||||
|
expect(linux).toContain('Platform openbsd is not supported');
|
||||||
|
|
||||||
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
||||||
expect(linux).toContain('phalcon.sh phalcon3 7.3');
|
expect(linux).toContain('add_phalcon phalcon3');
|
||||||
expect(linux).toContain('phalcon.sh phalcon4 7.3');
|
expect(linux).toContain('add_phalcon phalcon4');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('ioncube', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_ioncube');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('geos', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_geos');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('pecl_http', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_http');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('http-1.2.3', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_http http-1.2.3');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('oci8, pdo_oci', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_oci oci8');
|
||||||
|
expect(linux).toContain('add_oci pdo_oci');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('blackfire', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_blackfire blackfire');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_blackfire blackfire-1.31.0');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('intl-65.1', '5.6', 'linux');
|
||||||
|
expect(linux).toContain('add_intl intl-65.1');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('intl-67.1', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('add_intl intl-67.1');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('intl-68.2', '8.0', 'linux');
|
||||||
|
expect(linux).toContain('add_intl intl-68.2');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension(
|
||||||
|
'mongodb-mongodb/mongo-php-driver@master',
|
||||||
|
'7.3',
|
||||||
|
'linux'
|
||||||
|
);
|
||||||
|
expect(linux).toContain(
|
||||||
|
'add_extension_from_github mongodb mongodb mongo-php-driver master'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addExtensionOnDarwin', async () => {
|
it('checking addExtensionOnDarwin', async () => {
|
||||||
let darwin: string = await extensions.addExtension(
|
let darwin: string = await extensions.addExtension(
|
||||||
'xdebug, pcov, ast-beta',
|
'amqp, Xdebug, pcov, grpc, igbinary, imagick, imap, msgpack, protobuf, redis, swoole, sqlite, oci8, pdo_oci, :intl, ast-beta, grpc-1.2.3',
|
||||||
'7.2',
|
'7.2',
|
||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
expect(darwin).toContain('sudo pecl install -f xdebug');
|
expect(darwin).toContain('add_brew_extension amqp extension');
|
||||||
expect(darwin).toContain('sudo pecl install -f pcov');
|
expect(darwin).toContain('add_brew_extension xdebug zend_extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension pcov extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension grpc extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension igbinary extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension imagick extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension imap extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension msgpack extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension protobuf extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension redis extension');
|
||||||
|
expect(darwin).toContain('add_brew_extension swoole extension');
|
||||||
|
expect(darwin).toContain('add_extension sqlite3');
|
||||||
|
expect(darwin).toContain('remove_extension intl');
|
||||||
expect(darwin).toContain('add_unstable_extension ast beta extension');
|
expect(darwin).toContain('add_unstable_extension ast beta extension');
|
||||||
|
expect(darwin).toContain('add_pecl_extension grpc 1.2.3 extension');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('phalcon3', '7.0', 'darwin');
|
darwin = await extensions.addExtension('phalcon3', '7.0', 'darwin');
|
||||||
expect(darwin).toContain('phalcon_darwin.sh phalcon3 7.0');
|
expect(darwin).toContain('add_phalcon phalcon3');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('phalcon4', '7.3', 'darwin');
|
darwin = await extensions.addExtension('phalcon4', '7.3', 'darwin');
|
||||||
expect(darwin).toContain('phalcon_darwin.sh phalcon4 7.3');
|
expect(darwin).toContain('add_phalcon phalcon4');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('couchbase', '5.6', 'darwin');
|
||||||
|
expect(darwin).toContain('add_couchbase');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('couchbase', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_couchbase');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('ioncube', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_ioncube');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('geos', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_geos');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('pecl_http', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_http');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('http-1.2.3', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_http http-1.2.3');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('oci8, pdo_oci', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('add_oci oci8');
|
||||||
|
expect(darwin).toContain('add_oci pdo_oci');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('pcov', '5.6', 'darwin');
|
darwin = await extensions.addExtension('pcov', '5.6', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f pcov');
|
expect(darwin).toContain(
|
||||||
|
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||||
|
);
|
||||||
|
|
||||||
darwin = await extensions.addExtension('pcov', '7.2', 'darwin');
|
darwin = await extensions.addExtension('pcov', '7.2', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f pcov');
|
expect(darwin).toContain('add_brew_extension pcov');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
|
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f xdebug-2.5.5');
|
expect(darwin).toContain('add_brew_extension xdebug');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.0', 'darwin');
|
darwin = await extensions.addExtension('xdebug', '7.0', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f xdebug-2.9.0');
|
expect(darwin).toContain('add_brew_extension xdebug');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
|
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f xdebug');
|
expect(darwin).toContain('add_brew_extension xdebug');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('redis', '5.6', 'darwin');
|
darwin = await extensions.addExtension('xdebug2', '7.2', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f redis-2.2.8');
|
expect(darwin).toContain('add_brew_extension xdebug2');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('redis', '7.2', 'darwin');
|
darwin = await extensions.addExtension('imagick', '5.5', 'darwin');
|
||||||
expect(darwin).toContain('sudo pecl install -f redis');
|
expect(darwin).toContain('add_extension imagick');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('imagick', '5.6', 'darwin');
|
darwin = await extensions.addExtension('blackfire', '7.3', 'darwin');
|
||||||
expect(darwin).toContain('brew install pkg-config imagemagick');
|
expect(darwin).toContain('add_blackfire blackfire');
|
||||||
expect(darwin).toContain('sudo pecl install -f imagick');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension('imagick', '7.4', 'darwin');
|
darwin = await extensions.addExtension('blackfire-1.31.0', '7.3', 'darwin');
|
||||||
expect(darwin).toContain('brew install pkg-config imagemagick');
|
expect(darwin).toContain('add_blackfire blackfire-1.31.0');
|
||||||
expect(darwin).toContain('sudo pecl install -f imagick');
|
|
||||||
|
|
||||||
darwin = await extensions.addExtension(
|
darwin = await extensions.addExtension(
|
||||||
'does_not_exist',
|
'does_not_exist',
|
||||||
@ -115,7 +245,16 @@ describe('Extension tests', () => {
|
|||||||
);
|
);
|
||||||
expect(darwin).toContain('add_extension does_not_exist');
|
expect(darwin).toContain('add_extension does_not_exist');
|
||||||
|
|
||||||
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
darwin = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||||
expect(darwin).toContain('Platform fedora is not supported');
|
expect(darwin).toContain('Platform openbsd is not supported');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension(
|
||||||
|
'mongodb-mongodb/mongo-php-driver@master',
|
||||||
|
'7.3',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain(
|
||||||
|
'add_extension_from_github mongodb mongodb mongo-php-driver master'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import * as install from '../src/install';
|
import * as install from '../src/install';
|
||||||
|
import * as utils from '../src/utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mock install.ts
|
* Mock install.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/install', () => ({
|
jest.mock('../src/install', () => ({
|
||||||
build: jest.fn().mockImplementation(
|
getScript: jest.fn().mockImplementation(
|
||||||
async (
|
async (
|
||||||
filename: string,
|
filename: string,
|
||||||
version: string,
|
version: string,
|
||||||
@ -26,12 +27,12 @@ jest.mock('../src/install', () => ({
|
|||||||
if (extension_csv) {
|
if (extension_csv) {
|
||||||
script += 'install extensions';
|
script += 'install extensions';
|
||||||
}
|
}
|
||||||
if (ini_values_csv) {
|
|
||||||
script += 'edit php.ini';
|
|
||||||
}
|
|
||||||
if (coverage_driver) {
|
if (coverage_driver) {
|
||||||
script += 'set coverage driver';
|
script += 'set coverage driver';
|
||||||
}
|
}
|
||||||
|
if (ini_values_csv) {
|
||||||
|
script += 'edit php.ini';
|
||||||
|
}
|
||||||
|
|
||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
@ -39,24 +40,18 @@ jest.mock('../src/install', () => ({
|
|||||||
run: jest.fn().mockImplementation(
|
run: jest.fn().mockImplementation(
|
||||||
async (): Promise<string> => {
|
async (): Promise<string> => {
|
||||||
const os_version: string = process.env['RUNNER_OS'] || '';
|
const os_version: string = process.env['RUNNER_OS'] || '';
|
||||||
let version: string = process.env['php-version'] || '';
|
const version: string = await utils.parseVersion(
|
||||||
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
|
await utils.getInput('php-version', true)
|
||||||
let script = '';
|
);
|
||||||
switch (os_version) {
|
const tool = await utils.scriptTool(os_version);
|
||||||
case 'darwin':
|
const filename = os_version + (await utils.scriptExtension(os_version));
|
||||||
case 'linux':
|
return [
|
||||||
script = await install.build(os_version + '.sh', version, os_version);
|
await install.getScript(filename, version, os_version),
|
||||||
script += 'sh script.sh ' + version + ' ' + __dirname;
|
tool,
|
||||||
break;
|
filename,
|
||||||
case 'win32':
|
version,
|
||||||
script = await install.build(os_version + '.sh', version, os_version);
|
__dirname
|
||||||
script += 'pwsh script.ps1 ' + version + ' ' + __dirname;
|
].join(' ');
|
||||||
break;
|
|
||||||
default:
|
|
||||||
script += os_version + ' is not supported';
|
|
||||||
}
|
|
||||||
|
|
||||||
return script;
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}));
|
}));
|
||||||
@ -69,6 +64,7 @@ jest.mock('../src/install', () => ({
|
|||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param ini_values_csv
|
* @param ini_values_csv
|
||||||
* @param coverage_driver
|
* @param coverage_driver
|
||||||
|
* @param tools
|
||||||
*/
|
*/
|
||||||
function setEnv(
|
function setEnv(
|
||||||
version: string | number,
|
version: string | number,
|
||||||
@ -76,8 +72,7 @@ function setEnv(
|
|||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
ini_values_csv: string,
|
ini_values_csv: string,
|
||||||
coverage_driver: string,
|
coverage_driver: string,
|
||||||
tools: string,
|
tools: string
|
||||||
pecl: string
|
|
||||||
): void {
|
): void {
|
||||||
process.env['php-version'] = version.toString();
|
process.env['php-version'] = version.toString();
|
||||||
process.env['RUNNER_OS'] = os;
|
process.env['RUNNER_OS'] = os;
|
||||||
@ -85,95 +80,96 @@ function setEnv(
|
|||||||
process.env['ini-values'] = ini_values_csv;
|
process.env['ini-values'] = ini_values_csv;
|
||||||
process.env['coverage'] = coverage_driver;
|
process.env['coverage'] = coverage_driver;
|
||||||
process.env['tools'] = tools;
|
process.env['tools'] = tools;
|
||||||
process.env['pecl'] = pecl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('pwsh script.ps1 7.0 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv('7.3', 'win32', '', '', '', '', '');
|
let script: string = '' + (await install.run());
|
||||||
// @ts-ignore
|
|
||||||
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 win32.ps1 7.0 ' + __dirname);
|
||||||
|
|
||||||
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '', '');
|
setEnv('7.3', 'win32', '', '', '', '');
|
||||||
// @ts-ignore
|
|
||||||
script = await install.run();
|
script = '' + (await install.run());
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('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('pwsh script.ps1 7.3 ' + __dirname);
|
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
||||||
});
|
});
|
||||||
|
|
||||||
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 linux.sh 7.3 ');
|
||||||
|
|
||||||
|
setEnv('latest', 'linux', '', '', '', '');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash linux.sh 8.0 ');
|
||||||
|
|
||||||
|
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('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 linux.sh 7.3');
|
||||||
expect(script).toContain('add_tool');
|
|
||||||
|
|
||||||
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', '');
|
|
||||||
// @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');
|
|
||||||
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();
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('sh script.sh 7.3 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '', '');
|
let script: string = '' + (await install.run());
|
||||||
// @ts-ignore
|
expect(script).toContain('initial script');
|
||||||
script = await install.run();
|
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
expect(script).toContain('initial script');
|
expect(script).toContain('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 darwin.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();
|
|
||||||
expect(script).toContain('initial script');
|
|
||||||
expect(script).toContain('sh script.sh 7.4 ' + __dirname);
|
|
||||||
|
|
||||||
setEnv(8.0, 'darwin', '', '', '', '', '');
|
let script: string = '' + '' + (await install.run());
|
||||||
// @ts-ignore
|
|
||||||
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 darwin.sh 7.4 ' + __dirname);
|
||||||
|
|
||||||
setEnv(8, '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 darwin.sh 8.0 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv(8, 'darwin', '', '', '', '');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv(8.1, 'darwin', '', '', '', '');
|
||||||
|
|
||||||
|
script = '' + (await install.run());
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash darwin.sh 8.1 ' + __dirname);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
import * as io from '@actions/io';
|
|
||||||
import * as path from 'path';
|
|
||||||
import * as fs from 'fs';
|
|
||||||
import * as matchers from '../src/matchers';
|
|
||||||
|
|
||||||
async function cleanup(path: string): Promise<void> {
|
|
||||||
fs.unlink(path, error => {
|
|
||||||
if (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
jest.mock('@actions/io');
|
|
||||||
|
|
||||||
describe('Matchers', () => {
|
|
||||||
it('Add matchers', async () => {
|
|
||||||
process.env['RUNNER_TOOL_CACHE'] = __dirname;
|
|
||||||
await matchers.addMatchers();
|
|
||||||
const spy = jest.spyOn(io, 'cp');
|
|
||||||
expect(spy).toHaveBeenCalledTimes(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Test Regex', async () => {
|
|
||||||
const regex1 = /^\d+\)\s.*$/;
|
|
||||||
const regex2 = /^(.*Failed\sasserting\sthat.*)$/;
|
|
||||||
const regex3 = /^\s*$/;
|
|
||||||
const regex4 = /^(.*):(\d+)$/;
|
|
||||||
expect(regex1.test('1) Tests\\Test::it_tests')).toBe(true);
|
|
||||||
expect(regex2.test('Failed asserting that false is true')).toBe(true);
|
|
||||||
expect(regex3.test('\n')).toBe(true);
|
|
||||||
expect(regex4.test('/path/to/file.php:42')).toBe(true);
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,33 +1,6 @@
|
|||||||
import * as tools from '../src/tools';
|
import * as tools from '../src/tools';
|
||||||
|
|
||||||
describe('Tools tests', () => {
|
describe('Tools tests', () => {
|
||||||
it('checking getCommand', async () => {
|
|
||||||
expect(await tools.getArchiveCommand('linux')).toBe('add_tool ');
|
|
||||||
expect(await tools.getArchiveCommand('darwin')).toBe('add_tool ');
|
|
||||||
expect(await tools.getArchiveCommand('win32')).toBe('Add-Tool ');
|
|
||||||
expect(await tools.getArchiveCommand('fedora')).toContain(
|
|
||||||
'Platform fedora is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking getCommand', async () => {
|
|
||||||
expect(await tools.getPackageCommand('linux')).toBe('add_composer_tool ');
|
|
||||||
expect(await tools.getPackageCommand('darwin')).toBe('add_composer_tool ');
|
|
||||||
expect(await tools.getPackageCommand('win32')).toBe('Add-Composer-Tool ');
|
|
||||||
expect(await tools.getPackageCommand('fedora')).toContain(
|
|
||||||
'Platform fedora is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking getPECLCommand', async () => {
|
|
||||||
expect(await tools.getPECLCommand('linux')).toBe('add_pecl ');
|
|
||||||
expect(await tools.getPECLCommand('darwin')).toBe('add_pecl ');
|
|
||||||
expect(await tools.getPECLCommand('win32')).toBe('Add-PECL ');
|
|
||||||
expect(await tools.getPECLCommand('fedora')).toContain(
|
|
||||||
'Platform fedora is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking parseToolVersion', async () => {
|
it('checking parseToolVersion', async () => {
|
||||||
expect(await tools.getToolVersion('latest')).toBe('latest');
|
expect(await tools.getToolVersion('latest')).toBe('latest');
|
||||||
expect(await tools.getToolVersion('1.2.3')).toBe('1.2.3');
|
expect(await tools.getToolVersion('1.2.3')).toBe('1.2.3');
|
||||||
@ -106,78 +79,47 @@ describe('Tools tests', () => {
|
|||||||
).toBe('releases/download/v1.2.3/tool.phar');
|
).toBe('releases/download/v1.2.3/tool.phar');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getCodeceptionUriBuilder', async () => {
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '5.6', 'php56')).toBe(
|
|
||||||
'releases/3.2.1/php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '7.0', 'php54')).toBe(
|
|
||||||
'releases/3.2.1/php54/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '7.1', 'php56')).toBe(
|
|
||||||
'releases/3.2.1/php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '7.2', 'php56')).toBe(
|
|
||||||
'releases/3.2.1/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '7.3', 'php56')).toBe(
|
|
||||||
'releases/3.2.1/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUriBuilder('3.2.1', '7.4', 'php56')).toBe(
|
|
||||||
'releases/3.2.1/codecept.phar'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking getCodeceptionUri', async () => {
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '5.6')).toBe(
|
|
||||||
'php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '7.0')).toBe(
|
|
||||||
'php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '7.1')).toBe(
|
|
||||||
'php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '7.2')).toBe(
|
|
||||||
'codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '7.3')).toBe(
|
|
||||||
'codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('latest', '7.4')).toBe(
|
|
||||||
'codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('3.2.1', '5.6')).toBe(
|
|
||||||
'releases/3.2.1/php54/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('4.3.2', '5.6')).toBe(
|
|
||||||
'releases/4.3.2/php56/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('3.2.1', '7.4')).toBe(
|
|
||||||
'releases/3.2.1/codecept.phar'
|
|
||||||
);
|
|
||||||
expect(await tools.getCodeceptionUri('4.3.2', '7.4')).toBe(
|
|
||||||
'releases/4.3.2/codecept.phar'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking addPhive', async () => {
|
it('checking addPhive', async () => {
|
||||||
let script: string = await tools.addPhive('1.2.3', 'linux');
|
let script: string = await tools.addPhive('1.2.3', '7.4', 'linux');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'
|
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'
|
||||||
);
|
);
|
||||||
|
|
||||||
script = await tools.addPhive('latest', 'win32');
|
script = await tools.addPhive('latest', '5.5', 'win32');
|
||||||
|
expect(script).toContain('Phive is not supported on PHP 5.5');
|
||||||
|
|
||||||
|
script = await tools.addPhive('latest', '5.6', 'win32');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://phar.io/releases/phive.phar phive'
|
'Add-Tool https://github.com/phar-io/phive/releases/download/0.12.1/phive-0.12.1.phar phive'
|
||||||
|
);
|
||||||
|
|
||||||
|
script = await tools.addPhive('latest', '7.1', 'win32');
|
||||||
|
expect(script).toContain(
|
||||||
|
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.5/phive-0.13.5.phar phive'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getPhpunitUri', async () => {
|
it('checking getPharUri', async () => {
|
||||||
expect(await tools.getPhpunitUrl('tool', 'latest')).toBe(
|
expect(await tools.getPharUrl('domain', 'tool', '', 'latest')).toBe(
|
||||||
'https://phar.phpunit.de/tool.phar'
|
'domain/tool.phar'
|
||||||
);
|
);
|
||||||
expect(await tools.getPhpunitUrl('tool', '1.2.3')).toBe(
|
expect(await tools.getPharUrl('domain', 'tool', 'v', '1.2.3')).toBe(
|
||||||
'https://phar.phpunit.de/tool-1.2.3.phar'
|
'domain/tool-v1.2.3.phar'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking getBlackfirePlayerUrl', async () => {
|
||||||
|
expect(await tools.getBlackfirePlayerUrl('latest', '7.4')).toBe(
|
||||||
|
'https://get.blackfire.io/blackfire-player.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getBlackfirePlayerUrl('latest', '5.5')).toBe(
|
||||||
|
'https://get.blackfire.io/blackfire-player-v1.9.3.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getBlackfirePlayerUrl('latest', '7.0')).toBe(
|
||||||
|
'https://get.blackfire.io/blackfire-player-v1.9.3.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getBlackfirePlayerUrl('1.2.3', '7.0')).toBe(
|
||||||
|
'https://get.blackfire.io/blackfire-player-v1.2.3.phar'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -190,7 +132,7 @@ describe('Tools tests', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getDeployerUri', async () => {
|
it('checking addComposer', async () => {
|
||||||
expect(await tools.addComposer(['a', 'b'])).toStrictEqual([
|
expect(await tools.addComposer(['a', 'b'])).toStrictEqual([
|
||||||
'composer',
|
'composer',
|
||||||
'a',
|
'a',
|
||||||
@ -201,9 +143,71 @@ describe('Tools tests', () => {
|
|||||||
'a',
|
'a',
|
||||||
'b'
|
'b'
|
||||||
]);
|
]);
|
||||||
|
expect(await tools.addComposer(['a', 'b', 'composer:1.2'])).toStrictEqual([
|
||||||
|
'composer',
|
||||||
|
'a',
|
||||||
|
'b'
|
||||||
|
]);
|
||||||
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:1.2.3', 'a', 'b']);
|
||||||
|
expect(
|
||||||
|
await tools.addComposer(['a', 'b', 'composer:v1.2.3'])
|
||||||
|
).toStrictEqual(['composer:1.2.3', '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 getComposerUrl', async () => {
|
||||||
|
expect(await tools.getComposerUrl('latest')).toContain(
|
||||||
|
'https://getcomposer.org/composer-stable.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('stable')).toContain(
|
||||||
|
'https://getcomposer.org/composer-stable.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('snapshot')).toContain(
|
||||||
|
'https://getcomposer.org/composer.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('preview')).toContain(
|
||||||
|
'https://getcomposer.org/composer-preview.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('1')).toContain(
|
||||||
|
'https://getcomposer.org/composer-1.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('2')).toContain(
|
||||||
|
'https://getcomposer.org/composer-2.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('1.7.2')).toContain(
|
||||||
|
'https://github.com/composer/composer/releases/download/1.7.2/composer.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('1.7.2')).toContain(
|
||||||
|
'https://getcomposer.org/composer-1.7.2.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('2.0.0-RC2')).toContain(
|
||||||
|
'https://github.com/composer/composer/releases/download/2.0.0-RC2/composer.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('2.0.0-RC2')).toContain(
|
||||||
|
'https://getcomposer.org/composer-2.0.0-RC2.phar'
|
||||||
|
);
|
||||||
|
expect(await tools.getComposerUrl('wrong')).toContain(
|
||||||
|
'https://getcomposer.org/composer-stable.phar'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getSymfonyUri', async () => {
|
it('checking getSymfonyUri', async () => {
|
||||||
@ -225,83 +229,93 @@ describe('Tools tests', () => {
|
|||||||
expect(await tools.getSymfonyUri('1.2.3', 'win32')).toContain(
|
expect(await tools.getSymfonyUri('1.2.3', 'win32')).toContain(
|
||||||
'releases/download/v1.2.3/symfony_windows_amd64'
|
'releases/download/v1.2.3/symfony_windows_amd64'
|
||||||
);
|
);
|
||||||
expect(await tools.getSymfonyUri('1.2.3', 'fedora')).toContain(
|
expect(await tools.getSymfonyUri('1.2.3', 'openbsd')).toContain(
|
||||||
'Platform fedora is not supported'
|
'Platform openbsd is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getCleanedToolsList', async () => {
|
it('checking getCleanedToolsList', async () => {
|
||||||
const tools_list: string[] = await tools.getCleanedToolsList(
|
const tools_list: string[] = await tools.getCleanedToolsList(
|
||||||
'tool, composer:1.2.3, robmorgan/phinx, hirak/prestissimo, narrowspark/automatic-composer-prefetcher'
|
'tool, composer:1.2, behat/behat, icanhazstring/composer-unused, laravel/vapor-cli, robmorgan/phinx, phpspec/phpspec, symfony/flex'
|
||||||
);
|
);
|
||||||
expect(tools_list).toStrictEqual([
|
expect(tools_list).toStrictEqual([
|
||||||
'composer',
|
'composer',
|
||||||
'tool',
|
'tool',
|
||||||
|
'behat',
|
||||||
|
'composer-unused',
|
||||||
|
'vapor-cli',
|
||||||
'phinx',
|
'phinx',
|
||||||
'prestissimo',
|
'phpspec',
|
||||||
'composer-prefetcher'
|
'flex'
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('checking getWpCliUri', async () => {
|
||||||
|
expect(await tools.getWpCliUrl('latest')).toBe(
|
||||||
|
'wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true'
|
||||||
|
);
|
||||||
|
expect(await tools.getWpCliUrl('2.4.0')).toBe(
|
||||||
|
'wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('checking addArchive', async () => {
|
it('checking addArchive', async () => {
|
||||||
let script: string = await tools.addArchive(
|
let script: string = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
'1.2.3',
|
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'linux'
|
'linux',
|
||||||
|
'-v'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
'1.2.3',
|
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'darwin'
|
'darwin',
|
||||||
|
'-v'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
'1.2.3',
|
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'win32'
|
'win32',
|
||||||
|
'-v'
|
||||||
);
|
);
|
||||||
expect(script).toContain('Add-Tool https://tool.com/tool.phar tool');
|
expect(script).toContain('Add-Tool https://tool.com/tool.phar tool');
|
||||||
|
|
||||||
script = await tools.addArchive(
|
script = await tools.addArchive(
|
||||||
'tool',
|
'tool',
|
||||||
'1.2.3',
|
|
||||||
'https://tool.com/tool.phar',
|
'https://tool.com/tool.phar',
|
||||||
'fedora'
|
'openbsd',
|
||||||
|
'-v'
|
||||||
);
|
);
|
||||||
expect(script).toContain('Platform fedora is not supported');
|
expect(script).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addDevTools', async () => {
|
it('checking addDevTools', async () => {
|
||||||
let script: string = await tools.addDevTools('phpize', 'linux');
|
let script: string = await tools.addDevTools('phpize', 'linux');
|
||||||
expect(script).toContain('add_devtools');
|
expect(script).toContain('add_devtools phpize');
|
||||||
expect(script).toContain('add_log "$tick" "phpize" "Added"');
|
|
||||||
|
|
||||||
script = await tools.addDevTools('php-config', 'linux');
|
script = await tools.addDevTools('php-config', 'linux');
|
||||||
expect(script).toContain('add_devtools');
|
expect(script).toContain('add_devtools php-config');
|
||||||
expect(script).toContain('add_log "$tick" "php-config" "Added"');
|
|
||||||
|
|
||||||
script = await tools.addDevTools('phpize', 'darwin');
|
script = await tools.addDevTools('phpize', 'darwin');
|
||||||
expect(script).toContain('add_log "$tick" "phpize" "Added"');
|
expect(script).toContain('add_devtools phpize');
|
||||||
|
|
||||||
script = await tools.addDevTools('php-config', 'darwin');
|
script = await tools.addDevTools('php-config', 'darwin');
|
||||||
expect(script).toContain('add_log "$tick" "php-config" "Added"');
|
expect(script).toContain('add_devtools php-config');
|
||||||
|
|
||||||
script = await tools.addDevTools('phpize', 'win32');
|
script = await tools.addDevTools('phpize', 'win32');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Log "$cross" "phpize" "phpize is not a windows tool"'
|
'Add-Log "$tick" "phpize" "phpize is not a windows tool"'
|
||||||
);
|
);
|
||||||
|
|
||||||
script = await tools.addDevTools('php-config', 'win32');
|
script = await tools.addDevTools('php-config', 'win32');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Log "$cross" "php-config" "php-config is not a windows tool"'
|
'Add-Log "$tick" "php-config" "php-config is not a windows tool"'
|
||||||
);
|
);
|
||||||
|
|
||||||
script = await tools.addDevTools('tool', 'fedora');
|
script = await tools.addDevTools('tool', 'openbsd');
|
||||||
expect(script).toContain('Platform fedora is not supported');
|
expect(script).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addPackage', async () => {
|
it('checking addPackage', async () => {
|
||||||
@ -311,143 +325,273 @@ describe('Tools tests', () => {
|
|||||||
'user/',
|
'user/',
|
||||||
'linux'
|
'linux'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_composer_tool tool tool:1.2.3 user/');
|
expect(script).toContain('add_composertool tool tool:1.2.3 user/');
|
||||||
|
|
||||||
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'darwin');
|
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'darwin');
|
||||||
expect(script).toContain('add_composer_tool tool tool:1.2.3 user/');
|
expect(script).toContain('add_composertool tool tool:1.2.3 user/');
|
||||||
|
|
||||||
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'win32');
|
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'win32');
|
||||||
expect(script).toContain('Add-Composer-Tool tool tool:1.2.3 user/');
|
expect(script).toContain('Add-Composertool tool tool:1.2.3 user/');
|
||||||
|
|
||||||
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'fedora');
|
script = await tools.addPackage('tool', 'tool:1.2.3', 'user/', 'openbsd');
|
||||||
expect(script).toContain('Platform fedora is not supported');
|
expect(script).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking addTools on linux', async () => {
|
it('checking addTools on linux', async () => {
|
||||||
const script: string = await tools.addTools(
|
const script: string = await tools.addTools(
|
||||||
'cs2pr, php-cs-fixer, phpstan, phpunit, pecl, phinx, phinx:1.2.3, phive, php-config, phpize, symfony',
|
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, php-config, phpize, protoc, symfony, wp-cli',
|
||||||
'7.4',
|
'7.4',
|
||||||
'linux'
|
'linux'
|
||||||
);
|
);
|
||||||
|
expect(script).toContain('add_blackfire');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/composer/composer/releases/latest/download/composer.phar composer'
|
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr'
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer'
|
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan'
|
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://phar.io/releases/phive.phar phive'
|
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://phar.phpunit.de/phpunit.phar phpunit'
|
'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony'
|
'add_tool https://phar.io/releases/phive.phar phive status'
|
||||||
);
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony version'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain('add_protoc latest');
|
||||||
|
expect(script).toContain('add_grpc_php_plugin latest');
|
||||||
expect(script).toContain('add_pecl');
|
expect(script).toContain('add_pecl');
|
||||||
expect(script).toContain('add_composer_tool phinx phinx robmorgan/');
|
expect(script).toContain('add_composertool flex flex symfony/');
|
||||||
expect(script).toContain('add_composer_tool phinx phinx:1.2.3 robmorgan/');
|
expect(script).toContain('add_composertool phinx phinx robmorgan/');
|
||||||
expect(script).toContain('add_devtools');
|
expect(script).toContain('add_composertool phplint phplint overtrue/');
|
||||||
expect(script).toContain('add_log "$tick" "php-config" "Added"');
|
expect(script).toContain('add_composertool phinx phinx:1.2.3 robmorgan/');
|
||||||
expect(script).toContain('add_log "$tick" "phpize" "Added"');
|
expect(script).toContain('add_devtools php-config');
|
||||||
|
expect(script).toContain('add_devtools phpize');
|
||||||
});
|
});
|
||||||
it('checking addTools on darwin', async () => {
|
it('checking addTools on darwin', async () => {
|
||||||
|
const listOfTools = [
|
||||||
|
'behat',
|
||||||
|
'blackfire',
|
||||||
|
'blackfire-player',
|
||||||
|
'composer-normalize',
|
||||||
|
'composer-require-checker',
|
||||||
|
'composer-unused',
|
||||||
|
'cs2pr:1.2.3',
|
||||||
|
'flex',
|
||||||
|
'grpc_php_plugin:1.2.3',
|
||||||
|
'infection',
|
||||||
|
'phan',
|
||||||
|
'phan:2.7.2',
|
||||||
|
'phing:1.2.3',
|
||||||
|
'phinx',
|
||||||
|
'phive:1.2.3',
|
||||||
|
'php-config',
|
||||||
|
'phpcbf',
|
||||||
|
'phpcpd',
|
||||||
|
'phpcs',
|
||||||
|
'phpize',
|
||||||
|
'phpmd',
|
||||||
|
'phpspec',
|
||||||
|
'protoc:v1.2.3',
|
||||||
|
'psalm',
|
||||||
|
'symfony-cli',
|
||||||
|
'symfony:1.2.3',
|
||||||
|
'vapor-cli',
|
||||||
|
'wp-cli'
|
||||||
|
];
|
||||||
|
|
||||||
const script: string = await tools.addTools(
|
const script: string = await tools.addTools(
|
||||||
'phpcs, phpcbf, phpcpd, phpmd, psalm, phinx, phive:1.2.3, cs2pr:1.2.3, composer-prefetcher:1.2.3, phpize, php-config, symfony, symfony:1.2.3',
|
listOfTools.join(', '),
|
||||||
'7.4',
|
'7.4',
|
||||||
'darwin'
|
'darwin'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
expect(script).toContain('add_blackfire');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/composer/composer/releases/latest/download/composer.phar composer'
|
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr'
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs'
|
'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf'
|
'add_tool https://github.com/maglnet/ComposerRequireChecker/releases/latest/download/composer-require-checker.phar composer-require-checker "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd'
|
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd'
|
'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm'
|
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan "-v"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://www.phing.info/get/phing-1.2.3.phar phing "-v"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain(
|
||||||
|
'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"'
|
||||||
|
);
|
||||||
|
expect(script).toContain('add_grpc_php_plugin 1.2.3');
|
||||||
|
expect(script).toContain('add_protoc 1.2.3');
|
||||||
|
expect(script).toContain('add_composertool behat behat behat/');
|
||||||
|
expect(script).toContain('add_composertool phpspec phpspec phpspec/');
|
||||||
|
expect(script).toContain('add_composertool vapor-cli vapor-cli laravel/');
|
||||||
|
expect(script).toContain('add_composertool flex flex symfony/');
|
||||||
|
expect(script).toContain('add_composertool phinx phinx robmorgan/');
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/phan/phan/releases/download/2.7.2/phan.phar phan "-v"'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_composer_tool phinx phinx robmorgan/');
|
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'
|
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_composer_tool composer-prefetcher composer-prefetcher:1.2.3 narrowspark/automatic-'
|
'add_composertool composer-unused composer-unused icanhazstring/'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony'
|
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony version'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony'
|
'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony version'
|
||||||
);
|
);
|
||||||
expect(script).toContain('add_log "$tick" "phpize" "Added"');
|
expect(script).toContain(
|
||||||
expect(script).toContain('add_log "$tick" "php-config" "Added"');
|
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain('add_devtools phpize');
|
||||||
|
expect(script).toContain('add_devtools php-config');
|
||||||
});
|
});
|
||||||
it('checking addTools on windows', async () => {
|
it('checking addTools on windows', async () => {
|
||||||
|
const listOfTools = [
|
||||||
|
'blackfire',
|
||||||
|
'blackfire-player:1.8.1',
|
||||||
|
'cs2pr',
|
||||||
|
'deployer',
|
||||||
|
'does_not_exist',
|
||||||
|
'flex',
|
||||||
|
'phinx',
|
||||||
|
'phive:0.13.2',
|
||||||
|
'php-config',
|
||||||
|
'phpize',
|
||||||
|
'phpmd',
|
||||||
|
'symfony',
|
||||||
|
'wp'
|
||||||
|
];
|
||||||
|
|
||||||
const script: string = await tools.addTools(
|
const script: string = await tools.addTools(
|
||||||
'codeception, cs2pr, deployer, prestissimo, phpmd, phinx, phive:0.13.2, php-config, phpize, symfony, does_not_exit',
|
listOfTools.join(', '),
|
||||||
'7.4',
|
'7.4',
|
||||||
'win32'
|
'win32'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
expect(script).toContain('Add-Blackfire');
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://github.com/composer/composer/releases/latest/download/composer.phar composer'
|
'Add-Tool https://get.blackfire.io/blackfire-player-v1.8.1.phar blackfire-player "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr'
|
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://deployer.org/deployer.phar deployer'
|
'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"'
|
||||||
|
);
|
||||||
|
expect(script).toContain('Add-Composertool flex flex symfony/');
|
||||||
|
expect(script).toContain(
|
||||||
|
'Add-Tool https://deployer.org/deployer.phar deployer "-V"'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Composer-Tool prestissimo prestissimo hirak/'
|
'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"'
|
||||||
|
);
|
||||||
|
expect(script).toContain('Add-Composertool phinx phinx robmorgan/');
|
||||||
|
expect(script).toContain(
|
||||||
|
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive status'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd'
|
'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony version'
|
||||||
);
|
|
||||||
expect(script).toContain('Add-Composer-Tool phinx phinx robmorgan/');
|
|
||||||
expect(script).toContain(
|
|
||||||
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive'
|
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony'
|
'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||||
);
|
);
|
||||||
expect(script).toContain('phpize is not a windows tool');
|
expect(script).toContain('phpize is not a windows tool');
|
||||||
expect(script).toContain('php-config is not a windows tool');
|
expect(script).toContain('php-config is not a windows tool');
|
||||||
expect(script).toContain('Tool does_not_exit is not supported');
|
expect(script).toContain('Tool does_not_exist is not supported');
|
||||||
expect(script).toContain('Tool does_not_exit is not supported');
|
|
||||||
});
|
});
|
||||||
it('checking addTools with composer tool using user/tool as input', async () => {
|
it('checking addTools with composer tool using user/tool as input', async () => {
|
||||||
|
const listOfTools = [
|
||||||
|
'composer:v1',
|
||||||
|
'codeception/codeception',
|
||||||
|
'hirak/prestissimo',
|
||||||
|
'narrowspark/automatic-composer-prefetcher',
|
||||||
|
'robmorgan/phinx'
|
||||||
|
];
|
||||||
|
|
||||||
const script: string = await tools.addTools(
|
const script: string = await tools.addTools(
|
||||||
'hirak/prestissimo, narrowspark/automatic-composer-prefetcher, robmorgan/phinx',
|
listOfTools.join(', '),
|
||||||
'7.4',
|
'7.4',
|
||||||
'win32'
|
'win32'
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Tool https://github.com/composer/composer/releases/latest/download/composer.phar composer'
|
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer'
|
||||||
|
);
|
||||||
|
expect(script).toContain('Add-Composertool prestissimo prestissimo hirak/');
|
||||||
|
expect(script).toContain('Add-Composertool phinx phinx robmorgan/');
|
||||||
|
expect(script).toContain(
|
||||||
|
'Add-Composertool composer-prefetcher composer-prefetcher narrowspark/automatic-'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('checking composer setup', async () => {
|
||||||
|
const listOfTools = ['composer', 'composer:v1'];
|
||||||
|
|
||||||
|
let script: string = await tools.addTools(
|
||||||
|
listOfTools.join(', '),
|
||||||
|
'7.4',
|
||||||
|
'linux'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer'
|
||||||
|
);
|
||||||
|
|
||||||
|
script = await tools.addTools('composer:preview', '7.4', 'linux');
|
||||||
|
expect(script).toContain(
|
||||||
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'
|
||||||
|
);
|
||||||
|
script = await tools.addTools(
|
||||||
|
'composer:v1, composer:preview, composer:snapshot',
|
||||||
|
'7.4',
|
||||||
|
'linux'
|
||||||
);
|
);
|
||||||
expect(script).toContain(
|
expect(script).toContain(
|
||||||
'Add-Composer-Tool prestissimo prestissimo hirak/'
|
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'
|
||||||
);
|
|
||||||
expect(script).toContain('Add-Composer-Tool phinx phinx robmorgan/');
|
|
||||||
expect(script).toContain(
|
|
||||||
'Add-Composer-Tool composer-prefetcher composer-prefetcher narrowspark/automatic-'
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -8,6 +8,12 @@ jest.mock('@actions/core', () => ({
|
|||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
jest.spyOn(utils, 'fetch').mockImplementation(
|
||||||
|
async (url): Promise<string> => {
|
||||||
|
return `{ "latest": "8.0", "5.x": "5.6", "url": "${url}" }`;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
async function cleanup(path: string): Promise<void> {
|
async function cleanup(path: string): Promise<void> {
|
||||||
fs.unlink(path, error => {
|
fs.unlink(path, error => {
|
||||||
if (error) {
|
if (error) {
|
||||||
@ -17,21 +23,45 @@ async function cleanup(path: string): Promise<void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
describe('Utils tests', () => {
|
describe('Utils tests', () => {
|
||||||
|
it('checking readEnv', async () => {
|
||||||
|
process.env['test'] = 'setup-php';
|
||||||
|
expect(await utils.readEnv('test')).toBe('setup-php');
|
||||||
|
expect(await utils.readEnv('undefined')).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
it('checking getInput', async () => {
|
it('checking getInput', async () => {
|
||||||
process.env['test'] = 'setup-php';
|
process.env['test'] = 'setup-php';
|
||||||
process.env['undefined'] = '';
|
|
||||||
expect(await utils.getInput('test', false)).toBe('setup-php');
|
expect(await utils.getInput('test', false)).toBe('setup-php');
|
||||||
expect(await utils.getInput('undefined', false)).toBe('');
|
|
||||||
expect(await utils.getInput('setup-php', false)).toBe('setup-php');
|
expect(await utils.getInput('setup-php', false)).toBe('setup-php');
|
||||||
expect(await utils.getInput('DoesNotExist', false)).toBe('');
|
expect(await utils.getInput('DoesNotExist', false)).toBe('');
|
||||||
|
expect(async () => {
|
||||||
|
await utils.getInput('DoesNotExist', true);
|
||||||
|
}).rejects.toThrow('Input required and not supplied: DoesNotExist');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking fetch', async () => {
|
||||||
|
expect(await utils.fetch('test_url')).toBe(
|
||||||
|
'{ "latest": "8.0", "5.x": "5.6", "url": "test_url" }'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking parseVersion', async () => {
|
||||||
|
expect(await utils.parseVersion('latest')).toBe('8.0');
|
||||||
|
expect(await utils.parseVersion('7')).toBe('7.0');
|
||||||
|
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
||||||
|
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
||||||
|
expect(await utils.parseVersion('4.x')).toBe(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking asyncForEach', async () => {
|
it('checking asyncForEach', async () => {
|
||||||
const array: Array<string> = ['a', 'b', 'c'];
|
const array: Array<string> = ['a', 'b', 'c'];
|
||||||
let concat = '';
|
let concat = '';
|
||||||
await utils.asyncForEach(array, async function(str: string): Promise<void> {
|
await utils.asyncForEach(
|
||||||
concat += str;
|
array,
|
||||||
});
|
async function (str: string): Promise<void> {
|
||||||
|
concat += str;
|
||||||
|
}
|
||||||
|
);
|
||||||
expect(concat).toBe('abc');
|
expect(concat).toBe('abc');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -55,12 +85,12 @@ describe('Utils tests', () => {
|
|||||||
path.join(__dirname, '../src/scripts/win32.ps1'),
|
path.join(__dirname, '../src/scripts/win32.ps1'),
|
||||||
'utf8'
|
'utf8'
|
||||||
);
|
);
|
||||||
expect(await utils.readScript('darwin.sh', '7.4', 'darwin')).toBe(darwin);
|
expect(await utils.readScript('darwin.sh')).toBe(darwin);
|
||||||
expect(await utils.readScript('darwin.sh', '7.3', 'darwin')).toBe(darwin);
|
expect(await utils.readScript('darwin.sh')).toBe(darwin);
|
||||||
expect(await utils.readScript('linux.sh', '7.4', 'linux')).toBe(linux);
|
expect(await utils.readScript('linux.sh')).toBe(linux);
|
||||||
expect(await utils.readScript('linux.sh', '7.3', 'linux')).toBe(linux);
|
expect(await utils.readScript('linux.sh')).toBe(linux);
|
||||||
expect(await utils.readScript('win32.ps1', '7.4', 'win32')).toBe(win32);
|
expect(await utils.readScript('win32.ps1')).toBe(win32);
|
||||||
expect(await utils.readScript('win32.ps1', '7.3', 'win32')).toBe(win32);
|
expect(await utils.readScript('win32.ps1')).toBe(win32);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking writeScripts', async () => {
|
it('checking writeScripts', async () => {
|
||||||
@ -68,22 +98,25 @@ describe('Utils tests', () => {
|
|||||||
const runner_dir: string = process.env['RUNNER_TOOL_CACHE'] || '';
|
const runner_dir: string = process.env['RUNNER_TOOL_CACHE'] || '';
|
||||||
const script_path: string = path.join(runner_dir, 'test.sh');
|
const script_path: string = path.join(runner_dir, 'test.sh');
|
||||||
await utils.writeScript('test.sh', testString);
|
await utils.writeScript('test.sh', testString);
|
||||||
await fs.readFile(script_path, function(error: Error | null, data: Buffer) {
|
await fs.readFile(
|
||||||
expect(testString).toBe(data.toString());
|
script_path,
|
||||||
});
|
function (error: Error | null, data: Buffer) {
|
||||||
|
expect(testString).toBe(data.toString());
|
||||||
|
}
|
||||||
|
);
|
||||||
await cleanup(script_path);
|
await cleanup(script_path);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking extensionArray', async () => {
|
it('checking packageArray', async () => {
|
||||||
expect(await utils.extensionArray('a, b, php_c, php-d')).toEqual([
|
expect(await utils.packageArray('a, b, php_c, php-d')).toEqual([
|
||||||
'a',
|
'a',
|
||||||
'b',
|
'b',
|
||||||
'c',
|
'c',
|
||||||
'd'
|
'd'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
expect(await utils.extensionArray('')).toEqual([]);
|
expect(await utils.packageArray('')).toEqual([]);
|
||||||
expect(await utils.extensionArray(' ')).toEqual([]);
|
expect(await utils.packageArray(' ')).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking INIArray', async () => {
|
it('checking INIArray', async () => {
|
||||||
@ -92,6 +125,20 @@ describe('Utils tests', () => {
|
|||||||
'b=2',
|
'b=2',
|
||||||
'c=3'
|
'c=3'
|
||||||
]);
|
]);
|
||||||
|
expect(await utils.CSVArray('\'a=1,2\', "b=3, 4", c=5, d=~e~')).toEqual([
|
||||||
|
'a=1,2',
|
||||||
|
'b=3, 4',
|
||||||
|
'c=5',
|
||||||
|
"d='~e~'"
|
||||||
|
]);
|
||||||
|
expect(await utils.CSVArray('a=\'1,2\', b="3, 4", c=5')).toEqual([
|
||||||
|
'a=1,2',
|
||||||
|
'b=3, 4',
|
||||||
|
'c=5'
|
||||||
|
]);
|
||||||
|
expect(
|
||||||
|
await utils.CSVArray('a=E_ALL, b=E_ALL & ~ E_ALL, c="E_ALL", d=\'E_ALL\'')
|
||||||
|
).toEqual(['a=E_ALL', 'b=E_ALL & ~ E_ALL', 'c=E_ALL', 'd=E_ALL']);
|
||||||
expect(await utils.CSVArray('')).toEqual([]);
|
expect(await utils.CSVArray('')).toEqual([]);
|
||||||
expect(await utils.CSVArray(' ')).toEqual([]);
|
expect(await utils.CSVArray(' ')).toEqual([]);
|
||||||
});
|
});
|
||||||
@ -126,8 +173,8 @@ describe('Utils tests', () => {
|
|||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'darwin');
|
step_log = await utils.stepLog(message, 'darwin');
|
||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'fedora');
|
step_log = await utils.stepLog(message, 'openbsd');
|
||||||
expect(step_log).toContain('Platform fedora is not supported');
|
expect(step_log).toContain('Platform openbsd is not supported');
|
||||||
|
|
||||||
let add_log: string = await utils.addLog(
|
let add_log: string = await utils.addLog(
|
||||||
'tick',
|
'tick',
|
||||||
@ -140,8 +187,8 @@ describe('Utils tests', () => {
|
|||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'fedora');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'openbsd');
|
||||||
expect(add_log).toContain('Platform fedora is not supported');
|
expect(add_log).toContain('Platform openbsd is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getExtensionPrefix', async () => {
|
it('checking getExtensionPrefix', async () => {
|
||||||
@ -150,6 +197,7 @@ describe('Utils tests', () => {
|
|||||||
);
|
);
|
||||||
expect(await utils.getExtensionPrefix('xsl')).toEqual('extension');
|
expect(await utils.getExtensionPrefix('xsl')).toEqual('extension');
|
||||||
expect(await utils.getExtensionPrefix('xdebug')).toEqual('zend_extension');
|
expect(await utils.getExtensionPrefix('xdebug')).toEqual('zend_extension');
|
||||||
|
expect(await utils.getExtensionPrefix('xdebug3')).toEqual('zend_extension');
|
||||||
expect(await utils.getExtensionPrefix('opcache')).toEqual('zend_extension');
|
expect(await utils.getExtensionPrefix('opcache')).toEqual('zend_extension');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -157,8 +205,58 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
||||||
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('fedora')).toContain(
|
expect(await utils.suppressOutput('openbsd')).toContain(
|
||||||
'Platform fedora is not supported'
|
'Platform openbsd is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('checking getUnsupportedLog', async () => {
|
||||||
|
expect(await utils.getUnsupportedLog('ext', '5.6', 'linux')).toContain(
|
||||||
|
'add_log "$cross" "ext" "ext is not supported on PHP 5.6"'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking getCommand', async () => {
|
||||||
|
expect(await utils.getCommand('linux', 'tool')).toBe('add_tool ');
|
||||||
|
expect(await utils.getCommand('darwin', 'tool')).toBe('add_tool ');
|
||||||
|
expect(await utils.getCommand('win32', 'tool')).toBe('Add-Tool ');
|
||||||
|
expect(await utils.getCommand('openbsd', 'tool')).toContain(
|
||||||
|
'Platform openbsd is not supported'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking joins', async () => {
|
||||||
|
expect(await utils.joins('a', 'b', 'c')).toBe('a b c');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking scriptExtension', async () => {
|
||||||
|
expect(await utils.scriptExtension('linux')).toBe('.sh');
|
||||||
|
expect(await utils.scriptExtension('darwin')).toBe('.sh');
|
||||||
|
expect(await utils.scriptExtension('win32')).toBe('.ps1');
|
||||||
|
expect(await utils.scriptExtension('openbsd')).toContain(
|
||||||
|
'Platform openbsd is not supported'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking scriptTool', async () => {
|
||||||
|
expect(await utils.scriptTool('linux')).toBe('bash');
|
||||||
|
expect(await utils.scriptTool('darwin')).toBe('bash');
|
||||||
|
expect(await utils.scriptTool('win32')).toBe('pwsh');
|
||||||
|
expect(await utils.scriptTool('openbsd')).toContain(
|
||||||
|
'Platform openbsd is not supported'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking customPackage', async () => {
|
||||||
|
const script_path: string = path.join('ext', 'pkg.sh');
|
||||||
|
expect(await utils.customPackage('pkg', 'ext', '1.2.3', 'linux')).toContain(
|
||||||
|
script_path + '\nadd_pkg 1.2.3'
|
||||||
|
);
|
||||||
|
expect(
|
||||||
|
await utils.customPackage('pdo_pkg', 'ext', '1.2.3', 'linux')
|
||||||
|
).toContain(script_path + '\nadd_pkg 1.2.3');
|
||||||
|
expect(
|
||||||
|
await utils.customPackage('pkg8', 'ext', '1.2.3', 'linux')
|
||||||
|
).toContain(script_path + '\nadd_pkg 1.2.3');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
21
action.yml
21
action.yml
@ -1,12 +1,13 @@
|
|||||||
name: 'Setup PHP Action'
|
name: 'Setup PHP Action'
|
||||||
author: shivammathur
|
author: shivammathur
|
||||||
description: 'Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer'
|
description: 'GitHub Action for PHP'
|
||||||
branding:
|
branding:
|
||||||
color: 'purple'
|
color: 'purple'
|
||||||
|
icon: 'play-circle'
|
||||||
inputs:
|
inputs:
|
||||||
php-version:
|
php-version:
|
||||||
description: 'Setup PHP version.'
|
description: 'Setup PHP version.'
|
||||||
default: '7.4'
|
default: '8.0'
|
||||||
required: true
|
required: true
|
||||||
extensions:
|
extensions:
|
||||||
description: 'Setup PHP extensions.'
|
description: 'Setup PHP extensions.'
|
||||||
@ -17,22 +18,12 @@ inputs:
|
|||||||
coverage:
|
coverage:
|
||||||
description: 'Setup code coverage driver.'
|
description: 'Setup code coverage driver.'
|
||||||
required: false
|
required: false
|
||||||
|
sapi:
|
||||||
|
description: 'Setup PHP Server API.'
|
||||||
|
required: false
|
||||||
tools:
|
tools:
|
||||||
description: 'Setup popular tools globally.'
|
description: 'Setup popular tools globally.'
|
||||||
required: false
|
required: false
|
||||||
# Deprecated options, do not use. Will not be supported in v2 which will be released around February 1, 2020.
|
|
||||||
extension-csv:
|
|
||||||
description: 'Deprecated! Use extensions instead.'
|
|
||||||
deprecationMessage: 'The extension-csv property will not be supported in v2. Use extensions instead.'
|
|
||||||
required: false
|
|
||||||
ini-values-csv:
|
|
||||||
description: 'Deprecated! Use ini-values instead.'
|
|
||||||
deprecationMessage: 'The ini-values-csv property will not be supported in v2. Use ini-values instead.'
|
|
||||||
required: false
|
|
||||||
pecl:
|
|
||||||
description: 'Deprecated! Use tools instead to setup PECL.'
|
|
||||||
deprecationMessage: 'The pecl property will not be supported in v2. Specify pecl in tools instead.'
|
|
||||||
required: false
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node12'
|
using: 'node12'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.js'
|
||||||
|
4363
dist/index.js
vendored
4363
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
@ -13,13 +13,13 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
- 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.
|
||||||
@ -27,6 +27,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install -n --prefer-dist
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: PHP test
|
- name: PHP test
|
||||||
run: composer test
|
run: composer test
|
31
examples/blackfire-player.yml
Normal file
31
examples/blackfire-player.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# GitHub Action for Blackfire Player
|
||||||
|
name: Play a Blackfire Scenario
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
blackfire-player:
|
||||||
|
name: Blackfire (PHP ${{ matrix.php-versions }})
|
||||||
|
# Add your Blackfire credentials securely using GitHub Secrets
|
||||||
|
env:
|
||||||
|
BLACKFIRE_SERVER_ID: ${{ secrets.BLACKFIRE_SERVER_ID }}
|
||||||
|
BLACKFIRE_SERVER_TOKEN: ${{ secrets.BLACKFIRE_SERVER_TOKEN }}
|
||||||
|
BLACKFIRE_CLIENT_ID: ${{ secrets.BLACKFIRE_CLIENT_ID }}
|
||||||
|
BLACKFIRE_CLIENT_TOKEN: ${{ secrets.BLACKFIRE_CLIENT_TOKEN }}
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
|
# blackfire-player supports PHP >= 5.5
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: blackfire
|
||||||
|
tools: blackfire, blackfire-player #Setup Blackfire client, agent and player
|
||||||
|
coverage: none
|
||||||
|
- name: Play the scenario
|
||||||
|
run: blackfire-player run scenario.bkf # Refer to https://blackfire.io/docs/player/index#usage
|
31
examples/blackfire.yml
Normal file
31
examples/blackfire.yml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# GitHub Action for Blackfire
|
||||||
|
name: Profiling with blackfire
|
||||||
|
on: [push, pull_request]
|
||||||
|
jobs:
|
||||||
|
blackfire:
|
||||||
|
name: Blackfire (PHP ${{ matrix.php-versions }})
|
||||||
|
# Add your Blackfire credentials securely using GitHub Secrets
|
||||||
|
env:
|
||||||
|
BLACKFIRE_SERVER_ID: ${{ secrets.BLACKFIRE_SERVER_ID }}
|
||||||
|
BLACKFIRE_SERVER_TOKEN: ${{ secrets.BLACKFIRE_SERVER_TOKEN }}
|
||||||
|
BLACKFIRE_CLIENT_ID: ${{ secrets.BLACKFIRE_CLIENT_ID }}
|
||||||
|
BLACKFIRE_CLIENT_TOKEN: ${{ secrets.BLACKFIRE_CLIENT_TOKEN }}
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
|
# Blackfire supports PHP >= 5.3 on ubuntu and macos and PHP >= 5.4 on windows
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: blackfire
|
||||||
|
tools: blackfire #Setup Blackfire client and agent
|
||||||
|
coverage: none
|
||||||
|
- name: Profile
|
||||||
|
run: blackfire run php my-script.php # Refer to https://blackfire.io/docs/cookbooks/profiling-cli
|
@ -27,18 +27,20 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
# You can also use ext-apcu or ext-memcached instead of ext-redis
|
# You can also use ext-apcu or ext-memcached instead of ext-redis
|
||||||
# Install memcached if using ext-memcached
|
# Install memcached if using ext-memcached
|
||||||
extensions: mbstring, intl, redis, pdo_mysql
|
extensions: mbstring, intl, redis, pdo_mysql
|
||||||
coverage: pcov
|
coverage: pcov
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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 +49,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd --no-interaction
|
composer run-script post-install-cmd --no-interaction
|
||||||
# Add a step to run migrations if required
|
# Add a step to run migrations if required
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
@ -63,7 +65,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -71,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.
|
||||||
@ -79,7 +81,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -90,7 +92,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -99,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.
|
||||||
@ -107,6 +109,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
@ -27,7 +27,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
# You can also use ext-apcu or ext-memcached instead of ext-redis
|
# You can also use ext-apcu or ext-memcached instead of ext-redis
|
||||||
@ -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.
|
||||||
@ -47,7 +47,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd --no-interaction
|
composer run-script post-install-cmd --no-interaction
|
||||||
# Add a step to run migrations if required
|
# Add a step to run migrations if required
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
@ -63,7 +63,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -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.
|
||||||
@ -79,7 +79,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -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.
|
||||||
@ -107,6 +107,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
@ -13,7 +13,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, pdo_sqlite, pdo_mysql
|
extensions: mbstring, intl, pdo_sqlite, pdo_mysql
|
||||||
@ -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.
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd --no-interaction
|
composer run-script post-install-cmd --no-interaction
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
@ -43,7 +43,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -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.
|
||||||
@ -59,7 +59,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v1
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '7.3'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
@ -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.
|
||||||
@ -87,6 +87,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
||||||
|
@ -12,7 +12,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, curl, dom
|
extensions: mbstring, intl, curl, dom
|
||||||
@ -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.
|
||||||
@ -29,6 +29,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -36,16 +36,18 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
coverage: xdebug #optional
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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.
|
||||||
@ -53,7 +55,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
@ -38,7 +38,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, pgsql
|
extensions: mbstring, dom, fileinfo, pgsql
|
||||||
@ -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.
|
||||||
@ -55,7 +55,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
@ -14,7 +14,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo
|
extensions: mbstring, dom, fileinfo
|
||||||
@ -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.
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
@ -36,16 +36,18 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
coverage: xdebug #optional
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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.
|
||||||
@ -54,7 +56,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer require predis/predis illuminate/redis
|
composer require predis/predis illuminate/redis
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
@ -38,7 +38,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, pgsql
|
extensions: mbstring, dom, fileinfo, pgsql
|
||||||
@ -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.
|
||||||
@ -56,7 +56,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer require predis/predis illuminate/redis
|
composer require predis/predis illuminate/redis
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
@ -14,7 +14,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
@ -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.
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
|
@ -36,16 +36,18 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, zip, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
|
extensions: mbstring, dom, zip, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
|
||||||
coverage: xdebug #optional
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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.
|
||||||
@ -53,7 +55,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
|
@ -37,7 +37,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, zip, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
|
extensions: mbstring, dom, zip, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
|
||||||
@ -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.
|
||||||
@ -54,7 +54,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
|
@ -18,7 +18,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-versions }}
|
node-version: ${{ matrix.node-versions }}
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring
|
extensions: mbstring
|
||||||
@ -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.
|
||||||
@ -46,7 +46,7 @@ jobs:
|
|||||||
- name: Install yarn dependencies
|
- name: Install yarn dependencies
|
||||||
run: yarn -V
|
run: yarn -V
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install -o --prefer-dist --no-interaction
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Yarn test and build
|
- name: Yarn test and build
|
||||||
run: |
|
run: |
|
||||||
yarn run test
|
yarn run test
|
||||||
|
@ -12,7 +12,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, simplexml, dom
|
extensions: mbstring, simplexml, dom
|
||||||
@ -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.
|
||||||
@ -29,6 +29,6 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -23,16 +23,18 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
|
||||||
coverage: xdebug #optional
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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.
|
||||||
@ -41,13 +43,14 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer require --dev symfony/orm-pack symfony/phpunit-bridge
|
||||||
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
|
php bin/phpunit install
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: |
|
run: |
|
||||||
composer require symfony/orm-pack
|
|
||||||
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
||||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||||
env:
|
env:
|
||||||
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
|
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: php bin/phpunit --coverage-text
|
run: php bin/phpunit --coverage-text
|
||||||
|
@ -23,7 +23,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, pgsql
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, pgsql
|
||||||
@ -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.
|
||||||
@ -41,13 +41,14 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer require --dev symfony/orm-pack symfony/phpunit-bridge
|
||||||
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
|
php bin/phpunit install
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: |
|
run: |
|
||||||
composer require symfony/orm-pack
|
|
||||||
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
||||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||||
env:
|
env:
|
||||||
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:${{ job.services.postgres.ports[5432] }}/postgres?charset=UTF-8
|
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:${{ job.services.postgres.ports[5432] }}/postgres?charset=UTF-8
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: php bin/phpunit --coverage-text
|
run: php bin/phpunit --coverage-text
|
||||||
|
@ -14,7 +14,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite
|
||||||
@ -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.
|
||||||
@ -32,7 +32,8 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer require symfony/orm-pack
|
composer require --dev symfony/phpunit-bridge
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
|
php bin/phpunit install
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: php bin/phpunit --coverage-text
|
run: php bin/phpunit --coverage-text
|
||||||
|
@ -33,16 +33,18 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 10.x
|
node-version: 10.x
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, gd, imagick, zip, dom, mysql
|
extensions: mbstring, intl, gd, imagick, zip, dom, mysql
|
||||||
coverage: xdebug #optional
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
- 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)"
|
||||||
- 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.
|
||||||
@ -50,7 +52,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||||
|
@ -33,7 +33,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 10.x
|
node-version: 10.x
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
||||||
@ -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.
|
||||||
@ -50,7 +50,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||||
|
@ -12,7 +12,7 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
- name: Setup PHP, with composer and extensions
|
- name: Setup PHP, with composer and extensions
|
||||||
uses: shivammathur/setup-php@v1 #https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, bcmath, curl, intl
|
extensions: mbstring, bcmath, curl, intl
|
||||||
@ -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.
|
||||||
@ -30,7 +30,7 @@ jobs:
|
|||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||||
composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test
|
composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -9,4 +9,4 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
verbose: true,
|
verbose: true,
|
||||||
collectCoverage: true
|
collectCoverage: true
|
||||||
};
|
};
|
||||||
|
12883
package-lock.json
generated
12883
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
42
package.json
42
package.json
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "1.8.2",
|
"version": "2.10.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",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"lint": "eslint **/*.ts --cache",
|
"lint": "eslint **/*.ts --cache --fix",
|
||||||
"format": "prettier --write **/*.ts && git add .",
|
"format": "prettier --write **/*.ts && git add .",
|
||||||
"format-check": "prettier --check **/*.ts",
|
"format-check": "prettier --check **/*.ts",
|
||||||
"release": "ncc build src/install.ts -o dist && git add -f dist/",
|
"release": "ncc build src/install.ts -o dist && git add -f dist/",
|
||||||
@ -24,33 +24,33 @@
|
|||||||
"author": "shivammathur",
|
"author": "shivammathur",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.2",
|
"@actions/core": "^1.2.6",
|
||||||
"@actions/exec": "^1.0.3",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"fs": "0.0.1-security"
|
"fs": "0.0.1-security"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^25.1.1",
|
"@types/jest": "^26.0.20",
|
||||||
"@types/node": "^13.7.0",
|
"@types/node": "^14.14.31",
|
||||||
"@typescript-eslint/eslint-plugin": "^2.18.0",
|
"@typescript-eslint/eslint-plugin": "^4.15.1",
|
||||||
"@typescript-eslint/parser": "^2.18.0",
|
"@typescript-eslint/parser": "^4.15.1",
|
||||||
"@zeit/ncc": "^0.21.0",
|
"@vercel/ncc": "^0.27.0",
|
||||||
"eslint": "^6.8.0",
|
"eslint": "^7.20.0",
|
||||||
"eslint-config-prettier": "^6.10.0",
|
"eslint-config-prettier": "^8.0.0",
|
||||||
"eslint-plugin-import": "^2.20.1",
|
"eslint-plugin-import": "^2.22.1",
|
||||||
"eslint-plugin-jest": "^23.6.0",
|
"eslint-plugin-jest": "^24.1.5",
|
||||||
"eslint-plugin-prettier": "^3.1.2",
|
"eslint-plugin-prettier": "^3.3.1",
|
||||||
"husky": "^4.2.1",
|
"husky": "^4.3.8",
|
||||||
"jest": "^25.1.0",
|
"jest": "^26.6.3",
|
||||||
"jest-circus": "^25.1.0",
|
"jest-circus": "^26.6.3",
|
||||||
"prettier": "^1.19.1",
|
"prettier": "^2.2.1",
|
||||||
"ts-jest": "^25.1.0",
|
"ts-jest": "^26.5.1",
|
||||||
"typescript": "^3.7.5"
|
"typescript": "^4.1.5"
|
||||||
},
|
},
|
||||||
"husky": {
|
"husky": {
|
||||||
"skipCI": true,
|
"skipCI": true,
|
||||||
"hooks": {
|
"hooks": {
|
||||||
"pre-commit": "npm run format && npm run lint && npm run build && npm run release"
|
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -9,12 +9,17 @@ export async function addINIValuesUnix(
|
|||||||
ini_values_csv: string
|
ini_values_csv: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
||||||
let script = '\n';
|
let script = '';
|
||||||
await utils.asyncForEach(ini_values, async function(line: string) {
|
await utils.asyncForEach(ini_values, async function (line: string) {
|
||||||
script +=
|
script +=
|
||||||
(await utils.addLog('$tick', line, 'Added to php.ini', 'linux')) + '\n';
|
'\n' + (await utils.addLog('$tick', line, 'Added to php.ini', 'linux'));
|
||||||
});
|
});
|
||||||
return 'echo "' + ini_values.join('\n') + '" >> $ini_file' + script;
|
return (
|
||||||
|
'echo "' +
|
||||||
|
ini_values.join('\n') +
|
||||||
|
'" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' +
|
||||||
|
script
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,15 +32,12 @@ export async function addINIValuesWindows(
|
|||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
await utils.asyncForEach(ini_values, async function(line: string) {
|
await utils.asyncForEach(ini_values, async function (line: string) {
|
||||||
script +=
|
script +=
|
||||||
(await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
|
(await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
'Add-Content C:\\tools\\php\\php.ini "' +
|
'Add-Content "$php_dir\\php.ini" "' + ini_values.join('\n') + '"' + script
|
||||||
ini_values.join('\n') +
|
|
||||||
'"' +
|
|
||||||
script
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,6 +46,7 @@ export async function addINIValuesWindows(
|
|||||||
*
|
*
|
||||||
* @param ini_values_csv
|
* @param ini_values_csv
|
||||||
* @param os_version
|
* @param os_version
|
||||||
|
* @param no_step
|
||||||
*/
|
*/
|
||||||
export async function addINIValues(
|
export async function addINIValues(
|
||||||
ini_values_csv: string,
|
ini_values_csv: string,
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
variants:
|
|
||||||
dev:
|
|
||||||
bcmath:
|
|
||||||
calendar:
|
|
||||||
cli:
|
|
||||||
ctype:
|
|
||||||
dom:
|
|
||||||
fileinfo:
|
|
||||||
filter:
|
|
||||||
ipc:
|
|
||||||
iconv:
|
|
||||||
json:
|
|
||||||
mbregex:
|
|
||||||
mbstring:
|
|
||||||
mhash:
|
|
||||||
mcrypt:
|
|
||||||
pcntl:
|
|
||||||
pcre:
|
|
||||||
pdo:
|
|
||||||
phar:
|
|
||||||
posix:
|
|
||||||
sockets:
|
|
||||||
tokenizer:
|
|
||||||
xml:
|
|
||||||
curl:
|
|
||||||
openssl:
|
|
||||||
zip:
|
|
||||||
gd:
|
|
||||||
- --with-freetype
|
|
||||||
- --with-pdo-mysql=mysqlnd
|
|
||||||
- --with-mysqli=mysqlnd
|
|
||||||
- --with-pgsql
|
|
||||||
- --with-pdo-pgsql
|
|
||||||
- --with-gmp=/usr/local/opt/gmp
|
|
||||||
- --with-openssl
|
|
||||||
- --with-pear
|
|
||||||
- --with-zip
|
|
||||||
- --with-libxml
|
|
||||||
- --with-kerberos
|
|
||||||
- --with-gd
|
|
||||||
- --with-ffi
|
|
||||||
- --with-curl
|
|
||||||
- --with-mhash
|
|
||||||
- --with-readline=/usr/local/opt/readline
|
|
||||||
- --with-iconv=/usr/local/opt/libiconv
|
|
||||||
- --with-icu-dir=/usr/local/opt/icu4c
|
|
||||||
- --with-config-file-path=/etc
|
|
||||||
- --enable-intl
|
|
||||||
- --enable-xml
|
|
||||||
- --enable-sysvsem
|
|
||||||
- --enable-sysvshm
|
|
||||||
- --enable-sysvmsg
|
|
||||||
- --enable-phpdbg
|
|
||||||
- --enable-exif
|
|
||||||
- --enable-gd
|
|
||||||
- --enable-soap
|
|
||||||
- --enable-xmlreader
|
|
||||||
- --enable-zend-test=shared
|
|
3
src/configs/httpd-php-apache.conf
Normal file
3
src/configs/httpd-php-apache.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
LoadModule phpPHP_MAJOR_module PHP_DIR\PHP_APACHE_DLL
|
||||||
|
AddHandler application/x-httpd-php .php
|
||||||
|
PHPIniDir PHP_DIR
|
8
src/configs/httpd-php-cgi.conf
Normal file
8
src/configs/httpd-php-cgi.conf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
LoadModule proxy_module modules/mod_proxy.so
|
||||||
|
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
|
||||||
|
LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
|
||||||
|
<FilesMatch "\.php$">
|
||||||
|
<If "-f %{REQUEST_FILENAME}">
|
||||||
|
SetHandler "proxy:fcgi://127.0.0.1:9000/"
|
||||||
|
</If>
|
||||||
|
</FilesMatch>
|
36
src/configs/nginx.conf
Normal file
36
src/configs/nginx.conf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
worker_processes 1;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root html;
|
||||||
|
index index.php index.html index.htm;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root html;
|
||||||
|
}
|
||||||
|
location ~ \.php$ {
|
||||||
|
root html;
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
src/configs/php-versions.json
Normal file
6
src/configs/php-versions.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"latest": "8.0",
|
||||||
|
"5.x": "5.6",
|
||||||
|
"7.x": "7.4",
|
||||||
|
"8.x": "8.0"
|
||||||
|
}
|
29
src/configs/php.json
Normal file
29
src/configs/php.json
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"problemMatcher": [
|
||||||
|
{
|
||||||
|
"owner": "php_native_error",
|
||||||
|
"severity": "error",
|
||||||
|
"pattern": [
|
||||||
|
{
|
||||||
|
"regexp": "^(.*error):\\s+\\s+(.+) in (.+) on line (\\d+)$",
|
||||||
|
"code": 1,
|
||||||
|
"message": 2,
|
||||||
|
"file": 3,
|
||||||
|
"line": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
"owner": "php_native_warning",
|
||||||
|
"severity": "warning",
|
||||||
|
"pattern": [
|
||||||
|
{
|
||||||
|
"regexp": "^(.*Warning|.*Deprecated|.*Notice):\\s+\\s+(.+) in (.+) on line (\\d+)$",
|
||||||
|
"code": 1,
|
||||||
|
"message": 2,
|
||||||
|
"file": 3,
|
||||||
|
"line": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
5
src/configs/virtual_hosts/darwin/httpd-vhosts.conf
Normal file
5
src/configs/virtual_hosts/darwin/httpd-vhosts.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
ServerAdmin webmaster@localhost
|
||||||
|
DocumentRoot "/var/www/html"
|
||||||
|
ServerName localhost
|
||||||
|
</VirtualHost>
|
7
src/configs/virtual_hosts/linux/default_apache
Normal file
7
src/configs/virtual_hosts/linux/default_apache
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName localhost
|
||||||
|
ServerAdmin webmaster@localhost
|
||||||
|
DocumentRoot /var/www/html
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
</VirtualHost>
|
22
src/configs/virtual_hosts/linux/default_nginx
Normal file
22
src/configs/virtual_hosts/linux/default_nginx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
server {
|
||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server;
|
||||||
|
|
||||||
|
root /var/www/html;
|
||||||
|
index index.html index.htm index.php;
|
||||||
|
|
||||||
|
server_name localhost;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
include snippets/fastcgi-php.conf;
|
||||||
|
fastcgi_pass unix:/run/php/phpPHP_VERSION-fpm.sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.ht {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
@ -5,40 +5,27 @@ import * as config from './config';
|
|||||||
/**
|
/**
|
||||||
* Function to setup Xdebug
|
* Function to setup Xdebug
|
||||||
*
|
*
|
||||||
|
* @param extension
|
||||||
* @param version
|
* @param version
|
||||||
* @param os_version
|
* @param os_version
|
||||||
* @param pipe
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addCoverageXdebug(
|
export async function addCoverageXdebug(
|
||||||
|
extension: string,
|
||||||
version: string,
|
version: string,
|
||||||
os_version: string,
|
os_version: string,
|
||||||
pipe: string
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
switch (version) {
|
const xdebug =
|
||||||
case '8.0':
|
(await extensions.addExtension(extension, version, os_version, true)) +
|
||||||
return (
|
pipe;
|
||||||
'\n' +
|
const log = await utils.addLog(
|
||||||
(await utils.addLog(
|
'$tick',
|
||||||
'$cross',
|
extension,
|
||||||
'xdebug',
|
'Xdebug enabled as coverage driver',
|
||||||
'Xdebug currently only supports PHP 7.4 or lower',
|
os_version
|
||||||
os_version
|
);
|
||||||
))
|
return xdebug + '\n' + log;
|
||||||
);
|
|
||||||
case '7.4':
|
|
||||||
default:
|
|
||||||
return (
|
|
||||||
(await extensions.addExtension('xdebug', version, os_version, true)) +
|
|
||||||
pipe +
|
|
||||||
'\n' +
|
|
||||||
(await utils.addLog(
|
|
||||||
'$tick',
|
|
||||||
'xdebug',
|
|
||||||
'Xdebug enabled as coverage driver',
|
|
||||||
os_version
|
|
||||||
))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +41,7 @@ export async function addCoveragePCOV(
|
|||||||
pipe: string
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
switch (version) {
|
switch (true) {
|
||||||
default:
|
default:
|
||||||
script +=
|
script +=
|
||||||
(await extensions.addExtension('pcov', version, os_version, true)) +
|
(await extensions.addExtension('pcov', version, os_version, true)) +
|
||||||
@ -83,8 +70,8 @@ export async function addCoveragePCOV(
|
|||||||
);
|
);
|
||||||
// version is not supported
|
// version is not supported
|
||||||
break;
|
break;
|
||||||
case '5.6':
|
|
||||||
case '7.0':
|
case /5\.[3-6]|7\.0/.test(version):
|
||||||
script += await utils.addLog(
|
script += await utils.addLog(
|
||||||
'$cross',
|
'$cross',
|
||||||
'pcov',
|
'pcov',
|
||||||
@ -151,7 +138,14 @@ export async function addCoverage(
|
|||||||
case 'pcov':
|
case 'pcov':
|
||||||
return script + (await addCoveragePCOV(version, os_version, pipe));
|
return script + (await addCoveragePCOV(version, os_version, pipe));
|
||||||
case 'xdebug':
|
case 'xdebug':
|
||||||
return script + (await addCoverageXdebug(version, os_version, pipe));
|
case 'xdebug3':
|
||||||
|
return (
|
||||||
|
script + (await addCoverageXdebug('xdebug', version, os_version, pipe))
|
||||||
|
);
|
||||||
|
case 'xdebug2':
|
||||||
|
return (
|
||||||
|
script + (await addCoverageXdebug('xdebug2', version, os_version, pipe))
|
||||||
|
);
|
||||||
case 'none':
|
case 'none':
|
||||||
return script + (await disableCoverage(version, os_version, pipe));
|
return script + (await disableCoverage(version, os_version, pipe));
|
||||||
default:
|
default:
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import * as path from 'path';
|
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -6,71 +5,104 @@ import * as utils from './utils';
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
* @param pipe
|
|
||||||
*/
|
*/
|
||||||
export async function addExtensionDarwin(
|
export async function addExtensionDarwin(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string,
|
version: string
|
||||||
pipe: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.packageArray(extension_csv);
|
||||||
let script = '\n';
|
let add_script = '\n';
|
||||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
let remove_script = '';
|
||||||
extension = extension.toLowerCase();
|
await utils.asyncForEach(extensions, async function (extension: string) {
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
const [extension_name, stability]: string[] = extension.split('-');
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
const prefix = await utils.getExtensionPrefix(extension_name);
|
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
||||||
let install_command = '';
|
let matches: RegExpExecArray;
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// match pre-release versions
|
// match :extension
|
||||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
case /^:/.test(ext_name):
|
||||||
script +=
|
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||||
'\nadd_unstable_extension ' +
|
|
||||||
extension_name +
|
|
||||||
' ' +
|
|
||||||
stability +
|
|
||||||
' ' +
|
|
||||||
prefix;
|
|
||||||
return;
|
return;
|
||||||
case /5\.6xdebug/.test(version_extension):
|
// match 5.3blackfire...8.0blackfire
|
||||||
install_command = 'sudo pecl install -f xdebug-2.5.5' + pipe;
|
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||||
break;
|
// match couchbase, pdo_oci, oci8, http, pecl_http
|
||||||
case /7\.0xdebug/.test(version_extension):
|
// match 5.3ioncube...7.4ioncube, 5.3geos...7.4geos
|
||||||
install_command = 'sudo pecl install -f xdebug-2.9.0' + pipe;
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
break;
|
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
case /5\.6redis/.test(version_extension):
|
version_extension
|
||||||
install_command = 'sudo pecl install -f redis-2.2.8' + pipe;
|
):
|
||||||
break;
|
case /^couchbase$|^pdo_oci$|^oci8$|^http|^pecl_http|^pdo_firebird$/.test(
|
||||||
case /[5-9]\.\dimagick/.test(version_extension):
|
extension
|
||||||
install_command =
|
):
|
||||||
'brew install pkg-config imagemagick' +
|
case /^(5\.[3-6]|7\.[0-4])(ioncube|geos)$/.test(version_extension):
|
||||||
pipe +
|
|
||||||
' && sudo pecl install -f imagick' +
|
|
||||||
pipe;
|
|
||||||
break;
|
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
install_command =
|
add_script += await utils.customPackage(
|
||||||
'sh ' +
|
ext_name,
|
||||||
path.join(__dirname, '../src/scripts/ext/phalcon_darwin.sh') +
|
'ext',
|
||||||
' ' +
|
extension,
|
||||||
extension +
|
'darwin'
|
||||||
' ' +
|
);
|
||||||
version +
|
return;
|
||||||
pipe;
|
// match pre-release versions. For example - xdebug-beta
|
||||||
|
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_unstable_extension',
|
||||||
|
ext_name,
|
||||||
|
ext_version,
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match extensions from GitHub. Do this before checking for semver as
|
||||||
|
// the version may match that as well
|
||||||
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
|
matches = /.+-(.+)\/(.+)@(.+)/.exec(extension) as RegExpExecArray;
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_extension_from_github',
|
||||||
|
ext_name,
|
||||||
|
matches[1],
|
||||||
|
matches[2],
|
||||||
|
matches[3],
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match semver
|
||||||
|
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_pecl_extension',
|
||||||
|
ext_name,
|
||||||
|
ext_version,
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match 5.3pcov to 7.0pcov
|
||||||
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
|
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
||||||
|
return;
|
||||||
|
// match 5.6 to 8.9 for amqp, grpc, igbinary, imagick, imap, msgpack, protobuf, raphf, redis, swoole, xdebug, xdebug2, zmq
|
||||||
|
// match 7.1 to 8.9 for pcov
|
||||||
|
// match 5.6 to 7.4 for propro
|
||||||
|
case /(5\.6|7\.[0-4]|8\.[0-9])(amqp|grpc|igbinary|imagick|imap|msgpack|protobuf|raphf|redis|swoole|xdebug|xdebug2|zmq)/.test(
|
||||||
|
version_extension
|
||||||
|
):
|
||||||
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
||||||
|
case /(7\.[1-4]|8\.[0-9])pcov/.test(version_extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_brew_extension',
|
||||||
|
ext_name,
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match sqlite
|
||||||
|
case /^sqlite$/.test(extension):
|
||||||
|
extension = 'sqlite3';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
install_command = 'sudo pecl install -f ' + extension + pipe;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
script +=
|
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
||||||
'\nadd_extension ' +
|
|
||||||
extension +
|
|
||||||
' "' +
|
|
||||||
install_command +
|
|
||||||
'" ' +
|
|
||||||
(await utils.getExtensionPrefix(extension));
|
|
||||||
});
|
});
|
||||||
return script;
|
return add_script + remove_script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,41 +110,113 @@ export async function addExtensionDarwin(
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
* @param pipe
|
|
||||||
*/
|
*/
|
||||||
export async function addExtensionWindows(
|
export async function addExtensionWindows(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string,
|
version: string
|
||||||
pipe: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.packageArray(extension_csv);
|
||||||
let script = '\n';
|
let add_script = '\n';
|
||||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
let remove_script = '';
|
||||||
extension = extension.toLowerCase();
|
await utils.asyncForEach(extensions, async function (extension: string) {
|
||||||
const [extension_name, stability]: string[] = extension.split('-');
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
|
let matches: RegExpExecArray;
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// match pre-release versions
|
// Match :extension
|
||||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
case /^:/.test(ext_name):
|
||||||
script += '\nAdd-Extension ' + extension_name + ' ' + stability;
|
remove_script += '\nRemove-Extension ' + ext_name.slice(1);
|
||||||
break;
|
break;
|
||||||
|
// match 5.3blackfire...8.0blackfire
|
||||||
|
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||||
|
// match pdo_oci and oci8
|
||||||
|
// match 5.3ioncube...7.4ioncube
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
|
// match 7.1pecl_http...8.0pecl_http and 7.1http...8.0http
|
||||||
|
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
|
version_extension
|
||||||
|
):
|
||||||
|
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
||||||
|
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
script +=
|
case /^(7\.[1-4]|8\.0)(http|pecl_http)$/.test(version_extension):
|
||||||
'\n& ' +
|
add_script += await utils.customPackage(
|
||||||
path.join(__dirname, '../src/scripts/ext/phalcon.ps1') +
|
ext_name,
|
||||||
' ' +
|
'ext',
|
||||||
extension +
|
extension,
|
||||||
' ' +
|
'win32'
|
||||||
version +
|
);
|
||||||
'\n';
|
return;
|
||||||
|
// match pre-release versions. For example - xdebug-beta
|
||||||
|
case /.+-(stable|beta|alpha|devel|snapshot)/.test(extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nAdd-Extension',
|
||||||
|
ext_name,
|
||||||
|
ext_version.replace('stable', '')
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
// match extensions from GitHub. Do this before checking for semver as
|
||||||
|
// the version may match that as well
|
||||||
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
|
add_script += await utils.getUnsupportedLog(
|
||||||
|
extension,
|
||||||
|
version,
|
||||||
|
'win32'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
// match semver without state
|
||||||
|
case /.+-\d+\.\d+\.\d+$/.test(extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nAdd-Extension',
|
||||||
|
ext_name,
|
||||||
|
'stable',
|
||||||
|
ext_version
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
// match semver with state
|
||||||
|
case /.+-\d+\.\d+\.\d+[a-zA-Z]+\d*/.test(extension):
|
||||||
|
matches = /.+-(\d+\.\d+\.\d+)([a-zA-Z]+)\d*/.exec(
|
||||||
|
version_extension
|
||||||
|
) as RegExpExecArray;
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nAdd-Extension',
|
||||||
|
ext_name,
|
||||||
|
matches[2].replace('preview', 'devel'),
|
||||||
|
matches[1]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
// match 7.2xdebug2 to 7.4xdebug2
|
||||||
|
case /7\.[2-4]xdebug2/.test(version_extension):
|
||||||
|
add_script += '\nAdd-Extension xdebug stable 2.9.8';
|
||||||
|
break;
|
||||||
|
// match 5.3pcov to 7.0pcov
|
||||||
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
|
add_script += await utils.getUnsupportedLog('pcov', version, 'win32');
|
||||||
|
break;
|
||||||
|
// match 5.3mysql..5.6mysql
|
||||||
|
// match 5.3mysqli..5.6mysqli
|
||||||
|
// match 5.3mysqlnd..5.6mysqlnd
|
||||||
|
case /^5\.\d(mysql|mysqli|mysqlnd)$/.test(version_extension):
|
||||||
|
add_script +=
|
||||||
|
'\nAdd-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
||||||
|
break;
|
||||||
|
// match 7.0mysql..8.9mysql
|
||||||
|
// match 7.0mysqli..8.9mysqli
|
||||||
|
// match 7.0mysqlnd..8.9mysqlnd
|
||||||
|
case /[7-8]\.\d+(mysql|mysqli|mysqlnd)$/.test(version_extension):
|
||||||
|
add_script += '\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
||||||
|
break;
|
||||||
|
// match sqlite
|
||||||
|
case /^sqlite$/.test(extension):
|
||||||
|
extension = 'sqlite3';
|
||||||
|
add_script += await utils.joins('\nAdd-Extension', extension);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
script += '\nAdd-Extension ' + extension;
|
add_script += '\nAdd-Extension ' + extension;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return script;
|
return add_script + remove_script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -120,72 +224,111 @@ export async function addExtensionWindows(
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
* @param pipe
|
|
||||||
*/
|
*/
|
||||||
export async function addExtensionLinux(
|
export async function addExtensionLinux(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string,
|
version: string
|
||||||
pipe: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.packageArray(extension_csv);
|
||||||
let script = '\n';
|
let add_script = '\n';
|
||||||
await utils.asyncForEach(extensions, async function(extension: string) {
|
let remove_script = '';
|
||||||
extension = extension.toLowerCase();
|
await utils.asyncForEach(extensions, async function (extension: string) {
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
const [extension_name, stability]: string[] = extension.split('-');
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
const prefix = await utils.getExtensionPrefix(extension_name);
|
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
||||||
let install_command = '';
|
let matches: RegExpExecArray;
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// match pre-release versions
|
// Match :extension
|
||||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
case /^:/.test(ext_name):
|
||||||
script +=
|
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||||
'\nadd_unstable_extension ' +
|
|
||||||
extension_name +
|
|
||||||
' ' +
|
|
||||||
stability +
|
|
||||||
' ' +
|
|
||||||
prefix;
|
|
||||||
return;
|
return;
|
||||||
// match 5.6gearman..7.4gearman
|
// match 5.3blackfire...8.0blackfire
|
||||||
case /^((5\.6)|(7\.[0-4]))gearman$/.test(version_extension):
|
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||||
install_command =
|
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
||||||
'sh ' +
|
// match couchbase, pdo_oci, oci8, http, pecl_http
|
||||||
path.join(__dirname, '../src/scripts/ext/gearman.sh') +
|
// match 5.3ioncube...7.4ioncube, 5.3geos...7.4geos
|
||||||
' ' +
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
version +
|
// match 5.6gearman...8.1gearman
|
||||||
pipe;
|
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
break;
|
version_extension
|
||||||
// match 7.0phalcon3...7.3phalcon3 or 7.2phalcon4...7.4phalcon4
|
):
|
||||||
|
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
||||||
|
version_extension
|
||||||
|
):
|
||||||
|
case /^couchbase$|^pdo_oci$|^oci8$|^http|^pecl_http|^pdo_firebird$/.test(
|
||||||
|
extension
|
||||||
|
):
|
||||||
|
case /^(5\.6|7\.[0-4]|8\.0)intl-[\d]+\.[\d]+$/.test(version_extension):
|
||||||
|
case /^(5\.[3-6]|7\.[0-4])(ioncube|geos)$/.test(version_extension):
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
script +=
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-9])gearman$/.test(version_extension):
|
||||||
'\nsh ' +
|
add_script += await utils.customPackage(
|
||||||
path.join(__dirname, '../src/scripts/ext/phalcon.sh') +
|
ext_name,
|
||||||
' ' +
|
'ext',
|
||||||
extension +
|
extension,
|
||||||
' ' +
|
'linux'
|
||||||
version;
|
);
|
||||||
return;
|
return;
|
||||||
// match 7.0xdebug..7.4xdebug
|
// match pre-release versions. For example - xdebug-beta
|
||||||
case /^7\.[0-4]xdebug$/.test(version_extension):
|
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
||||||
script +=
|
add_script += await utils.joins(
|
||||||
'\nupdate_extension xdebug 2.9.0' +
|
'\nadd_unstable_extension',
|
||||||
pipe +
|
ext_name,
|
||||||
'\n' +
|
ext_version,
|
||||||
(await utils.addLog('$tick', 'xdebug', 'Enabled', 'linux'));
|
ext_prefix
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
|
// match extensions from GitHub. Do this before checking for semver as
|
||||||
|
// the version may match that as well
|
||||||
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
|
matches = /.+-(.+)\/(.+)@(.+)/.exec(extension) as RegExpExecArray;
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_extension_from_github',
|
||||||
|
ext_name,
|
||||||
|
matches[1],
|
||||||
|
matches[2],
|
||||||
|
matches[3],
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match semver versions
|
||||||
|
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_pecl_extension',
|
||||||
|
ext_name,
|
||||||
|
ext_version,
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match 5.3pcov to 7.0pcov
|
||||||
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
|
add_script += await utils.getUnsupportedLog('pcov', version, 'linux');
|
||||||
|
return;
|
||||||
|
// match 7.2xdebug2...7.4xdebug2
|
||||||
|
case /^7\.[2-4]xdebug2$/.test(version_extension):
|
||||||
|
add_script += await utils.joins(
|
||||||
|
'\nadd_pecl_extension',
|
||||||
|
'xdebug',
|
||||||
|
'2.9.8',
|
||||||
|
ext_prefix
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
// match pdo extensions
|
||||||
|
case /^pdo[_-].+/.test(extension):
|
||||||
|
extension = extension.replace(/pdo[_-]|3/, '');
|
||||||
|
add_script += '\nadd_pdo_extension ' + extension;
|
||||||
|
return;
|
||||||
|
// match sqlite
|
||||||
|
case /^sqlite$/.test(extension):
|
||||||
|
extension = 'sqlite3';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
install_command =
|
|
||||||
'sudo DEBIAN_FRONTEND=noninteractive apt-get install -y php' +
|
|
||||||
version +
|
|
||||||
'-' +
|
|
||||||
extension.replace('pdo_', '').replace('pdo-', '') +
|
|
||||||
pipe;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
script +=
|
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
||||||
'\nadd_extension ' + extension + ' "' + install_command + '" ' + prefix;
|
|
||||||
});
|
});
|
||||||
return script;
|
return add_script + remove_script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -194,7 +337,7 @@ export async function addExtensionLinux(
|
|||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
* @param os_version
|
* @param os_version
|
||||||
* @param log_prefix
|
* @param no_step
|
||||||
*/
|
*/
|
||||||
export async function addExtension(
|
export async function addExtension(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
@ -202,25 +345,25 @@ export async function addExtension(
|
|||||||
os_version: string,
|
os_version: string,
|
||||||
no_step = false
|
no_step = false
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const pipe: string = await utils.suppressOutput(os_version);
|
const log: string = await utils.stepLog('Setup Extensions', os_version);
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
switch (no_step) {
|
switch (no_step) {
|
||||||
case true:
|
case true:
|
||||||
script += (await utils.stepLog('Setup Extensions', os_version)) + pipe;
|
script += log + (await utils.suppressOutput(os_version));
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
default:
|
default:
|
||||||
script += await utils.stepLog('Setup Extensions', os_version);
|
script += log;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (os_version) {
|
switch (os_version) {
|
||||||
case 'win32':
|
case 'win32':
|
||||||
return script + (await addExtensionWindows(extension_csv, version, pipe));
|
return script + (await addExtensionWindows(extension_csv, version));
|
||||||
case 'darwin':
|
case 'darwin':
|
||||||
return script + (await addExtensionDarwin(extension_csv, version, pipe));
|
return script + (await addExtensionDarwin(extension_csv, version));
|
||||||
case 'linux':
|
case 'linux':
|
||||||
return script + (await addExtensionLinux(extension_csv, version, pipe));
|
return script + (await addExtensionLinux(extension_csv, version));
|
||||||
default:
|
default:
|
||||||
return await utils.log(
|
return await utils.log(
|
||||||
'Platform ' + os_version + ' is not supported',
|
'Platform ' + os_version + ' is not supported',
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import {exec} from '@actions/exec/lib/exec';
|
import {exec} from '@actions/exec';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
import * as coverage from './coverage';
|
import * as coverage from './coverage';
|
||||||
import * as extensions from './extensions';
|
import * as extensions from './extensions';
|
||||||
|
import * as sapi from './sapi';
|
||||||
import * as tools from './tools';
|
import * as tools from './tools';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
import * as matchers from './matchers';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the script
|
* Build the script
|
||||||
@ -14,41 +14,38 @@ import * as matchers from './matchers';
|
|||||||
* @param version
|
* @param version
|
||||||
* @param os_version
|
* @param os_version
|
||||||
*/
|
*/
|
||||||
export async function build(
|
export async function getScript(
|
||||||
filename: string,
|
filename: string,
|
||||||
version: string,
|
version: string,
|
||||||
os_version: string
|
os_version: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
|
const name = 'setup-php';
|
||||||
|
const url = 'https://setup-php.com/support';
|
||||||
// taking inputs
|
// taking inputs
|
||||||
const extension_csv: string =
|
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
|
||||||
(await utils.getInput('extensions', false)) ||
|
const extension_csv: string = await utils.getInput('extensions', false);
|
||||||
(await utils.getInput('extension', false)) ||
|
const ini_values_csv: string = await utils.getInput('ini-values', false);
|
||||||
(await utils.getInput('extension-csv', false));
|
|
||||||
const ini_values_csv: string =
|
|
||||||
(await utils.getInput('ini-values', false)) ||
|
|
||||||
(await utils.getInput('ini-values-csv', false));
|
|
||||||
const coverage_driver: string = await utils.getInput('coverage', false);
|
const coverage_driver: string = await utils.getInput('coverage', false);
|
||||||
const pecl: string = await utils.getInput('pecl', false);
|
const tools_csv: string = await utils.getInput('tools', false);
|
||||||
let tools_csv: string = await utils.getInput('tools', false);
|
const sapi_csv: string = await utils.getInput('sapi', false);
|
||||||
if (
|
|
||||||
pecl == 'true' ||
|
let script: string = await utils.readScript(filename);
|
||||||
/.*-(beta|alpha|devel|snapshot).*/.test(extension_csv)
|
if (sapi_csv) {
|
||||||
) {
|
script += await sapi.addSAPI(sapi_csv, os_version);
|
||||||
tools_csv = 'pecl, ' + tools_csv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let script: string = await utils.readScript(filename, version, os_version);
|
|
||||||
script += await tools.addTools(tools_csv, version, os_version);
|
script += await tools.addTools(tools_csv, version, os_version);
|
||||||
|
|
||||||
if (extension_csv) {
|
if (extension_csv) {
|
||||||
script += await extensions.addExtension(extension_csv, version, os_version);
|
script += await extensions.addExtension(extension_csv, version, os_version);
|
||||||
}
|
}
|
||||||
if (ini_values_csv) {
|
|
||||||
script += await config.addINIValues(ini_values_csv, os_version);
|
|
||||||
}
|
|
||||||
if (coverage_driver) {
|
if (coverage_driver) {
|
||||||
script += await coverage.addCoverage(coverage_driver, version, os_version);
|
script += await coverage.addCoverage(coverage_driver, version, os_version);
|
||||||
}
|
}
|
||||||
|
if (ini_values_csv) {
|
||||||
|
script += await config.addINIValues(ini_values_csv, os_version);
|
||||||
|
}
|
||||||
|
|
||||||
|
script += '\n' + (await utils.stepLog('Support this project', os_version));
|
||||||
|
script += '\n' + (await utils.addLog('$tick', name, url, os_version));
|
||||||
|
|
||||||
return await utils.writeScript(filename, script);
|
return await utils.writeScript(filename, script);
|
||||||
}
|
}
|
||||||
@ -58,27 +55,26 @@ export async function build(
|
|||||||
*/
|
*/
|
||||||
export async function run(): Promise<void> {
|
export async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
const os_version: string = process.platform;
|
const version: string = await utils.parseVersion(
|
||||||
let version: string = await utils.getInput('php-version', true);
|
await utils.getInput('php-version', true)
|
||||||
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
|
);
|
||||||
// check the os version and run the respective script
|
if (version) {
|
||||||
let script_path = '';
|
const os_version: string = process.platform;
|
||||||
switch (os_version) {
|
const tool = await utils.scriptTool(os_version);
|
||||||
case 'darwin':
|
const script = os_version + (await utils.scriptExtension(os_version));
|
||||||
case 'linux':
|
const location = await getScript(script, version, os_version);
|
||||||
script_path = await build(os_version + '.sh', version, os_version);
|
await exec(await utils.joins(tool, location, version, __dirname));
|
||||||
await exec('sh ' + script_path + ' ' + version + ' ' + __dirname);
|
} else {
|
||||||
break;
|
core.setFailed('Unable to get the PHP version');
|
||||||
case 'win32':
|
|
||||||
script_path = await build('win32.ps1', version, os_version);
|
|
||||||
await exec('pwsh ' + script_path + ' ' + version + ' ' + __dirname);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
await matchers.addMatchers();
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// call the run function
|
// call the run function
|
||||||
run();
|
(async () => {
|
||||||
|
await run();
|
||||||
|
})().catch(error => {
|
||||||
|
core.setFailed(error.message);
|
||||||
|
});
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
import * as path from 'path';
|
|
||||||
import * as utils from './utils';
|
|
||||||
import * as io from '@actions/io';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cache json files for problem matchers
|
|
||||||
*/
|
|
||||||
export async function addMatchers(): Promise<void> {
|
|
||||||
const config_path = path.join(
|
|
||||||
__dirname,
|
|
||||||
'..',
|
|
||||||
'src',
|
|
||||||
'configs',
|
|
||||||
'phpunit.json'
|
|
||||||
);
|
|
||||||
const runner_dir: string = await utils.getInput('RUNNER_TOOL_CACHE', false);
|
|
||||||
await io.cp(config_path, runner_dir);
|
|
||||||
}
|
|
51
src/sapi.ts
Normal file
51
src/sapi.ts
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import * as utils from './utils';
|
||||||
|
|
||||||
|
export async function getSapiList(sapi_csv: string): Promise<Array<string>> {
|
||||||
|
const sapi_list: Array<string> = await utils.packageArray(sapi_csv);
|
||||||
|
const servers: Array<string> = sapi_list.filter(sapi => /.*:.*/.test(sapi));
|
||||||
|
return [servers[servers.length - 1]].concat(
|
||||||
|
sapi_list.filter(sapi => /.*[^:].*/.test(sapi))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to set sapi
|
||||||
|
*
|
||||||
|
* @param sapi_csv
|
||||||
|
* @param os_version
|
||||||
|
*/
|
||||||
|
export async function addSAPI(
|
||||||
|
sapi_csv: string,
|
||||||
|
os_version: string
|
||||||
|
): Promise<string> {
|
||||||
|
let script: string = '\n' + (await utils.stepLog('Setup SAPI', os_version));
|
||||||
|
let sapi_list: Array<string>;
|
||||||
|
switch (true) {
|
||||||
|
case sapi_csv.split(':').length - 1 > 1:
|
||||||
|
sapi_list = await getSapiList(sapi_csv);
|
||||||
|
script +=
|
||||||
|
'\n' +
|
||||||
|
utils.log(
|
||||||
|
'Multiple SAPI with web servers specified, choosing the last one ' +
|
||||||
|
sapi_list[0],
|
||||||
|
os_version,
|
||||||
|
'warning'
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sapi_list = await utils.packageArray(sapi_csv);
|
||||||
|
}
|
||||||
|
await utils.asyncForEach(sapi_list, async function (sapi: string) {
|
||||||
|
sapi = sapi.toLowerCase();
|
||||||
|
switch (os_version) {
|
||||||
|
case 'linux':
|
||||||
|
case 'darwin':
|
||||||
|
script += '\nadd_sapi ' + sapi;
|
||||||
|
break;
|
||||||
|
case 'win32':
|
||||||
|
script += '\nAdd-Sapi ' + sapi;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return script;
|
||||||
|
}
|
294
src/scripts/common.sh
Normal file
294
src/scripts/common.sh
Normal file
@ -0,0 +1,294 @@
|
|||||||
|
# Variables
|
||||||
|
export tick="✓"
|
||||||
|
export cross="✗"
|
||||||
|
export curl_opts=(-sL)
|
||||||
|
export old_versions="5.[3-5]"
|
||||||
|
export jit_versions="8.[0-9]"
|
||||||
|
export nightly_versions="8.[1-9]"
|
||||||
|
export xdebug3_versions="7.[2-4]|8.[0-9]"
|
||||||
|
export tool_path_dir="/usr/local/bin"
|
||||||
|
export composer_bin="$HOME/.composer/vendor/bin"
|
||||||
|
export composer_json="$HOME/.composer/composer.json"
|
||||||
|
export composer_lock="$HOME/.composer/composer.lock"
|
||||||
|
export latest="releases/latest/download"
|
||||||
|
export github="https://github.com/shivammathur"
|
||||||
|
export bintray="https://dl.bintray/shivammathur"
|
||||||
|
|
||||||
|
# Function to log start of a operation.
|
||||||
|
step_log() {
|
||||||
|
message=$1
|
||||||
|
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to log result of a operation.
|
||||||
|
add_log() {
|
||||||
|
mark=$1
|
||||||
|
subject=$2
|
||||||
|
message=$3
|
||||||
|
if [ "$mark" = "$tick" ]; then
|
||||||
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
else
|
||||||
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
[ "$fail_fast" = "true" ] && exit 1;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to log result of installing extension.
|
||||||
|
add_extension_log() {
|
||||||
|
extension=$1
|
||||||
|
status=$2
|
||||||
|
extension_name=$(echo "$extension" | cut -d '-' -f 1)
|
||||||
|
(
|
||||||
|
check_extension "$extension_name" && add_log "$tick" "$extension_name" "$status"
|
||||||
|
) || add_log "$cross" "$extension_name" "Could not install $extension on PHP ${semver:?}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to read env inputs.
|
||||||
|
read_env() {
|
||||||
|
[[ -z "${update}" ]] && update='false' && UPDATE='false' || update="${update}"
|
||||||
|
[ "$update" = false ] && [[ -n ${UPDATE} ]] && update="${UPDATE}"
|
||||||
|
[[ -z "${runner}" ]] && runner='github' && RUNNER='github' || runner="${runner}"
|
||||||
|
[ "$runner" = false ] && [[ -n ${RUNNER} ]] && runner="${RUNNER}"
|
||||||
|
[[ -z "${fail_fast}" ]] && fail_fast='false' || fail_fast="${fail_fast}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to download a file using cURL.
|
||||||
|
# mode: -s pipe to stdout, -v save file and return status code
|
||||||
|
# execute: -e save file as executable
|
||||||
|
get() {
|
||||||
|
mode=$1
|
||||||
|
execute=$2
|
||||||
|
file_path=$3
|
||||||
|
shift 3
|
||||||
|
links=("$@")
|
||||||
|
if [ "$mode" = "-s" ]; then
|
||||||
|
sudo curl "${curl_opts[@]}" "${links[0]}"
|
||||||
|
else
|
||||||
|
for link in "${links[@]}"; do
|
||||||
|
status_code=$(sudo curl -w "%{http_code}" -o "$file_path" "${curl_opts[@]}" "$link")
|
||||||
|
[ "$status_code" = "200" ] && break
|
||||||
|
done
|
||||||
|
[ "$execute" = "-e" ] && sudo chmod a+x "$file_path"
|
||||||
|
[ "$mode" = "-v" ] && echo "$status_code"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to download and run scripts from GitHub releases with bintray fallback.
|
||||||
|
run_script() {
|
||||||
|
repo=$1
|
||||||
|
shift
|
||||||
|
args=("$@")
|
||||||
|
get -q -e /tmp/install.sh "$github/$repo/$latest/install.sh" "$bintray/php/$repo.sh"
|
||||||
|
bash /tmp/install.sh "${args[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install required packages on self-hosted runners.
|
||||||
|
self_hosted_setup() {
|
||||||
|
if [ "$runner" = "self-hosted" ]; then
|
||||||
|
if [[ "${version:?}" =~ $old_versions ]]; then
|
||||||
|
add_log "$cross" "PHP" "PHP $version is not supported on self-hosted runner"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
self_hosted_helper >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to test if extension is loaded.
|
||||||
|
check_extension() {
|
||||||
|
extension=$1
|
||||||
|
if [ "$extension" != "mysql" ]; then
|
||||||
|
php -m | grep -i -q -w "$extension"
|
||||||
|
else
|
||||||
|
php -m | grep -i -q "$extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable existing extensions.
|
||||||
|
enable_extension() {
|
||||||
|
if [ -e /tmp/setup_php_dismod ] && grep -q "$1" /tmp/setup_php_dismod; then
|
||||||
|
sudo phpenmod -v "$version" "$1" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
if ! check_extension "$1" && [ -e "${ext_dir:?}/$1.so" ]; then
|
||||||
|
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure PHP
|
||||||
|
configure_php() {
|
||||||
|
(
|
||||||
|
echo -e "date.timezone=UTC\nmemory_limit=-1"
|
||||||
|
[[ "$version" =~ $jit_versions ]] && echo -e "opcache.enable=1\nopcache.jit_buffer_size=256M\nopcache.jit=1235"
|
||||||
|
[[ "$version" =~ $xdebug3_versions ]] && echo -e "xdebug.mode=coverage"
|
||||||
|
) | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure PECL.
|
||||||
|
configure_pecl() {
|
||||||
|
if ! [ -e /tmp/pecl_config ]; then
|
||||||
|
if ! command -v pecl >/dev/null || ! command -v pear >/dev/null; then
|
||||||
|
add_pecl >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
for script in pear pecl; do
|
||||||
|
sudo "$script" config-set php_ini "${pecl_file:-${ini_file[@]}}"
|
||||||
|
sudo "$script" channel-update "$script".php.net
|
||||||
|
done
|
||||||
|
echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get the PECL version of an extension.
|
||||||
|
get_pecl_version() {
|
||||||
|
extension=$1
|
||||||
|
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
||||||
|
pecl_rest='https://pecl.php.net/rest/r/'
|
||||||
|
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
||||||
|
pecl_version=$(echo "$response" | grep -m 1 -Eio "([0-9]+\.[0-9]+\.[0-9]+${stability}[0-9]+)")
|
||||||
|
if [ ! "$pecl_version" ]; then
|
||||||
|
pecl_version=$(echo "$response" | grep -m 1 -Eo "([0-9]+\.[0-9]+\.[0-9]+)")
|
||||||
|
fi
|
||||||
|
echo "$pecl_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install PECL extensions and accept default options
|
||||||
|
pecl_install() {
|
||||||
|
local extension=$1
|
||||||
|
configure_pecl >/dev/null 2>&1
|
||||||
|
yes '' 2>/dev/null | sudo pecl install -f "$extension" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup pre-release extensions using PECL.
|
||||||
|
add_unstable_extension() {
|
||||||
|
extension=$1
|
||||||
|
stability=$2
|
||||||
|
prefix=$3
|
||||||
|
pecl_version=$(get_pecl_version "$extension" "$stability")
|
||||||
|
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to extract tool version.
|
||||||
|
get_tool_version() {
|
||||||
|
tool=$1
|
||||||
|
param=$2
|
||||||
|
version_regex="[0-9]+((\.{1}[0-9]+)+)(\.{0})(-[a-zA-Z0-9]+){0,1}"
|
||||||
|
if [ "$tool" = "composer" ]; then
|
||||||
|
if [ "$param" != "snapshot" ]; then
|
||||||
|
composer_version="$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")"
|
||||||
|
else
|
||||||
|
composer_version="$(grep -Ea "const\sBRANCH_ALIAS_VERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")+$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "[a-zA-z0-9]+" | tail -n 1)"
|
||||||
|
fi
|
||||||
|
echo "$composer_version" | sudo tee /tmp/composer_version
|
||||||
|
else
|
||||||
|
$tool "$param" 2>/dev/null | sed -Ee "s/[Cc]omposer(.)?$version_regex//g" | grep -Eo "$version_regex" | head -n 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to configure composer
|
||||||
|
configure_composer() {
|
||||||
|
tool_path=$1
|
||||||
|
sudo ln -sf "$tool_path" "$tool_path.phar"
|
||||||
|
php -r "try {\$p=new Phar('$tool_path.phar', 0);exit(0);} catch(Exception \$e) {exit(1);}"
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
add_log "$cross" "composer" "Could not download composer"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! [ -e "$composer_json" ]; then
|
||||||
|
echo '{}' | tee "$composer_json" >/dev/null 2>&1
|
||||||
|
sudo chmod 644 "$composer_json"
|
||||||
|
fi
|
||||||
|
composer -q config -g process-timeout 0
|
||||||
|
echo "$composer_bin" >> "$GITHUB_PATH"
|
||||||
|
if [ -n "$COMPOSER_TOKEN" ]; then
|
||||||
|
composer -q config -g github-oauth.github.com "$COMPOSER_TOKEN"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup a remote tool.
|
||||||
|
add_tool() {
|
||||||
|
url=$1
|
||||||
|
tool=$2
|
||||||
|
ver_param=$3
|
||||||
|
tool_path="$tool_path_dir/$tool"
|
||||||
|
if ! [[ "$PATH" =~ $tool_path_dir ]] ; then
|
||||||
|
export PATH=$PATH:"$tool_path_dir"
|
||||||
|
echo "export PATH=\$PATH:$tool_path_dir" | sudo tee -a "$GITHUB_ENV" >/dev/null
|
||||||
|
fi
|
||||||
|
if [ ! -e "$tool_path" ]; then
|
||||||
|
rm -rf "$tool_path"
|
||||||
|
fi
|
||||||
|
IFS="," read -r -a url <<< "$url"
|
||||||
|
status_code=$(get -v -e "$tool_path" "${url[@]}")
|
||||||
|
if [ "$status_code" != "200" ] && [[ "${url[0]}" =~ .*github.com.*releases.*latest.* ]]; then
|
||||||
|
url[0]="${url[0]//releases\/latest\/download/releases/download/$(get -s -n "" "$(echo "${url[0]}" | cut -d '/' -f '1-5')/releases" | grep -Eo -m 1 "([0-9]+\.[0-9]+\.[0-9]+)/$(echo "${url[0]}" | sed -e "s/.*\///")" | cut -d '/' -f 1)}"
|
||||||
|
status_code=$(get -v -e "$tool_path" "${url[0]}")
|
||||||
|
fi
|
||||||
|
if [ "$status_code" = "200" ]; then
|
||||||
|
add_tools_helper "$tool"
|
||||||
|
tool_version=$(get_tool_version "$tool" "$ver_param")
|
||||||
|
add_log "$tick" "$tool" "Added $tool $tool_version"
|
||||||
|
else
|
||||||
|
add_log "$cross" "$tool" "Could not setup $tool"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup a tool using composer.
|
||||||
|
add_composertool() {
|
||||||
|
tool=$1
|
||||||
|
release=$2
|
||||||
|
prefix=$3
|
||||||
|
if [[ "$tool" =~ prestissimo|composer-prefetcher ]]; then
|
||||||
|
composer_version=$(cat /tmp/composer_version)
|
||||||
|
if [ "$(echo "$composer_version" | cut -d'.' -f 1)" != "1" ]; then
|
||||||
|
echo "::warning:: Skipping $tool, as it does not support Composer $composer_version. Specify composer:v1 in tools to use $tool"
|
||||||
|
add_log "$cross" "$tool" "Skipped"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
sudo rm -f "$composer_lock" >/dev/null 2>&1 || true
|
||||||
|
composer global require "$prefix$release" >/dev/null 2>&1
|
||||||
|
json=$(grep "$prefix$tool" "$composer_json") &&
|
||||||
|
tool_version=$(get_tool_version 'echo' "$json") &&
|
||||||
|
add_log "$tick" "$tool" "Added $tool $tool_version"
|
||||||
|
) || add_log "$cross" "$tool" "Could not setup $tool"
|
||||||
|
add_tools_helper "$tool"
|
||||||
|
if [ -e "$composer_bin/composer" ]; then
|
||||||
|
sudo cp -p "$tool_path_dir/composer" "$composer_bin"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get versions of PHP binaries in semver format.
|
||||||
|
php_semver() {
|
||||||
|
binary=${1:-"php$version"}
|
||||||
|
arg=${2:-'-v'}
|
||||||
|
"$binary" "$arg" | grep -Eo -m 1 "[0-9]+\.[0-9]+\.[0-9]+" | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get the tag for a php version.
|
||||||
|
php_src_tag() {
|
||||||
|
php_src_tag='master'
|
||||||
|
if ! [[ ${version:?} =~ $nightly_versions ]]; then
|
||||||
|
php_src_tag="php-$semver"
|
||||||
|
fi
|
||||||
|
echo "$php_src_tag"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install extension from a GitHub repository
|
||||||
|
add_extension_from_github() {
|
||||||
|
extension=$1
|
||||||
|
org=$2
|
||||||
|
repo=$3
|
||||||
|
release=$4
|
||||||
|
prefix=$5
|
||||||
|
(
|
||||||
|
add_devtools phpize
|
||||||
|
delete_extension "$extension"
|
||||||
|
git clone -n https://github.com/"$org"/"$repo" /tmp/"$repo-$release" || exit 1
|
||||||
|
cd /tmp/"$repo-$release" || exit 1
|
||||||
|
git checkout "$release" || exit 1
|
||||||
|
git submodule update --init --recursive || exit 1
|
||||||
|
phpize && ./configure && make -j"$(nproc)" && sudo make install
|
||||||
|
enable_extension "$extension" "$prefix"
|
||||||
|
) >/dev/null 2>&1
|
||||||
|
add_extension_log "$extension-$org/$repo@$release" "Installed and enabled"
|
||||||
|
}
|
@ -1,162 +1,200 @@
|
|||||||
# Function to log start of a operation
|
# Function to setup environment for self-hosted runners.
|
||||||
step_log() {
|
self_hosted_helper() {
|
||||||
message=$1
|
if ! command -v brew >/dev/null; then
|
||||||
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
step_log "Setup Brew"
|
||||||
}
|
get -q -e "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/master/install.sh" && /tmp/install.sh >/dev/null 2>&1
|
||||||
|
add_log "${tick:?}" "Brew" "Installed Homebrew"
|
||||||
# Function to log result of a operation
|
|
||||||
add_log() {
|
|
||||||
mark=$1
|
|
||||||
subject=$2
|
|
||||||
message=$3
|
|
||||||
if [ "$mark" = "$tick" ]; then
|
|
||||||
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
||||||
else
|
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to remove extensions
|
# Function to remove extensions.
|
||||||
remove_extension() {
|
remove_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
sudo sed -i '' "/$extension/d" "$ini_file"
|
if check_extension "$extension"; then
|
||||||
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
||||||
|
sudo rm -rf "${scan_dir:?}"/*"$extension"* "${ext_dir:?}"/"$extension".so >/dev/null 2>&1
|
||||||
|
(! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Removed") ||
|
||||||
|
add_log "${cross:?}" ":$extension" "Could not remove $extension on PHP ${semver:?}"
|
||||||
|
else
|
||||||
|
add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install a specific version of PECL extension.
|
||||||
|
add_pecl_extension() {
|
||||||
|
extension=$1
|
||||||
|
pecl_version=$2
|
||||||
|
prefix=$3
|
||||||
|
enable_extension "$extension" "$prefix"
|
||||||
|
if [[ $pecl_version =~ .*(alpha|beta|rc|snapshot|preview).* ]]; then
|
||||||
|
pecl_version=$(get_pecl_version "$extension" "$pecl_version")
|
||||||
|
fi
|
||||||
|
ext_version=$(php -r "echo phpversion('$extension');")
|
||||||
|
if [ "$ext_version" = "$pecl_version" ]; then
|
||||||
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
|
else
|
||||||
|
remove_extension "$extension" >/dev/null 2>&1
|
||||||
|
pecl_install "$extension-$pecl_version"
|
||||||
|
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to fetch a brew tap
|
||||||
|
fetch_brew_tap() {
|
||||||
|
tap=$1
|
||||||
|
tap_user=$(dirname "$tap")
|
||||||
|
tap_name=$(basename "$tap")
|
||||||
|
mkdir -p "$tap_dir/$tap_user"
|
||||||
|
get -s -n "" "https://github.com/$tap/archive/master.tar.gz" | sudo tar -xzf - -C "$tap_dir/$tap_user"
|
||||||
|
if [ -d "$tap_dir/$tap_user/$tap_name-master" ]; then
|
||||||
|
sudo mv "$tap_dir/$tap_user/$tap_name-master" "$tap_dir/$tap_user/$tap_name"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add a brew tap.
|
||||||
|
add_brew_tap() {
|
||||||
|
tap=$1
|
||||||
|
if ! [ -d "$tap_dir/$tap" ]; then
|
||||||
|
if [ "${runner:?}" = "self-hosted" ]; then
|
||||||
|
brew tap --shallow "$tap" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
fetch_brew_tap "$tap" >/dev/null 2>&1
|
||||||
|
if ! [ -d "$tap_dir/$tap" ]; then
|
||||||
|
brew tap --shallow "$tap" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install a php extension from shivammathur/extensions tap.
|
||||||
|
add_brew_extension() {
|
||||||
|
formula=$1
|
||||||
|
prefix=$2
|
||||||
|
extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
||||||
|
enable_extension "$extension" "$prefix"
|
||||||
|
if check_extension "$extension"; then
|
||||||
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
|
else
|
||||||
|
add_brew_tap shivammathur/homebrew-php
|
||||||
|
add_brew_tap shivammathur/homebrew-extensions
|
||||||
|
sudo mv "$tap_dir"/shivammathur/homebrew-extensions/.github/deps/"$formula"/* "$tap_dir/homebrew/homebrew-core/Formula/" 2>/dev/null || true
|
||||||
|
brew install "$formula@$version" >/dev/null 2>&1
|
||||||
|
sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
|
||||||
|
add_extension_log "$extension" "Installed and enabled"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup extensions
|
# Function to setup extensions
|
||||||
add_extension() {
|
add_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
install_command=$2
|
prefix=$2
|
||||||
prefix=$3
|
enable_extension "$extension" "$prefix"
|
||||||
if ! php -m | grep -i -q -w "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
if check_extension "$extension"; then
|
||||||
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
elif php -m | grep -i -q -w "$extension"; then
|
|
||||||
add_log "$tick" "$extension" "Enabled"
|
|
||||||
elif ! php -m | grep -i -q -w "$extension"; then
|
|
||||||
(eval "$install_command" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fuction to get the PECL version
|
|
||||||
get_pecl_version() {
|
|
||||||
extension=$1
|
|
||||||
stability=$2
|
|
||||||
pecl_rest='https://pecl.php.net/rest/r/'
|
|
||||||
response=$(curl -q -sSL "$pecl_rest$extension"/allreleases.xml)
|
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Eo "(\d*\.\d*\.\d*$stability\d*)")
|
|
||||||
if [ ! "$pecl_version" ]; then
|
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Eo "(\d*\.\d*\.\d*)")
|
|
||||||
fi
|
|
||||||
echo "$pecl_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to pre-release extensions using PECL
|
|
||||||
add_unstable_extension() {
|
|
||||||
extension=$1
|
|
||||||
stability=$2
|
|
||||||
prefix=$3
|
|
||||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
|
||||||
if ! php -m | grep -i -q -w "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
|
||||||
extension_version=$(php -d="$prefix=$extension" -r "echo phpversion('$extension');")
|
|
||||||
if [ "$extension_version" = "$pecl_version" ]; then
|
|
||||||
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
|
||||||
else
|
|
||||||
remove_extension "$extension"
|
|
||||||
add_extension "$extension" "sudo pecl install -f $extension-$pecl_version" "$prefix"
|
|
||||||
fi
|
|
||||||
elif php -m | grep -i -q -w "$extension"; then
|
|
||||||
extension_version=$(php -r "echo phpversion('$extension');")
|
|
||||||
if [ "$extension_version" = "$pecl_version" ]; then
|
|
||||||
add_log "$tick" "$extension" "Enabled"
|
|
||||||
else
|
|
||||||
remove_extension "$extension"
|
|
||||||
add_extension "$extension" "sudo pecl install -f $extension-$pecl_version" "$prefix"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
add_extension "$extension" "sudo pecl install -f $extension-$pecl_version" "$prefix"
|
[[ "$version" =~ 5.[4-5] ]] && [ "$extension" = "imagick" ] && brew install pkg-config imagemagick >/dev/null 2>&1
|
||||||
|
pecl_install "$extension" >/dev/null 2>&1 &&
|
||||||
|
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
||||||
|
add_extension_log "$extension" "Installed and enabled"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup a remote tool
|
# Function to handle request to add phpize and php-config.
|
||||||
add_tool() {
|
add_devtools() {
|
||||||
url=$1
|
|
||||||
tool=$2
|
|
||||||
if [ "$tool" = "composer" ]; then
|
|
||||||
brew install composer >/dev/null 2>&1
|
|
||||||
composer -q global config process-timeout 0
|
|
||||||
add_log "$tick" "$tool" "Added"
|
|
||||||
else
|
|
||||||
tool_path=/usr/local/bin/"$tool"
|
|
||||||
if [ ! -e "$tool_path" ]; then
|
|
||||||
rm -rf "$tool_path"
|
|
||||||
fi
|
|
||||||
|
|
||||||
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" -L "$url")
|
|
||||||
if [ "$status_code" = "200" ]; then
|
|
||||||
sudo chmod a+x "$tool_path"
|
|
||||||
if [ "$tool" = "phive" ]; then
|
|
||||||
add_extension curl >/dev/null 2>&1
|
|
||||||
add_extension mbstring >/dev/null 2>&1
|
|
||||||
add_extension xml >/dev/null 2>&1
|
|
||||||
elif [ "$tool" = "cs2pr" ]; then
|
|
||||||
sudo sed -i '' 's/exit(9)/exit(0)/' "$tool_path"
|
|
||||||
tr -d '\r' < "$tool_path" | sudo tee "$tool_path" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
add_log "$tick" "$tool" "Added"
|
|
||||||
else
|
|
||||||
add_log "$cross" "$tool" "Could not setup $tool"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add a tool using composer
|
|
||||||
add_composer_tool() {
|
|
||||||
tool=$1
|
tool=$1
|
||||||
release=$2
|
add_log "${tick:?}" "$tool" "Added $tool $semver"
|
||||||
prefix=$3
|
|
||||||
(
|
|
||||||
composer global require "$prefix$release" >/dev/null 2>&1 &&
|
|
||||||
sudo ln -sf "$(composer -q global config home)"/vendor/bin/"$tool" /usr/local/bin/"$tool" &&
|
|
||||||
add_log "$tick" "$tool" "Added"
|
|
||||||
) || add_log "$cross" "$tool" "Could not setup $tool"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to configure PECL
|
# Function to handle request to add PECL.
|
||||||
configure_pecl() {
|
|
||||||
for tool in pear pecl; do
|
|
||||||
sudo "$tool" config-set php_ini "$ini_file" >/dev/null 2>&1
|
|
||||||
sudo "$tool" config-set auto_discover 1 >/dev/null 2>&1
|
|
||||||
sudo "$tool" channel-update "$tool".php.net >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to log PECL, it is installed along with PHP
|
|
||||||
add_pecl() {
|
add_pecl() {
|
||||||
add_log "$tick" "PECL" "Added"
|
pecl_version=$(get_tool_version "pecl" "version")
|
||||||
|
add_log "${tick:?}" "PECL" "Found PECL $pecl_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup PHP and composer
|
# Function to link all libraries of a formula
|
||||||
setup_php_and_composer() {
|
link_libraries() {
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
|
formula=$1
|
||||||
brew tap shivammathur/homebrew-php >/dev/null 2>&1
|
formula_prefix="$(brew --prefix "$formula")"
|
||||||
brew install shivammathur/php/php@"$version" >/dev/null 2>&1
|
sudo mkdir -p "$formula_prefix"/lib
|
||||||
brew link --force --overwrite php@"$version" >/dev/null 2>&1
|
sudo cp -a "$formula_prefix"/lib/*.dylib "$brew_prefix/lib" 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
update_dependencies_helper() {
|
||||||
|
formula=$1
|
||||||
|
get -q -n "$tap_dir/homebrew/homebrew-core/Formula/$formula.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$formula.rb"
|
||||||
|
link_libraries "$formula"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to update dependencies.
|
||||||
|
update_dependencies() {
|
||||||
|
if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
||||||
|
while read -r formula; do
|
||||||
|
update_dependencies_helper "$formula" &
|
||||||
|
to_wait+=($!)
|
||||||
|
done <"$tap_dir/shivammathur/homebrew-php/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
||||||
|
wait "${to_wait[@]}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup PHP 5.6 and newer using Homebrew.
|
||||||
|
add_php() {
|
||||||
|
action=$1
|
||||||
|
add_brew_tap shivammathur/homebrew-php
|
||||||
|
update_dependencies
|
||||||
|
if ! [[ "$(find "$(brew --cellar)"/php/ -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]] && [ "$action" != "upgrade" ]; then
|
||||||
|
brew unlink shivammathur/php/php@"$version"
|
||||||
|
else
|
||||||
|
brew upgrade "shivammathur/php/php@$version" 2>/dev/null || brew install "shivammathur/php/php@$version"
|
||||||
|
fi
|
||||||
|
brew link --force --overwrite shivammathur/php/php@"$version"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to Setup PHP
|
||||||
|
setup_php() {
|
||||||
|
step_log "Setup PHP"
|
||||||
|
existing_version=$(php-config --version 2>/dev/null | cut -c 1-3)
|
||||||
|
if [[ "$version" =~ ${old_versions:?} ]]; then
|
||||||
|
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
||||||
|
status="Installed"
|
||||||
|
elif [ "$existing_version" != "$version" ]; then
|
||||||
|
add_php "install" >/dev/null 2>&1
|
||||||
|
status="Installed"
|
||||||
|
elif [ "$existing_version" = "$version" ] && [ "${update:?}" = "true" ]; then
|
||||||
|
add_php "upgrade" >/dev/null 2>&1
|
||||||
|
status="Updated to"
|
||||||
|
else
|
||||||
|
status="Found"
|
||||||
|
fi
|
||||||
|
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
||||||
|
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
||||||
|
configure_php
|
||||||
|
ext_dir=$(php -i | grep -Ei "extension_dir => /" | sed -e "s|.*=> s*||")
|
||||||
|
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
||||||
|
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
||||||
|
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
|
||||||
|
if [ "${semver%.*}" != "$version" ]; then
|
||||||
|
add_log "$cross" "PHP" "Could not setup PHP $version"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
|
||||||
|
add_log "$tick" "PHP" "$status PHP $semver"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
tick="✓"
|
|
||||||
cross="✗"
|
|
||||||
version=$1
|
version=$1
|
||||||
|
dist=$2
|
||||||
|
brew_prefix="$(brew --prefix)"
|
||||||
|
brew_repo="$(brew --repository)"
|
||||||
|
tap_dir="$brew_repo"/Library/Taps
|
||||||
|
scripts="${dist}"/../src/scripts
|
||||||
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
||||||
|
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||||
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||||
|
|
||||||
# Setup PHP and composer
|
# shellcheck source=.
|
||||||
step_log "Setup PHP"
|
. "${scripts:?}"/tools/add_tools.sh
|
||||||
setup_php_and_composer
|
. "${scripts:?}"/common.sh
|
||||||
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
read_env
|
||||||
echo "date.timezone=UTC" >>"$ini_file"
|
self_hosted_setup
|
||||||
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
setup_php
|
||||||
sudo chmod 777 "$ini_file"
|
|
||||||
mkdir -p "$(pecl config-get ext_dir)"
|
|
||||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
|
|
||||||
add_log "$tick" "PHP" "Installed PHP $semver"
|
|
||||||
configure_pecl
|
|
||||||
|
28
src/scripts/ext/blackfire.ps1
Normal file
28
src/scripts/ext/blackfire.ps1
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Function to install blackfire extension.
|
||||||
|
Function Add-Blackfire() {
|
||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[string]
|
||||||
|
$extension
|
||||||
|
)
|
||||||
|
try {
|
||||||
|
$no_dot_version = $version.replace('.', '')
|
||||||
|
$extension_version = $extension.split('-')[1]
|
||||||
|
if ($extension_version -notmatch "\S") {
|
||||||
|
$extension_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).probe.php
|
||||||
|
}
|
||||||
|
if (Test-Path $ext_dir\blackfire.dll) {
|
||||||
|
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||||
|
$status="Enabled"
|
||||||
|
} else {
|
||||||
|
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
||||||
|
Invoke-WebRequest -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${no_dot_version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1
|
||||||
|
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||||
|
$status="Installed and enabled"
|
||||||
|
}
|
||||||
|
Add-Log $tick $extension $status
|
||||||
|
} catch {
|
||||||
|
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
|
||||||
|
}
|
||||||
|
}
|
17
src/scripts/ext/blackfire.sh
Normal file
17
src/scripts/ext/blackfire.sh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Function to install blackfire extension.
|
||||||
|
add_blackfire() {
|
||||||
|
extension=$1
|
||||||
|
version=${version:?}
|
||||||
|
no_dot_version=${version/./}
|
||||||
|
platform=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||||
|
extension_version=$(echo "$extension" | cut -d '-' -f 2)
|
||||||
|
blackfire_ini_file="${pecl_file:-${ini_file[@]}}"
|
||||||
|
if [ ! -e "${ext_dir:?}/blackfire.so" ]; then
|
||||||
|
if [ "$extension_version" = "blackfire" ]; then
|
||||||
|
extension_version=$(get -s -n "" https://blackfire.io/api/v1/releases | grep -Eo 'php":"([0-9]+.[0-9]+.[0-9]+)' | cut -d '"' -f 3)
|
||||||
|
fi
|
||||||
|
get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
echo "extension=blackfire.so" | sudo tee -a "$blackfire_ini_file" >/dev/null 2>&1
|
||||||
|
add_extension_log "$extension-$extension_version" "Installed and enabled"
|
||||||
|
}
|
48
src/scripts/ext/couchbase.sh
Normal file
48
src/scripts/ext/couchbase.sh
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# Function to install libraries required by couchbase
|
||||||
|
add_couchbase_libs() {
|
||||||
|
if [ "$(uname -s)" = "Linux" ]; then
|
||||||
|
if [[ ${version:?} =~ 5.[3-6]|7.[0-1] ]]; then
|
||||||
|
release="2.10.9"
|
||||||
|
trunk="https://github.com/couchbase/libcouchbase/releases/download"
|
||||||
|
package="libcouchbase-${release}_ubuntu${DISTRIB_RELEASE/./}_${DISTRIB_CODENAME}_amd64.tar"
|
||||||
|
get -q -n /tmp/libcouchbase.tar "$trunk/$release/$package"
|
||||||
|
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
||||||
|
install_packages libev4
|
||||||
|
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
||||||
|
else
|
||||||
|
trunk="http://packages.couchbase.com/clients/c/repos/deb"
|
||||||
|
list="deb $trunk/ubuntu${DISTRIB_RELEASE/./} ${DISTRIB_CODENAME:?} ${DISTRIB_CODENAME:?}/main"
|
||||||
|
get -s -n "" "$trunk/couchbase.key" | sudo apt-key add
|
||||||
|
echo "$list" | sudo tee /etc/apt/sources.list.d/couchbase.list
|
||||||
|
sudo apt-get update
|
||||||
|
fi
|
||||||
|
${apt_install:?} libcouchbase-dev
|
||||||
|
else
|
||||||
|
if [[ ${version:?} =~ 5.[3-6]|7.[0-1] ]]; then
|
||||||
|
brew install libcouchbase@2
|
||||||
|
brew link --overwrite --force libcouchbase@2
|
||||||
|
else
|
||||||
|
brew install libcouchbase
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add couchbase.
|
||||||
|
add_couchbase() {
|
||||||
|
add_couchbase_libs >/dev/null 2>&1
|
||||||
|
enable_extension "couchbase" "extension"
|
||||||
|
if check_extension "couchbase"; then
|
||||||
|
add_log "${tick:?}" "couchbase" "Enabled"
|
||||||
|
else
|
||||||
|
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
||||||
|
pecl_install couchbase-2.2.3 >/dev/null 2>&1
|
||||||
|
elif [[ "${version:?}" =~ 5.6|7.[0-1] ]]; then
|
||||||
|
pecl_install couchbase-2.6.2 >/dev/null 2>&1
|
||||||
|
elif [[ "${version:?}" =~ 7.2 ]]; then
|
||||||
|
pecl_install couchbase-3.0.4 >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
pecl_install couchbase >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
add_extension_log "couchbase" "Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
63
src/scripts/ext/cubrid.sh
Normal file
63
src/scripts/ext/cubrid.sh
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Function to log license details.
|
||||||
|
add_license_log() {
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$ext" "Click to read the $ext related license information"
|
||||||
|
printf "Cubrid CCI package is required for %s extension.\n" "$ext"
|
||||||
|
printf "The extension %s and Cubrid CCI are provided under the license linked below.\n" "$ext"
|
||||||
|
printf "Refer to: \033[35;1m%s \033[0m\n" "https://github.com/CUBRID/cubrid-cci/blob/develop/COPYING"
|
||||||
|
echo "::endgroup::"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup gcc-7 and g++-7
|
||||||
|
setup_compiler() {
|
||||||
|
if ! command -v gcc-7 >/dev/null || ! command -v g++-7 >/dev/null; then
|
||||||
|
add_ppa ubuntu-toolchain-r/test
|
||||||
|
add_packages gcc-7 g++-7 -y
|
||||||
|
fi
|
||||||
|
printf "gcc g++" | xargs -d ' ' -I {} sudo update-alternatives --install /usr/bin/{} {} /usr/bin/{}-7 7
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to set cubrid repo for the extension.
|
||||||
|
set_cubrid_repo() {
|
||||||
|
case "${ext:?}" in
|
||||||
|
"cubrid") cubrid_repo="cubrid-php";;
|
||||||
|
"pdo_cubrid") cubrid_repo="cubrid-pdo";;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to set cubrid branch for a PHP version.
|
||||||
|
set_cubrid_branch() {
|
||||||
|
case "${version:?}" in
|
||||||
|
5.[3-6]) cubrid_branch="RB-9.3.0";;
|
||||||
|
*) cubrid_branch="develop";;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
add_cubrid_helper() {
|
||||||
|
ext=$1
|
||||||
|
enable_extension "$ext" extension
|
||||||
|
if ! check_extension "$ext"; then
|
||||||
|
status='Installed and enabled'
|
||||||
|
set_cubrid_repo
|
||||||
|
set_cubrid_branch
|
||||||
|
[ "$DISTRIB_RELEASE" = "16.04" ] && setup_compiler
|
||||||
|
(
|
||||||
|
git clone -b "$cubrid_branch" --recursive "https://github.com/CUBRID/$cubrid_repo" "/tmp/$cubrid_repo"
|
||||||
|
cd "/tmp/$cubrid_repo" || exit
|
||||||
|
! [[ "$version" =~ ${old_versions:?} ]] && add_devtools
|
||||||
|
phpize
|
||||||
|
sudo ./configure --with-php-config="$(command -v php-config)" --with-"${ext/_/-}"=shared
|
||||||
|
make -j"$(nproc)"
|
||||||
|
sudo make install
|
||||||
|
)
|
||||||
|
echo "extension=$ext.so" | sudo tee "${scan_dir:?}/$ext.ini"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add cubrid and pdo_cubrid.
|
||||||
|
add_cubrid() {
|
||||||
|
ext=$1
|
||||||
|
status='Enabled'
|
||||||
|
add_cubrid_helper "$ext" >/dev/null 2>&1
|
||||||
|
add_extension_log "$ext" "$status"
|
||||||
|
check_extension "$ext" && add_license_log
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
php_h="https://raw.githubusercontent.com/php/php-src/PHP-$2/main/php.h"
|
|
||||||
os=$(uname -s)
|
|
||||||
if [ "$os" = "Linux" ]; then
|
|
||||||
apiv=$(curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3)
|
|
||||||
dir="/usr/lib/php/$apiv"
|
|
||||||
sudo mkdir -p "$dir" && sudo chown -R "$USER":"$(id -g -n)" /usr/lib/php
|
|
||||||
elif [ "$os" = "Darwin" ]; then
|
|
||||||
apiv=$(curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3)
|
|
||||||
dir="/usr/local/lib/php/pecl/$apiv"
|
|
||||||
else
|
|
||||||
dir='C:\\tools\\php\\ext'
|
|
||||||
fi
|
|
||||||
hash=$(echo -n "$1" | openssl dgst -sha256 | cut -d ' ' -f 2)
|
|
||||||
echo "::set-output name=ext_dir::$dir"
|
|
||||||
echo "::set-output name=ext_hash::$hash"
|
|
20
src/scripts/ext/firebird.ps1
Normal file
20
src/scripts/ext/firebird.ps1
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Function Add-Choco() {
|
||||||
|
try {
|
||||||
|
if($null -eq (Get-Command -Name choco.exe -ErrorAction SilentlyContinue)) {
|
||||||
|
# Source: https://docs.chocolatey.org/en-us/choco/setup
|
||||||
|
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||||
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||||
|
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||||
|
}
|
||||||
|
} catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Add-Firebird() {
|
||||||
|
Add-Choco > $null 2>&1
|
||||||
|
choco install firebird -params '/ClientAndDevTools' -y --force > $null 2>&1
|
||||||
|
if((Get-ChildItem $env:ProgramFiles\**\**\fbclient.dll | Measure-Object).Count -eq 1) {
|
||||||
|
Add-Extension pdo_firebird
|
||||||
|
} else {
|
||||||
|
Add-Log $cross pdo_firebird "Could not install pdo_firebird on PHP $( $installed.FullVersion )"
|
||||||
|
}
|
||||||
|
}
|
46
src/scripts/ext/firebird.sh
Normal file
46
src/scripts/ext/firebird.sh
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
add_firebird_client_darwin() {
|
||||||
|
pkg_name=$(get -s -n "" https://github.com/FirebirdSQL/firebird/releases/latest | grep -Eo "Firebird-.*.pkg" | head -n 1)
|
||||||
|
get -q -e "/tmp/firebird.pkg" https://github.com/FirebirdSQL/firebird/releases/latest/download/"$pkg_name"
|
||||||
|
sudo installer -pkg /tmp/firebird.pkg -target /
|
||||||
|
sudo mkdir -p /opt/firebird/include /opt/firebird/lib
|
||||||
|
sudo find /Library/Frameworks/Firebird.framework -name '*.h' -exec cp "{}" /opt/firebird/include \;
|
||||||
|
sudo find /Library/Frameworks/Firebird.framework -name '*.dylib' -exec cp "{}" /opt/firebird/lib \;
|
||||||
|
}
|
||||||
|
|
||||||
|
add_firebird_helper() {
|
||||||
|
firebird_dir=$1
|
||||||
|
tag="$(php_src_tag)"
|
||||||
|
get -s -n "" https://github.com/php/php-src/archive/"$tag".tar.gz | tar -xzf - -C /tmp
|
||||||
|
(
|
||||||
|
cd /tmp/php-src-"$tag"/ext/pdo_firebird || exit
|
||||||
|
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
||||||
|
sudo sed -i '' '/PHP_CHECK_PDO_INCLUDES/d' config.m4 2>/dev/null || sudo sed -i '/PHP_CHECK_PDO_INCLUDES/d' config.m4
|
||||||
|
fi
|
||||||
|
sudo phpize
|
||||||
|
sudo ./configure --with-pdo-firebird="$firebird_dir"
|
||||||
|
sudo make -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
||||||
|
sudo make install
|
||||||
|
enable_extension pdo_firebird extension
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
add_firebird() {
|
||||||
|
enable_extension pdo_firebird
|
||||||
|
if ! check_extension pdo_firebird; then
|
||||||
|
if [ "$(uname -s)" = "Linux" ]; then
|
||||||
|
if [[ "${version:?}" =~ 5.3|${nightly_versions:?} ]]; then
|
||||||
|
lib_arch=$(gcc -dumpmachine)
|
||||||
|
install_packages firebird-dev >/dev/null 2>&1
|
||||||
|
sudo ln -sf /usr/lib/"$lib_arch"/libfbclient.so.2 /usr/lib/libfbclient.so >/dev/null 2>&1
|
||||||
|
sudo ln -sf /usr/lib/"$lib_arch"/libib_util.so /usr/lib/ >/dev/null 2>&1
|
||||||
|
add_firebird_helper /usr >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
add_pdo_extension firebird >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
add_firebird_client_darwin >/dev/null 2>&1
|
||||||
|
add_firebird_helper /opt/firebird >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
add_extension_log pdo_firebird "Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
@ -1,9 +1,22 @@
|
|||||||
release_version=$(lsb_release -s -r)
|
# Helper function to add gearman extension.
|
||||||
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/pkg-gearman -y
|
add_gearman_helper() {
|
||||||
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
add_ppa ondrej/pkg-gearman
|
||||||
|
install_packages libgearman-dev
|
||||||
|
enable_extension gearman extension
|
||||||
|
if ! check_extension gearman; then
|
||||||
|
status="Installed and enabled"
|
||||||
|
if [[ "${version:?}" =~ 5.[3-5] ]]; then
|
||||||
|
pecl_install gearman-1.1.2
|
||||||
|
else
|
||||||
|
install_packages php"${version:?}"-gearman || pecl_install gearman
|
||||||
|
fi
|
||||||
|
enable_extension gearman extension
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$release_version" = "18.04" ]; then
|
# Function to add gearman extension.
|
||||||
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y libgearman-dev php"$1"-gearman
|
add_gearman() {
|
||||||
elif [ "$release_version" = "16.04" ]; then
|
status="Enabled"
|
||||||
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1"-gearman
|
add_gearman_helper >/dev/null 2>&1
|
||||||
fi
|
add_extension_log "gearman" "$status"
|
||||||
|
}
|
||||||
|
51
src/scripts/ext/geos.sh
Normal file
51
src/scripts/ext/geos.sh
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
# Helper function install geos library and headers
|
||||||
|
add_geos_libs() {
|
||||||
|
if [ "$(uname -s)" = "Darwin" ]; then
|
||||||
|
brew install geos
|
||||||
|
else
|
||||||
|
sudo apt-get install libgeos-dev
|
||||||
|
if [ "${runner:?}" = "self-hosted" ]; then
|
||||||
|
${apt_install:?} --no-upgrade --no-install-recommends autoconf automake gcc g++
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Patch geos for PHP 7
|
||||||
|
patch_geos() {
|
||||||
|
if [ "$(php -r "echo PHP_VERSION_ID;")" -ge 70000 ]; then
|
||||||
|
sed -i~ -e "s/, ce->name/, ZSTR_VAL(ce->name)/; s/ulong /zend_ulong /" /tmp/php-geos-"$geos_tag"/geos.c
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get geos source
|
||||||
|
get_geos() {
|
||||||
|
curl -o /tmp/geos.tar.gz -sL https://github.com/libgeos/php-geos/archive/"$geos_tag".tar.gz
|
||||||
|
tar -xzf /tmp/geos.tar.gz -C /tmp
|
||||||
|
patch_geos
|
||||||
|
}
|
||||||
|
|
||||||
|
# Helper function to compile and install geos
|
||||||
|
add_geos_helper() {
|
||||||
|
get_geos
|
||||||
|
(
|
||||||
|
cd /tmp/php-geos-"$geos_tag" || exit
|
||||||
|
phpize
|
||||||
|
./configure --enable-geos --with-geos-config="$(command -v geos-config)"
|
||||||
|
sudo make -j"$(nproc)"
|
||||||
|
sudo make install
|
||||||
|
enable_extension geos extension
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add geos
|
||||||
|
add_geos() {
|
||||||
|
geos_tag='1.0.0'
|
||||||
|
add_geos_libs >/dev/null 2>&1
|
||||||
|
enable_extension "geos" "extension"
|
||||||
|
if check_extension "geos"; then
|
||||||
|
add_log "${tick:?}" "geos" "Enabled"
|
||||||
|
else
|
||||||
|
add_geos_helper >/dev/null 2>&1
|
||||||
|
add_extension_log "geos" "Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
55
src/scripts/ext/http.ps1
Normal file
55
src/scripts/ext/http.ps1
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Function Get-ICUUrl() {
|
||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
$icu_version,
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
$arch,
|
||||||
|
[Parameter(Position = 2, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
$vs_version
|
||||||
|
)
|
||||||
|
$trunk = "https://windows.php.net"
|
||||||
|
$urls=@("${trunk}/downloads/php-sdk/deps/${vs_version}/${arch}", "${trunk}/downloads/php-sdk/deps/archives/${vs_version}/${arch}")
|
||||||
|
foreach ($url in $urls) {
|
||||||
|
$web_content = Invoke-WebRequest -Uri $url
|
||||||
|
foreach ($link in $web_content.Links) {
|
||||||
|
if ($link -match "/.*ICU-${icu_version}.*/") {
|
||||||
|
return $trunk + $link.HREF
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Repair-ICU() {
|
||||||
|
$icu = deplister $ext_dir\php_http.dll | Select-String "icu[a-z]+(\d+).dll,([A-Z]+)" | Foreach-Object { $_.Matches }
|
||||||
|
if($icu -and $icu.Groups[2].Value -ne 'OK') {
|
||||||
|
$vs = "vs" + $installed.VCVersion
|
||||||
|
if ($installed.VCVersion -lt 16) {
|
||||||
|
$vs = "vc" + $installed.VCVersion
|
||||||
|
}
|
||||||
|
$zip_url = Get-ICUUrl $icu.Groups[1].Value $installed.Architecture $vs
|
||||||
|
if ($zip_url -ne '') {
|
||||||
|
New-Item -Path "$php_dir" -Name "icu" -ItemType "directory" | Out-Null
|
||||||
|
Invoke-WebRequest -Uri $zip_url -OutFile "$php_dir\icu\icu.zip"
|
||||||
|
Expand-Archive -Path $php_dir\icu\icu.zip -DestinationPath $php_dir\icu -Force
|
||||||
|
Get-ChildItem $php_dir\icu\bin -Filter *.dll | Copy-Item -Destination $php_dir -Force
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Add-Http() {
|
||||||
|
Add-Extension raphf >$null 2>&1
|
||||||
|
if($version -lt '8.0') {
|
||||||
|
Add-Extension propro >$null 2>&1
|
||||||
|
}
|
||||||
|
Add-Extension pecl_http >$null 2>&1
|
||||||
|
Repair-ICU
|
||||||
|
try {
|
||||||
|
php --ri "http" 2> $null | Out-Null
|
||||||
|
Add-Log $tick "http" "Installed and enabled"
|
||||||
|
} catch {
|
||||||
|
Add-Log $cross "http" "Could not install http on PHP $( $installed.FullVersion )"
|
||||||
|
}
|
||||||
|
}
|
166
src/scripts/ext/http.sh
Normal file
166
src/scripts/ext/http.sh
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# Function to get http version for a PHP version.
|
||||||
|
get_http_version() {
|
||||||
|
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
||||||
|
echo "pecl_http-2.6.0"
|
||||||
|
elif [[ ${version:?} =~ 7.[0-4] ]]; then
|
||||||
|
echo "pecl_http-3.2.4"
|
||||||
|
else
|
||||||
|
echo "pecl_http-$(get_pecl_version "pecl_http" "stable")"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to enable http extension.
|
||||||
|
enable_http() {
|
||||||
|
enable_extension propro extension
|
||||||
|
enable_extension raphf extension
|
||||||
|
if (! [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension propro && check_extension raphf) ||
|
||||||
|
( [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension raphf); then
|
||||||
|
enable_extension http extension
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install linux dependencies.
|
||||||
|
add_http_dependencies_linux() {
|
||||||
|
! [[ ${version:?} =~ ${nightly_versions:?} ]] && add_devtools phpize
|
||||||
|
install_packages zlib1g libbrotli-dev libcurl4-openssl-dev libevent-dev libicu-dev libidn2-dev
|
||||||
|
if [[ ${version:?} =~ ${old_versions:?} ]]; then
|
||||||
|
add_pecl_extension raphf 1.1.2 extension
|
||||||
|
add_pecl_extension propro 1.0.2 extension
|
||||||
|
elif [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
||||||
|
add_extension propro extension
|
||||||
|
add_extension raphf extension
|
||||||
|
else
|
||||||
|
add_extension raphf extension
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install darwin dependencies.
|
||||||
|
add_http_dependencies_darwin() {
|
||||||
|
brew install brotli curl icu4c libevent libidn2
|
||||||
|
if ! [[ ${version:?} =~ ${old_versions:?} ]]; then
|
||||||
|
if [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
||||||
|
add_brew_extension propro extension
|
||||||
|
fi
|
||||||
|
add_brew_extension raphf extension
|
||||||
|
else
|
||||||
|
add_pecl_extension raphf 1.1.2 extension
|
||||||
|
add_pecl_extension propro 1.0.2 extension
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install the dependencies.
|
||||||
|
add_http_dependencies() {
|
||||||
|
os=$1
|
||||||
|
if [ "$os" = 'Linux' ]; then
|
||||||
|
add_http_dependencies_linux
|
||||||
|
else
|
||||||
|
add_http_dependencies_darwin
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get configure options for http.
|
||||||
|
get_http_configure_opts() {
|
||||||
|
os=$1
|
||||||
|
if [ "$os" = 'Linux' ]; then
|
||||||
|
for lib in zlib libbrotli libcurl libevent libicu libidn2 libidn libidnkit2 libidnkit; do
|
||||||
|
http_opts+=( "--with-http-$lib-dir=/usr" )
|
||||||
|
done
|
||||||
|
else
|
||||||
|
http_opts+=( "--with-http-zlib-dir=$(xcrun --show-sdk-path)/usr" )
|
||||||
|
http_opts+=( "--with-http-libbrotli-dir=$(brew --prefix brotli)" )
|
||||||
|
http_opts+=( "--with-http-libcurl-dir=$(brew --prefix curl)" )
|
||||||
|
http_opts+=( "--with-http-libicu-dir=$(brew --prefix icu4c)" )
|
||||||
|
http_opts+=( "--with-http-libevent-dir=$(brew --prefix libevent)" )
|
||||||
|
http_opts+=( "--with-http-libidn2-dir=$(brew --prefix libidn2)" )
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
patch_http_source() {
|
||||||
|
ext=$1
|
||||||
|
os=$2
|
||||||
|
if [ "$os" = 'Darwin' ] && ! [[ ${version:?} =~ ${old_versions:?} ]]; then
|
||||||
|
if [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
||||||
|
sed -i '' -e "s|ext/propro|$(brew --prefix propro@"${version:?}")/include/php/ext/propro@${version:?}|" "/tmp/pecl_http-${ext##*-}/src/php_http_api.h"
|
||||||
|
fi
|
||||||
|
sed -i '' -e "s|ext/raphf|$(brew --prefix raphf@"${version:?}")/include/php/ext/raphf@${version:?}|" "/tmp/pecl_http-${ext##*-}/src/php_http_api.h"
|
||||||
|
if [ "${version:?}" = "5.6" ]; then
|
||||||
|
sed -i '' -e "s|\$abs_srcdir|\$abs_srcdir ${brew_prefix:?}/include|" -e "s|/ext/propro|/php/ext/propro@5.6|" -e "s|/ext/raphf|/php/ext/raphf@5.6|" "/tmp/pecl_http-${ext##*-}/config9.m4"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Helper function to compile and install http.
|
||||||
|
build_http() {
|
||||||
|
ext=$1
|
||||||
|
os=$2
|
||||||
|
(
|
||||||
|
http_opts=() && get_http_configure_opts "$os"
|
||||||
|
c_opts="CFLAGS=-Wno-implicit-function-declaration"
|
||||||
|
cd /tmp/pecl_http-"${ext##*-}" || exit
|
||||||
|
sudo phpize
|
||||||
|
sudo "$c_opts" ./configure --with-http --with-php-config="$(command -v php-config)" "${http_opts[@]}"
|
||||||
|
sudo make -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
||||||
|
sudo make install
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compile and install http explicitly.
|
||||||
|
# This is done as pecl compiles raphf and propro as well.
|
||||||
|
add_http_helper() {
|
||||||
|
ext=$1
|
||||||
|
os=$2
|
||||||
|
add_http_dependencies "$os"
|
||||||
|
get -q -n /tmp/http.tgz https://pecl.php.net/get/pecl_http-"${ext##*-}".tgz
|
||||||
|
tar -xzf /tmp/http.tgz -C /tmp
|
||||||
|
patch_http_source "$ext" "$os"
|
||||||
|
build_http "$ext" "$os"
|
||||||
|
enable_extension http extension
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup latest http extension.
|
||||||
|
add_http_latest() {
|
||||||
|
os=$1
|
||||||
|
enable_http
|
||||||
|
if ! check_extension http; then
|
||||||
|
if [ "$os" = "Linux" ]; then
|
||||||
|
if ! [[ "${version:?}" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
||||||
|
if [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
||||||
|
install_packages "php$version-propro"
|
||||||
|
fi
|
||||||
|
install_packages "php$version-raphf" "php$version-http"
|
||||||
|
else
|
||||||
|
add_http_helper "$(get_http_version)" "$os"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
||||||
|
add_brew_extension pecl_http extension
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
status="Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup http extension given a version.
|
||||||
|
add_http_version() {
|
||||||
|
ext=$1
|
||||||
|
os=$2
|
||||||
|
enable_http
|
||||||
|
if [ "x$(php -r "echo phpversion('http');")" != "x${ext##*-}" ]; then
|
||||||
|
remove_extension http >/dev/null
|
||||||
|
add_http_helper pecl_http-"${ext##*-}" "$os"
|
||||||
|
status="Installed and enabled"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to setup http extension
|
||||||
|
add_http() {
|
||||||
|
ext=$1
|
||||||
|
os="$(uname -s)"
|
||||||
|
status="Enabled"
|
||||||
|
if [[ "$ext" =~ ^(pecl_http|http)$ ]]; then
|
||||||
|
add_http_latest "$os" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
add_http_version "$ext" "$os" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
add_extension_log "http" "$status"
|
||||||
|
}
|
23
src/scripts/ext/intl.sh
Normal file
23
src/scripts/ext/intl.sh
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Function to install ICU
|
||||||
|
install_icu() {
|
||||||
|
icu=$1
|
||||||
|
if [ "$(php -i | grep "ICU version =>" | sed -e "s|.*=> s*||")" != "$icu" ]; then
|
||||||
|
get -q -n /tmp/icu.tar.zst "https://dl.bintray.com/shivammathur/icu4c/icu4c-$icu.tar.zst"
|
||||||
|
sudo tar -I zstd -xf /tmp/icu.tar.zst -C /usr/local
|
||||||
|
sudo cp -r /usr/local/icu/lib/* /usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add ext-intl with the given version of ICU
|
||||||
|
add_intl() {
|
||||||
|
icu=$(echo "$1" | cut -d'-' -f 2)
|
||||||
|
supported_version=$(get -s -n "" https://api.bintray.com/packages/shivammathur/icu4c/icu4c | grep -Po "$icu" | head -n 1)
|
||||||
|
if [ "$icu" != "$supported_version" ]; then
|
||||||
|
add_log "${cross:?}" "intl" "ICU $icu is not supported"
|
||||||
|
else
|
||||||
|
install_icu "$icu" >/dev/null 2>&1
|
||||||
|
get -q -n "${ext_dir:?}/intl.so" "https://dl.bintray.com/shivammathur/icu4c/php${version:?}-intl-$icu.so"
|
||||||
|
enable_extension intl extension
|
||||||
|
add_extension_log intl "Installed and enabled with ICU $icu"
|
||||||
|
fi
|
||||||
|
}
|
32
src/scripts/ext/ioncube.ps1
Normal file
32
src/scripts/ext/ioncube.ps1
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Function to log result of a operation.
|
||||||
|
Function Add-LicenseLog() {
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "ioncube" "Click to read the ioncube loader license information"
|
||||||
|
Get-Content $ext_dir\ioncube\LICENSE.txt
|
||||||
|
Write-Output "::endgroup::"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add ioncube extension.
|
||||||
|
Function Add-Ioncube() {
|
||||||
|
try {
|
||||||
|
if (-not(Test-Path $ext_dir\php_ioncube.dll)) {
|
||||||
|
$status = 'Installed and enabled'
|
||||||
|
$arch_part = $arch
|
||||||
|
if ($arch -eq 'x64') {
|
||||||
|
$arch_part = 'x86-64'
|
||||||
|
}
|
||||||
|
$vc = $installed.VCVersion
|
||||||
|
$ts_part = ""
|
||||||
|
if (-not($installed.ThreadSafe)) {
|
||||||
|
$ts_part = "_nonts"
|
||||||
|
}
|
||||||
|
Invoke-WebRequest -Uri "https://downloads.ioncube.com/loader_downloads/ioncube_loaders_win$ts_part`_vc$vc`_$arch_part.zip" -OutFile $ext_dir\ioncube.zip
|
||||||
|
Expand-Archive -Path $ext_dir\ioncube.zip -DestinationPath $ext_dir -Force
|
||||||
|
Copy-Item $ext_dir\ioncube\ioncube_loader_win_$version.dll $ext_dir\php_ioncube.dll
|
||||||
|
}
|
||||||
|
"zend_extension=$ext_dir\php_ioncube.dll`r`n" + (Get-Content $php_dir\php.ini -Raw) | Set-Content $php_dir\php.ini
|
||||||
|
Add-Log $tick "ioncube" $status
|
||||||
|
Add-LicenseLog
|
||||||
|
} catch {
|
||||||
|
Add-Log $cross "ioncube" "Could not install ioncube on PHP $($installed.FullVersion)"
|
||||||
|
}
|
||||||
|
}
|
19
src/scripts/ext/ioncube.sh
Normal file
19
src/scripts/ext/ioncube.sh
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Function to log result of a operation.
|
||||||
|
add_license_log() {
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "ioncube" "Click to read the ioncube loader license information"
|
||||||
|
cat /tmp/ioncube/LICENSE.txt
|
||||||
|
echo "::endgroup::"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install ioncube.
|
||||||
|
add_ioncube() {
|
||||||
|
if [ ! -e "${ext_dir:?}/ioncube.so" ]; then
|
||||||
|
status='Installed and enabled'
|
||||||
|
os_name='lin' && [ "$(uname -s)" = "Darwin" ] && os_name='mac'
|
||||||
|
get -s -n "" https://downloads.ioncube.com/loader_downloads/ioncube_loaders_"$os_name"_x86-64.tar.gz | tar -xzf - -C /tmp
|
||||||
|
sudo mv /tmp/ioncube/ioncube_loader_"$os_name"_"${version:?}".so "$ext_dir/ioncube.so"
|
||||||
|
fi
|
||||||
|
echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
|
||||||
|
add_extension_log "ioncube" "$status"
|
||||||
|
check_extension "ioncube" && add_license_log
|
||||||
|
}
|
60
src/scripts/ext/oci.ps1
Normal file
60
src/scripts/ext/oci.ps1
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Function to log license information.
|
||||||
|
Function Add-LicenseLog() {
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $extension "Click to read the $extension related license information"
|
||||||
|
printf "Oracle Instant Client package is required for %s extension.\n" $extension
|
||||||
|
printf "It is provided under the Oracle Technology Network Development and Distribution License.\n"
|
||||||
|
printf "Refer to: \033[35;1m%s \033[0m\n" "https://www.oracle.com/downloads/licenses/instant-client-lic.html"
|
||||||
|
Write-Output "::endgroup::"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get instantclinet.
|
||||||
|
Function Add-InstantClient() {
|
||||||
|
if (-not(Test-Path $php_dir\oci.dll)) {
|
||||||
|
$suffix = 'windows'
|
||||||
|
if ($arch -eq 'x86') {
|
||||||
|
$suffix = 'nt'
|
||||||
|
}
|
||||||
|
Invoke-WebRequest -Uri https://download.oracle.com/otn_software/nt/instantclient/instantclient-basiclite-$suffix.zip -OutFile $php_dir\instantclient.zip
|
||||||
|
Expand-Archive -Path $php_dir\instantclient.zip -DestinationPath $php_dir -Force
|
||||||
|
Copy-Item $php_dir\instantclient*\* $php_dir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install oci8 and pdo_oci.
|
||||||
|
Function Add-Oci() {
|
||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateSet('oci8', 'pdo_oci')]
|
||||||
|
[string]
|
||||||
|
$extension
|
||||||
|
)
|
||||||
|
try {
|
||||||
|
$status = 'Enabled'
|
||||||
|
Add-InstantClient
|
||||||
|
if ($extension -eq "pdo_oci") {
|
||||||
|
Enable-PhpExtension pdo_oci -Path $php_dir
|
||||||
|
} else {
|
||||||
|
if(-not(Test-Path $ext_dir\php_oci8.dll)) {
|
||||||
|
$status = 'Installed and enabled'
|
||||||
|
$ociVersion = Get-PeclPackageVersion oci8 -MinimumStability stable -MaximumStability stable | Select-Object -First 1
|
||||||
|
if ($version -eq '7.0') {
|
||||||
|
$ociVersion = '2.1.8'
|
||||||
|
} elseif ($version -lt '7.0') {
|
||||||
|
$ociVersion = '2.0.12'
|
||||||
|
} elseif ($version -lt '8.0') {
|
||||||
|
$ociVersion = '2.2.0'
|
||||||
|
}
|
||||||
|
$ociUrl = Get-PeclArchiveUrl oci8 $ociVersion $installed
|
||||||
|
Invoke-WebRequest -Uri $ociUrl -OutFile $php_dir\oci8.zip
|
||||||
|
Expand-Archive -Path $php_dir\oci8.zip -DestinationPath $ext_dir -Force
|
||||||
|
|
||||||
|
}
|
||||||
|
Add-Content -Value "`r`nextension=php_oci8.dll" -Path $php_dir\php.ini
|
||||||
|
}
|
||||||
|
Add-Log $tick $extension $status
|
||||||
|
Add-LicenseLog
|
||||||
|
} catch {
|
||||||
|
Add-Log $cross $extension "Could not install $extension on PHP $( $installed.FullVersion )"
|
||||||
|
}
|
||||||
|
}
|
113
src/scripts/ext/oci.sh
Normal file
113
src/scripts/ext/oci.sh
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# Function to log result of a operation.
|
||||||
|
add_license_log() {
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$ext" "Click to read the $ext related license information"
|
||||||
|
printf "Oracle Instant Client package is required for %s extension.\n" "$ext"
|
||||||
|
printf "It is provided under the Oracle Technology Network Development and Distribution License.\n"
|
||||||
|
printf "Refer to: \033[35;1m%s \033[0m\n" "https://www.oracle.com/downloads/licenses/instant-client-lic.html"
|
||||||
|
echo "::endgroup::"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install instantclient and SDK.
|
||||||
|
add_client() {
|
||||||
|
sudo mkdir -p -m 777 "$oracle_home"
|
||||||
|
if [ ! -e "$oracle_client" ]; then
|
||||||
|
for package in basiclite sdk; do
|
||||||
|
if [ "$os" = 'Linux' ]; then
|
||||||
|
libs='/usr/lib/'
|
||||||
|
os_name='linux'
|
||||||
|
arch='linuxx64'
|
||||||
|
lib_ext='so'
|
||||||
|
elif [ "$os" = 'Darwin' ]; then
|
||||||
|
libs='/usr/local/lib/'
|
||||||
|
os_name='mac'
|
||||||
|
arch='macos'
|
||||||
|
lib_ext='dylib'
|
||||||
|
fi
|
||||||
|
get -q -n "/opt/oracle/$package.zip" "https://download.oracle.com/otn_software/$os_name/instantclient/instantclient-$package-$arch.zip"
|
||||||
|
unzip "/opt/oracle/$package.zip" -d "$oracle_home"
|
||||||
|
done
|
||||||
|
sudo ln -sf /opt/oracle/instantclient*/*.$lib_ext* $libs
|
||||||
|
sudo ln -sf /opt/oracle/instantclient* "$oracle_client"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get PHP source.
|
||||||
|
get_php() {
|
||||||
|
[ ! -d "/opt/oracle/php-src-$tag" ] && get -s -n "" "https://github.com/php/php-src/archive/$tag.tar.gz" | tar xzf - -C "$oracle_home/"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to get phpize location on darwin.
|
||||||
|
get_phpize() {
|
||||||
|
if [[ "${version:?}" =~ 5.[3-5] ]]; then
|
||||||
|
echo '/opt/local/bin/phpize'
|
||||||
|
else
|
||||||
|
echo "/usr/local/bin/$(readlink /usr/local/bin/phpize)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to patch phpize to link to php headers on darwin.
|
||||||
|
patch_phpize() {
|
||||||
|
if [ "$os" = "Darwin" ]; then
|
||||||
|
sudo cp "$phpize_orig" "$phpize_orig.bck"
|
||||||
|
sudo sed -i '' 's~includedir=.*~includedir="$(xcrun --show-sdk-path)/usr/include/php"~g' "$phpize_orig"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to restore phpize.
|
||||||
|
restore_phpize() {
|
||||||
|
if [ "$os" = "Darwin" ]; then
|
||||||
|
sudo mv "$phpize_orig.bck" "$phpize_orig" || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to patch pdo_oci.
|
||||||
|
patch_pdo_oci_config() {
|
||||||
|
get -q -n config.m4 https://raw.githubusercontent.com/php/php-src/PHP-8.0/ext/pdo_oci/config.m4
|
||||||
|
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
||||||
|
sudo sed -i '' "/PHP_CHECK_PDO_INCLUDES/d" config.m4 2>/dev/null || sudo sed -i "/PHP_CHECK_PDO_INCLUDES/d" config.m4
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install the dependencies.
|
||||||
|
add_dependencies() {
|
||||||
|
if [ "$os" = 'Linux' ]; then
|
||||||
|
if [ "${runner:?}" = "self-hosted" ]; then
|
||||||
|
${apt_install:?} --no-upgrade --no-install-recommends libaio-dev
|
||||||
|
fi
|
||||||
|
! [[ ${version:?} =~ $nightly_versions ]] && add_devtools phpize
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install oci8 and pdo_oci.
|
||||||
|
add_oci_helper() {
|
||||||
|
if ! [ -e "${ext_dir:?}/$ext.so" ]; then
|
||||||
|
status='Installed and enabled'
|
||||||
|
phpize_orig=$(get_phpize)
|
||||||
|
tag=$(php_src_tag)
|
||||||
|
get_php
|
||||||
|
patch_phpize
|
||||||
|
(
|
||||||
|
cd "/opt/oracle/php-src-$tag/ext/$ext" || exit 1
|
||||||
|
[ "$ext" = "pdo_oci" ] && patch_pdo_oci_config
|
||||||
|
sudo phpize && ./configure --with-php-config="$(command -v php-config)" --with-"${ext/_/-}"=instantclient,"$oracle_client"
|
||||||
|
sudo make -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
||||||
|
sudo cp ./modules/* "$ext_dir/"
|
||||||
|
)
|
||||||
|
restore_phpize
|
||||||
|
fi
|
||||||
|
echo "extension=$ext.so" | sudo tee "${scan_dir:?}/99-$ext.ini"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add oci extension oci8 and pdo_oci.
|
||||||
|
add_oci() {
|
||||||
|
ext=$1
|
||||||
|
status='Enabled'
|
||||||
|
oracle_home='/opt/oracle'
|
||||||
|
oracle_client=$oracle_home/instantclient
|
||||||
|
os=$(uname -s)
|
||||||
|
add_client >/dev/null 2>&1
|
||||||
|
add_dependencies >/dev/null 2>&1
|
||||||
|
add_oci_helper >/dev/null 2>&1
|
||||||
|
add_extension_log "$ext" "$status"
|
||||||
|
check_extension "$ext" && add_license_log
|
||||||
|
}
|
@ -1,5 +0,0 @@
|
|||||||
cd ~ && git clone --depth=1 https://github.com/krakjoe/pcov.git
|
|
||||||
cd pcov && phpize
|
|
||||||
./configure --enable-pcov
|
|
||||||
make
|
|
||||||
sudo make install
|
|
@ -1,56 +1,55 @@
|
|||||||
Param (
|
# Function to install phalcon
|
||||||
|
Function Add-PhalconHelper() {
|
||||||
|
if ($extension_version -eq '4') {
|
||||||
|
Install-Phpextension phalcon -MinimumStability stable -Path $php_dir
|
||||||
|
} else {
|
||||||
|
$domain = 'https://github.com'
|
||||||
|
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
||||||
|
$match = Invoke-WebRequest -Uri $domain/phalcon/cphalcon/releases | Select-String -Pattern "href=`"(.*phalcon_x64_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)`""
|
||||||
|
$zip_file = $match.Matches[0].Groups[1].Value
|
||||||
|
Invoke-WebRequest -Uri $domain/$zip_file -OutFile $ENV:RUNNER_TOOL_CACHE\phalcon.zip > $null 2>&1
|
||||||
|
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\phalcon.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\phalcon -Force > $null 2>&1
|
||||||
|
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\phalcon\php_phalcon.dll" -Destination "$ext_dir\php_phalcon.dll"
|
||||||
|
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Add-Phalcon() {
|
||||||
|
Param (
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
[ValidateNotNull()]
|
[ValidateNotNull()]
|
||||||
[ValidateSet('phalcon3', 'phalcon4')]
|
[ValidateSet('phalcon3', 'phalcon4')]
|
||||||
[string]
|
[string]
|
||||||
$extension,
|
$extension
|
||||||
[Parameter(Position = 1, Mandatory = $true)]
|
)
|
||||||
[ValidateNotNull()]
|
try {
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
$status = 'Enabled'
|
||||||
[string]
|
$extension_version = $extension.substring($extension.Length - 1)
|
||||||
$version
|
|
||||||
)
|
|
||||||
|
|
||||||
# Function to install phalcon
|
if($extension_version -eq '4') {
|
||||||
Function Install-Phalcon() {
|
if (Test-Path $ext_dir\php_psr.dll) {
|
||||||
if ($extension_version -eq '4') {
|
|
||||||
Install-Phpextension phalcon -MinimumStability stable -Path $php_dir
|
|
||||||
} else {
|
|
||||||
$installed = Get-Php -Path $php_dir
|
|
||||||
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
|
||||||
$match = Invoke-WebRequest -UseBasicParsing -Uri $domain/phalcon/cphalcon/releases | Select-String -Pattern "href=`"(.*phalcon_x64_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)`""
|
|
||||||
$zip_file = $match.Matches[0].Groups[1].Value
|
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $domain/$zip_file -OutFile $ENV:RUNNER_TOOL_CACHE\phalcon.zip > $null 2>&1
|
|
||||||
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\phalcon.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\phalcon -Force > $null 2>&1
|
|
||||||
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\phalcon\php_phalcon.dll" -Destination "$ext_dir\php_phalcon.dll"
|
|
||||||
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
|
||||||
}
|
|
||||||
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick $extension "Installed and enabled"
|
|
||||||
}
|
|
||||||
|
|
||||||
$tick = ([char]8730)
|
|
||||||
$domain = 'https://github.com'
|
|
||||||
$php_dir = 'C:\tools\php'
|
|
||||||
$ext_dir = $php_dir + '\ext'
|
|
||||||
$extension_version = $extension.substring($extension.Length - 1)
|
|
||||||
|
|
||||||
if($extension_version -eq '4') {
|
|
||||||
if (Test-Path $ext_dir\php_psr.dll) {
|
|
||||||
Enable-PhpExtension -Extension psr -Path $php_dir
|
Enable-PhpExtension -Extension psr -Path $php_dir
|
||||||
} else {
|
} else {
|
||||||
Install-Phpextension psr -MinimumStability stable -Path $php_dir
|
Install-Phpextension psr -MinimumStability stable -Path $php_dir
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(Test-Path $ext_dir\php_phalcon.dll) {
|
if(Test-Path $ext_dir\php_phalcon.dll) {
|
||||||
$phalcon = Get-PhpExtension $ext_dir\php_phalcon.dll
|
$phalcon = Get-PhpExtension $ext_dir\php_phalcon.dll
|
||||||
if($phalcon.Version[0] -eq $extension_version) {
|
if($phalcon.Version[0] -eq $extension_version) {
|
||||||
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||||
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick $extension "Enabled"
|
} else {
|
||||||
} else {
|
$status = 'Installed and enabled'
|
||||||
Remove-Item $ext_dir\php_phalcon.dll
|
Remove-Item $ext_dir\php_phalcon.dll
|
||||||
Install-Phalcon
|
Add-PhalconHelper
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = 'Installed and enabled'
|
||||||
|
Add-PhalconHelper
|
||||||
}
|
}
|
||||||
} else {
|
Add-Log $tick $extension $status
|
||||||
Install-Phalcon
|
} catch [Exception] {
|
||||||
}
|
Write-Output $_.Exception|format-list -force
|
||||||
|
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,72 +1,68 @@
|
|||||||
# Function to log result of a operation
|
# Helper function to add phalcon.
|
||||||
add_log() {
|
add_phalcon_helper() {
|
||||||
mark=$1
|
status='Installed and enabled'
|
||||||
subject=$2
|
if [ "$os_name" = "Linux" ]; then
|
||||||
message=$3
|
update_lists
|
||||||
if [ "$mark" = "$tick" ]; then
|
if [ "$extension" = "phalcon4" ]; then
|
||||||
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
${apt_install:?} "php${version:?}-psr" "php${version:?}-$extension"
|
||||||
|
else
|
||||||
|
${apt_install:?} "php${version:?}-$extension"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
sed -i '' '/extension.*psr/d' "${ini_file:?}"
|
||||||
|
add_brew_tap shivammathur/homebrew-phalcon
|
||||||
|
brew install phalcon@"${version:?}"_"$extension_major_version"
|
||||||
|
sudo cp "${brew_prefix:?}"/opt/psr@"${version:?}"/psr.so "${ext_dir:?}"
|
||||||
|
sudo cp "${brew_prefix:?}"/opt/phalcon@"${version:?}"_"$extension_major_version"/phalcon.so "${ext_dir:?}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to update php ppa
|
# Function to add phalcon3.
|
||||||
update_ppa() {
|
add_phalcon3() {
|
||||||
if [ "$ppa_updated" = "false" ]; then
|
if [ -e "${ext_dir:?}/phalcon.so" ]; then
|
||||||
find /etc/apt/sources.list.d -type f -name 'ondrej-ubuntu-php*.list' -exec sudo DEBIAN_FRONTEND=noninteractive apt-get update -o Dir::Etc::sourcelist="{}" ';' >/dev/null 2>&1
|
phalcon_version=$(php -d="extension=phalcon.so" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
ppa_updated="true"
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
|
add_phalcon_helper
|
||||||
|
else
|
||||||
|
echo "extension=phalcon.so" | sudo tee -a "$phalcon_ini_file"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
add_phalcon_helper
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install phalcon
|
# Function to add phalcon4.
|
||||||
install_phalcon() {
|
add_phalcon4() {
|
||||||
extension=$1
|
if [ -e "${ext_dir:?}/psr.so" ] && ! php -m | grep -i -q -w psr; then
|
||||||
version=$2
|
echo "extension=psr.so" | sudo tee -a "${ini_file:?}"
|
||||||
(sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "php$version-$extension" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
(update_ppa && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "php$version-$extension" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
|
||||||
}
|
|
||||||
|
|
||||||
ini_file="/etc/php/$2/cli/conf.d/50-phalcon.ini"
|
|
||||||
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
|
||||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
|
||||||
extension_major_version=$(echo "$1" | grep -i -Po '\d')
|
|
||||||
ppa_updated="false"
|
|
||||||
tick="✓"
|
|
||||||
cross="✗"
|
|
||||||
|
|
||||||
if [ "$extension_major_version" = "4" ]; then
|
|
||||||
if [ -e "$ext_dir/psr.so" ]; then
|
|
||||||
echo "extension=psr.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e "$ext_dir/phalcon.so" ]; then
|
if [ -e "$ext_dir/phalcon.so" ]; then
|
||||||
if php -m | grep -i -q -w psr; then
|
if php -m | grep -i -q -w psr; then
|
||||||
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
install_phalcon "$1" "$2"
|
add_phalcon_helper
|
||||||
else
|
else
|
||||||
echo "extension=phalcon.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
echo "extension=phalcon.so" | sudo tee -a "$phalcon_ini_file"
|
||||||
add_log "$tick" "$1" "Enabled"
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
install_phalcon "$1" "$2"
|
add_phalcon_helper
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
install_phalcon "$1" "$2"
|
add_phalcon_helper
|
||||||
fi
|
fi
|
||||||
fi
|
}
|
||||||
|
|
||||||
if [ "$extension_major_version" = "3" ]; then
|
# Function to add phalcon.
|
||||||
if [ -e "$ext_dir/phalcon.so" ]; then
|
add_phalcon() {
|
||||||
phalcon_version=$(php -d="extension=phalcon.so" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
extension=$1
|
||||||
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
status='Enabled'
|
||||||
install_phalcon "$1" "$2"
|
os_name=$(uname -s)
|
||||||
else
|
phalcon_ini_file="${pecl_file:-${ini_file[@]}}"
|
||||||
echo "extension=phalcon.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
extension_major_version=${extension: -1}
|
||||||
add_log "$tick" "$1" "Enabled"
|
if [ "$extension_major_version" = "4" ]; then
|
||||||
fi
|
add_phalcon4 >/dev/null 2>&1
|
||||||
else
|
elif [ "$extension_major_version" = "3" ]; then
|
||||||
install_phalcon "$1" "$2"
|
add_phalcon3 >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
fi
|
add_extension_log "phalcon" "$status"
|
||||||
|
}
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
extension=$1
|
|
||||||
extension_major=${extension: -1}
|
|
||||||
php_version=$2
|
|
||||||
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
|
||||||
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
|
||||||
if [ -e "$ext_dir/psr.so" ] && [ -e "$ext_dir/phalcon.so" ]; then
|
|
||||||
echo "extension=psr" >>"$ini_file"
|
|
||||||
echo "extension=phalcon" >>"$ini_file"
|
|
||||||
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
|
||||||
if [ "$phalcon_version" != "$extension_major" ]; then
|
|
||||||
brew tap shivammathur/homebrew-phalcon
|
|
||||||
brew install phalcon@"$php_version"_"$extension_major"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
brew tap shivammathur/homebrew-phalcon
|
|
||||||
brew install phalcon@"$php_version"_"$extension_major"
|
|
||||||
fi
|
|
@ -1,3 +0,0 @@
|
|||||||
cd ~ && git clone --depth=1 https://github.com/xdebug/xdebug.git
|
|
||||||
cd xdebug || echo "Failed to clone Xdebug"
|
|
||||||
sudo ./rebuild.sh
|
|
@ -1,6 +0,0 @@
|
|||||||
cd ~ && git clone --depth=1 https://github.com/xdebug/xdebug.git
|
|
||||||
cd xdebug || echo "Failed to clone Xdebug"
|
|
||||||
sudo phpize
|
|
||||||
sudo ./configure
|
|
||||||
sudo make
|
|
||||||
sudo cp modules/xdebug.so "$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||")"
|
|
@ -1,267 +1,315 @@
|
|||||||
# Function to log start of a operation
|
# Function to setup environment for self-hosted runners.
|
||||||
step_log() {
|
self_hosted_helper() {
|
||||||
message=$1
|
if ! command -v apt-fast >/dev/null; then
|
||||||
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
|
||||||
|
fi
|
||||||
|
install_packages curl make software-properties-common unzip autoconf automake gcc g++
|
||||||
|
add_ppa ondrej/ppa
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to log result of a operation
|
# Function to backup and cleanup package lists.
|
||||||
add_log() {
|
cleanup_lists() {
|
||||||
mark=$1
|
ppa_prefix=${1-ondrej}
|
||||||
subject=$2
|
if [ ! -e /etc/apt/sources.list.d.save ]; then
|
||||||
message=$3
|
sudo mv /etc/apt/sources.list.d /etc/apt/sources.list.d.save
|
||||||
if [ "$mark" = "$tick" ]; then
|
sudo mkdir /etc/apt/sources.list.d
|
||||||
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
sudo mv /etc/apt/sources.list.d.save/*"${ppa_prefix}"*.list /etc/apt/sources.list.d/
|
||||||
|
sudo mv /etc/apt/sources.list.d.save/*dotdeb*.list /etc/apt/sources.list.d/ 2>/dev/null || true
|
||||||
|
trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/ 2>/dev/null" exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add ppa:ondrej/php.
|
||||||
|
add_ppa() {
|
||||||
|
ppa=${1:-ondrej/php}
|
||||||
|
if ! apt-cache policy | grep -q "$ppa"; then
|
||||||
|
cleanup_lists "$(dirname "$ppa")"
|
||||||
|
LC_ALL=C.UTF-8 sudo apt-add-repository ppa:"$ppa" -y
|
||||||
|
if [ "$DISTRIB_RELEASE" = "16.04" ]; then
|
||||||
|
sudo "$debconf_fix" apt-get update
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add SAPI
|
||||||
|
add_sapi() {
|
||||||
|
sapi=$1
|
||||||
|
status='true'
|
||||||
|
if [ "$sapi" != "cli" ]; then
|
||||||
|
# shellcheck source=.
|
||||||
|
. "${dist}"/../src/scripts/sapi.sh
|
||||||
|
setup_sapi "$sapi" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
check_sapi "$sapi"
|
||||||
|
if check_sapi "$sapi"; then
|
||||||
|
add_log "${tick:?}" "$sapi" "Added $sapi"
|
||||||
else
|
else
|
||||||
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
add_log "${cross:?}" "$sapi" "Could not setup $sapi"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to update php ppa
|
# Function to update the package lists.
|
||||||
update_ppa() {
|
update_lists() {
|
||||||
if [ "$ppa_updated" = "false" ]; then
|
if [ ! -e /tmp/setup_php ]; then
|
||||||
find /etc/apt/sources.list.d -type f -name 'ondrej-ubuntu-php*.list' -exec sudo DEBIAN_FRONTEND=noninteractive apt-fast update -o Dir::Etc::sourcelist="{}" ';' >/dev/null 2>&1
|
[ "$DISTRIB_RELEASE" = "20.04" ] && add_ppa >/dev/null 2>&1
|
||||||
ppa_updated="true"
|
cleanup_lists
|
||||||
|
sudo "$debconf_fix" apt-get update >/dev/null 2>&1
|
||||||
|
echo '' | sudo tee /tmp/setup_php >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_pecl() {
|
# Function to install a package
|
||||||
if [ "$pecl_config" = "false" ] && [ -e /usr/bin/pecl ]; then
|
install_packages() {
|
||||||
for tool in pear pecl; do
|
packages=("$@")
|
||||||
sudo "$tool" config-set php_ini "$ini_file" >/dev/null 2>&1
|
$apt_install "${packages[@]}" >/dev/null 2>&1 || update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1
|
||||||
sudo "$tool" config-set auto_discover 1 >/dev/null 2>&1
|
|
||||||
sudo "$tool" channel-update "$tool".php.net >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
pecl_config="true"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Fuction to get the PECL version
|
# Function to disable an extension.
|
||||||
get_pecl_version() {
|
disable_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
stability=$2
|
sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file[@]}"
|
||||||
pecl_rest='https://pecl.php.net/rest/r/'
|
sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "$pecl_file"
|
||||||
response=$(curl -q -sSL "$pecl_rest$extension"/allreleases.xml)
|
sudo find "$ini_dir"/.. -name "*$extension.ini" -delete >/dev/null 2>&1 || true
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Po "(\d*\.\d*\.\d*$stability\d*)")
|
|
||||||
if [ ! "$pecl_version" ]; then
|
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Po "(\d*\.\d*\.\d*)")
|
|
||||||
fi
|
|
||||||
echo "$pecl_version"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup extensions
|
# Function to delete an extension.
|
||||||
add_extension() {
|
|
||||||
extension=$1
|
|
||||||
install_command=$2
|
|
||||||
prefix=$3
|
|
||||||
if ! php -m | grep -i -q -w "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
|
||||||
# shellcheck disable=SC2046
|
|
||||||
$apt_install $(apt-cache depends php"$version"-"$extension" | awk '/Depends:/{print$2}') >/dev/null 2>&1
|
|
||||||
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
|
||||||
elif php -m | grep -i -q -w "$extension"; then
|
|
||||||
add_log "$tick" "$extension" "Enabled"
|
|
||||||
elif ! php -m | grep -i -q -w "$extension"; then
|
|
||||||
(eval "$install_command" && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
(update_ppa && eval "$install_command" && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
(sudo pecl install -f "$extension" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
|
||||||
fi
|
|
||||||
sudo chmod 777 "$ini_file"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to delete extensions
|
|
||||||
delete_extension() {
|
delete_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
sudo sed -i "/$extension/d" "$ini_file"
|
disable_extension "$extension"
|
||||||
sudo rm -rf /etc/php/"$version"/cli/conf.d/*"$extension"* >/dev/null 2>&1
|
|
||||||
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
||||||
|
if [ "${runner:?}" = "self-hosted" ]; then
|
||||||
|
$apt_remove "php-$extension" "php$version-$extension" >/dev/null 2>&1 || true
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable and delete extensions
|
# Function to disable and delete extensions.
|
||||||
remove_extension() {
|
remove_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
if [ -e /etc/php/"$version"/mods-available/"$extension".ini ]; then
|
if check_extension "$extension"; then
|
||||||
sudo phpdismod -v "$version" "$extension"
|
if [[ ! "$version" =~ ${old_versions:?} ]] && [ -e /etc/php/"$version"/mods-available/"$extension".ini ]; then
|
||||||
|
sudo phpdismod -v "$version" "$extension" >/dev/null 2>&1
|
||||||
|
echo "$extension" | sudo tee -a /tmp/setup_php_dismod >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
delete_extension "$extension"
|
||||||
|
(! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Removed") ||
|
||||||
|
add_log "${cross:?}" ":$extension" "Could not remove $extension on PHP ${semver:?}"
|
||||||
|
else
|
||||||
|
delete_extension "$extension"
|
||||||
|
add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
|
||||||
fi
|
fi
|
||||||
delete_extension "$extension"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install a PECL version
|
# Function to add PDO extension.
|
||||||
|
add_pdo_extension() {
|
||||||
|
pdo_ext="pdo_$1"
|
||||||
|
if check_extension "$pdo_ext"; then
|
||||||
|
add_log "${tick:?}" "$pdo_ext" "Enabled"
|
||||||
|
else
|
||||||
|
ext=$1
|
||||||
|
ext_name=$1
|
||||||
|
disable_extension pdo
|
||||||
|
echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" >/dev/null 2>&1
|
||||||
|
if [ "$ext" = "mysql" ]; then
|
||||||
|
enable_extension "mysqlnd" "extension"
|
||||||
|
ext_name='mysqli'
|
||||||
|
elif [ "$ext" = "dblib" ]; then
|
||||||
|
ext_name="sybase"
|
||||||
|
elif [ "$ext" = "firebird" ]; then
|
||||||
|
install_packages libfbclient2 >/dev/null 2>&1
|
||||||
|
enable_extension "pdo_firebird" "extension"
|
||||||
|
ext_name="interbase"
|
||||||
|
elif [ "$ext" = "sqlite" ]; then
|
||||||
|
ext="sqlite3"
|
||||||
|
ext_name="sqlite3"
|
||||||
|
fi
|
||||||
|
add_extension "$ext_name" "extension" >/dev/null 2>&1
|
||||||
|
add_extension "$pdo_ext" "extension" >/dev/null 2>&1
|
||||||
|
add_extension_log "$pdo_ext" "Enabled"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add extensions.
|
||||||
|
add_extension() {
|
||||||
|
extension=$1
|
||||||
|
prefix=$2
|
||||||
|
enable_extension "$extension" "$prefix"
|
||||||
|
if check_extension "$extension"; then
|
||||||
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
|
else
|
||||||
|
if [[ "$version" =~ 5.[4-5] ]]; then
|
||||||
|
install_packages "php5-$extension=$release_version"
|
||||||
|
elif [[ "$version" =~ ${nightly_versions:?} ]]; then
|
||||||
|
pecl_install "$extension"
|
||||||
|
else
|
||||||
|
install_packages "php$version-$extension" || pecl_install "$extension"
|
||||||
|
fi
|
||||||
|
add_extension_log "$extension" "Installed and enabled"
|
||||||
|
fi
|
||||||
|
sudo chmod 777 "${ini_file[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install a PECL version.
|
||||||
add_pecl_extension() {
|
add_pecl_extension() {
|
||||||
extension=$1
|
extension=$1
|
||||||
pecl_version=$2
|
pecl_version=$2
|
||||||
(sudo pecl install -f "$extension-$pecl_version" >/dev/null 2>&1 &&
|
|
||||||
add_log "$tick" "$extension" "Installed and enabled") ||
|
|
||||||
add_log "$cross" "$extension" "Could not install $extension-$pecl_version on PHP $semver"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to pre-release extensions using PECL
|
|
||||||
add_unstable_extension() {
|
|
||||||
extension=$1
|
|
||||||
stability=$2
|
|
||||||
prefix=$3
|
prefix=$3
|
||||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
if [[ $pecl_version =~ .*(alpha|beta|rc|snapshot|preview).* ]]; then
|
||||||
if ! php -m | grep -i -q -w "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
pecl_version=$(get_pecl_version "$extension" "$pecl_version")
|
||||||
extension_version=$(php -d="$prefix=$extension" -r "echo phpversion('$extension');")
|
fi
|
||||||
if [ "$extension_version" = "$pecl_version" ]; then
|
enable_extension "$extension" "$prefix"
|
||||||
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
ext_version=$(php -r "echo phpversion('$extension');")
|
||||||
else
|
if [ "$ext_version" = "$pecl_version" ]; then
|
||||||
delete_extension "$extension"
|
add_log "${tick:?}" "$extension" "Enabled"
|
||||||
add_pecl_extension "$extension" "$pecl_version"
|
|
||||||
fi
|
|
||||||
elif php -m | grep -i -q -w "$extension"; then
|
|
||||||
extension_version=$(php -r "echo phpversion('$extension');")
|
|
||||||
if [ "$extension_version" = "$pecl_version" ]; then
|
|
||||||
add_log "$tick" "$extension" "Enabled"
|
|
||||||
else
|
|
||||||
delete_extension "$extension"
|
|
||||||
add_pecl_extension "$extension" "$pecl_version"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
add_pecl_extension "$extension" "$pecl_version"
|
delete_extension "$extension"
|
||||||
|
pecl_install "$extension-$pecl_version"
|
||||||
|
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to update extension
|
# Function to setup phpize and php-config.
|
||||||
update_extension() {
|
|
||||||
extension=$1
|
|
||||||
latest_version=$2
|
|
||||||
current_version=$(php -r "echo phpversion('$extension');")
|
|
||||||
final_version=$(printf "%s\n%s" "$current_version" "$latest_version" | sort | tail -n 1)
|
|
||||||
if [ "$final_version" != "$current_version" ]; then
|
|
||||||
version_exists=$(apt-cache policy -- *"$extension" | grep "$final_version")
|
|
||||||
if [ -z "$version_exists" ]; then
|
|
||||||
update_ppa
|
|
||||||
fi
|
|
||||||
$apt_install php"$version"-"$extension"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup a remote tool
|
|
||||||
add_tool() {
|
|
||||||
url=$1
|
|
||||||
tool=$2
|
|
||||||
tool_path=/usr/local/bin/"$tool"
|
|
||||||
if [ ! -e "$tool_path" ]; then
|
|
||||||
rm -rf "$tool_path"
|
|
||||||
fi
|
|
||||||
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" -L "$url")
|
|
||||||
if [ "$status_code" = "200" ]; then
|
|
||||||
sudo chmod a+x "$tool_path"
|
|
||||||
if [ "$tool" = "composer" ]; then
|
|
||||||
composer -q global config process-timeout 0
|
|
||||||
elif [ "$tool" = "cs2pr" ]; then
|
|
||||||
sudo sed -i 's/\r$//; s/exit(9)/exit(0)/' "$tool_path"
|
|
||||||
elif [ "$tool" = "phive" ]; then
|
|
||||||
add_extension curl >/dev/null 2>&1
|
|
||||||
add_extension mbstring >/dev/null 2>&1
|
|
||||||
add_extension xml >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
add_log "$tick" "$tool" "Added"
|
|
||||||
else
|
|
||||||
add_log "$cross" "$tool" "Could not setup $tool"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup a tool using composer
|
|
||||||
add_composer_tool() {
|
|
||||||
tool=$1
|
|
||||||
release=$2
|
|
||||||
prefix=$3
|
|
||||||
(
|
|
||||||
composer global require "$prefix$release" >/dev/null 2>&1 &&
|
|
||||||
sudo ln -sf "$(composer -q global config home)"/vendor/bin/"$tool" /usr/local/bin/"$tool" &&
|
|
||||||
add_log "$tick" "$tool" "Added"
|
|
||||||
) || add_log "$cross" "$tool" "Could not setup $tool"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup phpize and php-config
|
|
||||||
add_devtools() {
|
add_devtools() {
|
||||||
if ! [ -e "/usr/bin/phpize$version" ] || ! [ -e "/usr/bin/php-config$version" ]; then
|
tool=$1
|
||||||
$apt_install php"$version"-dev php"$version"-xml >/dev/null 2>&1
|
if ! command -v "$tool$version" >/dev/null; then
|
||||||
|
install_packages "php$version-dev" "php$version-xml"
|
||||||
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
|
||||||
configure_pecl
|
configure_pecl >/dev/null 2>&1
|
||||||
|
add_log "${tick:?}" "$tool" "Added $tool $semver"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup the nightly build from master branch
|
# Function to setup the nightly build from shivammathur/php-builder
|
||||||
setup_master() {
|
setup_nightly() {
|
||||||
tar_file=php_"$version"%2Bubuntu"$(lsb_release -r -s)".tar.xz
|
run_script "php-builder" "$runner" "$version"
|
||||||
install_dir=~/php/"$version"
|
|
||||||
sudo mkdir -m 777 -p ~/php
|
|
||||||
$apt_install libicu-dev >/dev/null 2>&1
|
|
||||||
curl -o "$tar_file" -L https://bintray.com/shivammathur/php/download_file?file_path="$tar_file" >/dev/null 2>&1
|
|
||||||
sudo tar xf "$tar_file" -C ~/php >/dev/null 2>&1
|
|
||||||
rm -rf "$tar_file"
|
|
||||||
sudo ln -sf -S "$version" "$install_dir"/bin/* /usr/bin/
|
|
||||||
sudo ln -sf "$install_dir"/etc/php.ini /etc/php.ini
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup PECL
|
# Function to setup PHP 5.3, PHP 5.4 and PHP 5.5.
|
||||||
|
setup_old_versions() {
|
||||||
|
run_script "php5-ubuntu" "$version"
|
||||||
|
release_version=$(php -v | head -n 1 | cut -d' ' -f 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add PECL.
|
||||||
add_pecl() {
|
add_pecl() {
|
||||||
add_devtools
|
add_devtools phpize >/dev/null 2>&1
|
||||||
if [ ! -e /usr/bin/pecl ]; then
|
if ! command -v pecl >/dev/null; then
|
||||||
$apt_install php-pear >/dev/null 2>&1
|
install_packages php-pear
|
||||||
fi
|
fi
|
||||||
configure_pecl
|
configure_pecl >/dev/null 2>&1
|
||||||
add_log "$tick" "PECL" "Added"
|
pecl_version=$(get_tool_version "pecl" "version")
|
||||||
|
add_log "${tick:?}" "PECL" "Added PECL $pecl_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to switch versions of PHP binaries
|
# Function to switch versions of PHP binaries.
|
||||||
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" &
|
||||||
|
to_wait+=($!)
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
wait "${to_wait[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install packaged PHP
|
||||||
|
add_packaged_php() {
|
||||||
|
if [ "$runner" = "self-hosted" ] || [ "${use_package_cache:-true}" = "false" ]; then
|
||||||
|
update_lists
|
||||||
|
IFS=' ' read -r -a packages <<<"$(echo "cli curl mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
|
||||||
|
$apt_install "${packages[@]}"
|
||||||
|
else
|
||||||
|
run_script "test-setup-php" "$version"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to update PHP.
|
||||||
|
update_php() {
|
||||||
|
initial_version=$(php_semver)
|
||||||
|
add_packaged_php
|
||||||
|
updated_version=$(php_semver)
|
||||||
|
if [ "$updated_version" != "$initial_version" ]; then
|
||||||
|
status="Updated to"
|
||||||
|
else
|
||||||
|
status="Switched to"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install PHP.
|
||||||
|
add_php() {
|
||||||
|
if [[ "$version" =~ ${nightly_versions:?} ]]; then
|
||||||
|
setup_nightly
|
||||||
|
elif [[ "$version" =~ ${old_versions:?} ]]; then
|
||||||
|
setup_old_versions
|
||||||
|
else
|
||||||
|
add_packaged_php
|
||||||
|
fi
|
||||||
|
status="Installed"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to ini file for pear and link it to each SAPI.
|
||||||
|
link_pecl_file() {
|
||||||
|
echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
|
||||||
|
for file in "${ini_file[@]}"; do
|
||||||
|
sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d"
|
||||||
|
[ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ] && sudo ln -sf "$pecl_file" "$sapi_scan_dir/99-pecl.ini"
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Variables
|
# Function to Setup PHP
|
||||||
tick="✓"
|
setup_php() {
|
||||||
cross="✗"
|
step_log "Setup PHP"
|
||||||
ppa_updated="false"
|
sudo mkdir -m 777 -p /var/run /run/php
|
||||||
pecl_config="false"
|
if [ "$(php-config --version 2>/dev/null | cut -c 1-3)" != "$version" ]; then
|
||||||
version=$1
|
if [ ! -e "/usr/bin/php$version" ]; then
|
||||||
apt_install="sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y"
|
add_php >/dev/null 2>&1
|
||||||
existing_version=$(php-config --version | cut -c 1-3)
|
|
||||||
|
|
||||||
# Setup PHP
|
|
||||||
step_log "Setup PHP"
|
|
||||||
sudo mkdir -p /var/run
|
|
||||||
sudo mkdir -p /run/php
|
|
||||||
|
|
||||||
if [ "$existing_version" != "$version" ]; then
|
|
||||||
if [ ! -e "/usr/bin/php$version" ]; then
|
|
||||||
update_ppa
|
|
||||||
if [ "$version" = "8.0" ]; then
|
|
||||||
setup_master
|
|
||||||
else
|
else
|
||||||
$apt_install php"$version" php"$version"-curl php"$version"-mbstring php"$version"-xml >/dev/null 2>&1
|
if [ "${update:?}" = "true" ]; then
|
||||||
|
update_php >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
status="Switched to"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if ! [[ "$version" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
||||||
|
switch_version >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
status="installed"
|
|
||||||
else
|
else
|
||||||
status="switched"
|
if [ "$update" = "true" ]; then
|
||||||
|
update_php >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
status="Found"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
if ! command -v php"$version" >/dev/null; then
|
||||||
switch_version
|
add_log "$cross" "PHP" "Could not setup PHP $version"
|
||||||
|
exit 1
|
||||||
if [ "$version" = "8.0" ]; then
|
|
||||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
|
|
||||||
else
|
|
||||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
|
||||||
fi
|
fi
|
||||||
|
semver=$(php_semver)
|
||||||
|
ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
|
||||||
|
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
||||||
|
ini_dir=$(php --ini | grep "(php.ini)" | sed -e "s|.*: s*||")
|
||||||
|
pecl_file="$scan_dir"/99-pecl.ini
|
||||||
|
mapfile -t ini_file < <(sudo find "$ini_dir/.." -name "php.ini" -exec readlink -m {} +)
|
||||||
|
link_pecl_file
|
||||||
|
configure_php
|
||||||
|
sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
|
||||||
|
sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
|
||||||
|
sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
|
||||||
|
add_log "${tick:?}" "PHP" "$status PHP $semver"
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$status" != "switched" ]; then
|
# Variables
|
||||||
status="Installed PHP $semver"
|
version=$1
|
||||||
else
|
dist=$2
|
||||||
status="Switched to PHP $semver"
|
debconf_fix="DEBIAN_FRONTEND=noninteractive"
|
||||||
fi
|
apt_install="sudo $debconf_fix apt-fast install -y"
|
||||||
else
|
apt_remove="sudo $debconf_fix apt-fast remove -y"
|
||||||
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
scripts="${dist}"/../src/scripts
|
||||||
status="PHP $semver Found"
|
|
||||||
fi
|
|
||||||
|
|
||||||
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
# shellcheck source=.
|
||||||
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
. "${scripts:?}"/tools/add_tools.sh
|
||||||
sudo chmod 777 "$ini_file"
|
. "${scripts:?}"/common.sh
|
||||||
add_log "$tick" "PHP" "$status"
|
. /etc/lsb-release
|
||||||
|
read_env
|
||||||
|
self_hosted_setup
|
||||||
|
setup_php
|
||||||
|
116
src/scripts/sapi/sapi_darwin.sh
Normal file
116
src/scripts/sapi/sapi_darwin.sh
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
install_httpd() {
|
||||||
|
sudo mkdir -p /var/www/html
|
||||||
|
sudo chown -R _www:_www /var/www
|
||||||
|
brew services stop nginx 2>/dev/null || true
|
||||||
|
if ! command -v httpd >/dev/null; then
|
||||||
|
brew install httpd
|
||||||
|
fi
|
||||||
|
sudo sed -Ei '' 's/Listen.*/Listen 80/' "$httpd_conf"
|
||||||
|
sudo sed -Ei '' 's/DirectoryIndex.*/DirectoryIndex index.php index.html/' "$httpd_conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nginx() {
|
||||||
|
sudo mkdir -p /var/www/html
|
||||||
|
sudo chown -R "$(id -un)":"$(id -gn)" /var/www
|
||||||
|
brew services stop httpd 2>/dev/null || true
|
||||||
|
if ! command -v nginx >/dev/null; then
|
||||||
|
brew install nginx
|
||||||
|
fi
|
||||||
|
sudo sed -Ei '' 's/listen.*/listen 80;/' "$nginx_conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_sapi() {
|
||||||
|
sapi=$1
|
||||||
|
conf_dir="${dist:?}"/../src/configs
|
||||||
|
|
||||||
|
case $sapi in
|
||||||
|
apache*:apache*)
|
||||||
|
install_httpd
|
||||||
|
(
|
||||||
|
echo "LoadModule proxy_module lib/httpd/modules/mod_proxy.so"
|
||||||
|
echo "LoadModule proxy_module lib/httpd/modules/mod_proxy_fcgi.so"
|
||||||
|
) | sudo tee -a "$httpd_conf"
|
||||||
|
echo "Include $httpd_extra/httpd-php.conf" | sudo tee -a "$httpd_conf"
|
||||||
|
|
||||||
|
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
sudo a2dismod mpm_event 2>/dev/null || true
|
||||||
|
sudo a2enmod mpm_prefork php"${version:?}"
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
fpm:apache*)
|
||||||
|
install_httpd
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
sudo a2dismod php"${version:?}" 2>/dev/null || true
|
||||||
|
sudo a2enmod proxy_fcgi
|
||||||
|
sudo a2enconf php"${version:?}"-fpm
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
cgi:apache*)
|
||||||
|
install_httpd
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
echo "Action application/x-httpd-php /cgi-bin/php${version:?}" | sudo tee -a /etc/apache2/conf-available/php"${version:?}"-cgi.conf
|
||||||
|
sudo a2dismod php"${version:?}" mpm_event 2>/dev/null || true
|
||||||
|
sudo a2enmod mpm_prefork actions cgi
|
||||||
|
sudo a2disconf php"${version:?}"-fpm 2>/dev/null || true
|
||||||
|
sudo a2enconf php"${version:?}"-cgi
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
fpm:nginx)
|
||||||
|
install_nginx
|
||||||
|
sudo cp "$conf_dir"/default_nginx /etc/nginx/sites-available/default
|
||||||
|
sudo sed -i "s/PHP_VERSION/${version:?}/" /etc/nginx/sites-available/default
|
||||||
|
sudo service nginx restart
|
||||||
|
;;
|
||||||
|
apache* | fpm | cgi | phpdbg) ;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
check_service() {
|
||||||
|
service=$1
|
||||||
|
if ! pidof "$service"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$service" "Click to check $service status"
|
||||||
|
sudo service "$service" status
|
||||||
|
echo "::endgroup::"
|
||||||
|
) | sudo tee -a /tmp/sapi.log >/dev/null 2>&1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_version() {
|
||||||
|
sapi=$1
|
||||||
|
sapi_version=$(php_semver "$sapi")
|
||||||
|
if [ ${sapi_version%.*} != "${version:?}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
add_log "${tick:?}" "$sapi" "Added $sapi $sapi_version" | sudo tee -a /tmp/sapi.log >/dev/null 2>&1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_sapi() {
|
||||||
|
sapi=$1
|
||||||
|
sudo rm /tmp/sapi.log
|
||||||
|
if [[ "$sapi" =~ fpm|cgi ]]; then status=$(check_version php-"$sapi"); fi
|
||||||
|
if [[ "$sapi" =~ ^phpdbg$ ]]; then status=$(check_version phpdbg); fi
|
||||||
|
if [[ "$sapi" =~ .*fpm.* ]]; then status=$(check_service php"${version:?}"-fpm); fi
|
||||||
|
if [[ "$sapi" =~ .*:apache.* ]]; then status=$(check_service apache2); fi
|
||||||
|
if [[ "$sapi" =~ .*:nginx.* ]]; then status=$(check_service nginx); fi
|
||||||
|
|
||||||
|
if [ "$status" = "0" ]; then
|
||||||
|
if [[ "$sapi" =~ .*:.* ]]; then
|
||||||
|
add_log "${tick:?}" "$sapi" "Added $sapi"
|
||||||
|
fi
|
||||||
|
cat /tmp/sapi.log && sudo rm /tmp/sapi.log
|
||||||
|
else
|
||||||
|
add_log "${cross:?}" "$sapi" "Could not setup $sapi"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
httpd_conf=${brew_prefix:?}/etc/httpd/httpd.conf
|
||||||
|
httpd_extra=${brew_prefix:?}/etc/httpd/extra
|
||||||
|
nginx_conf=${brew_prefix:?}/etc/nginx/nginx.conf
|
117
src/scripts/sapi/sapi_linux.sh
Normal file
117
src/scripts/sapi/sapi_linux.sh
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
install_apache2() {
|
||||||
|
sudo mkdir -p /var/www/html
|
||||||
|
sudo service nginx stop 2>/dev/null || true
|
||||||
|
if ! command -v apache2 >/dev/null; then
|
||||||
|
install_packages apache2-bin apache2 -y;
|
||||||
|
else
|
||||||
|
if ! [[ "$(apache2 -v 2>/dev/null | grep -Eo "([0-9]+\.[0-9]+)")" =~ 2.[4-9] ]]; then
|
||||||
|
sudo "${debconf_fix:?}" apt-get purge apache* apache-* >/dev/null
|
||||||
|
install_packages apache2-bin apache2 -y;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_nginx() {
|
||||||
|
sudo mkdir -p /var/www/html
|
||||||
|
sudo service apache2 stop 2>/dev/null || true
|
||||||
|
if ! command -v nginx >/dev/null; then
|
||||||
|
install_packages nginx -y
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_sapi() {
|
||||||
|
sapi=$1
|
||||||
|
conf_dir="${dist:?}"/../src/configs
|
||||||
|
|
||||||
|
if [[ "${version:?}" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
||||||
|
switch_sapi "$sapi"
|
||||||
|
else
|
||||||
|
case $sapi in
|
||||||
|
apache*:apache*)
|
||||||
|
install_apache2
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
install_packages libapache2-mod-php"${version:?}" -y
|
||||||
|
sudo a2dismod mpm_event 2>/dev/null || true
|
||||||
|
sudo a2enmod mpm_prefork php"${version:?}"
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
fpm:apache*)
|
||||||
|
install_apache2
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
install_packages libapache2-mod-fcgid php"${version:?}"-fpm -y
|
||||||
|
sudo a2dismod php"${version:?}" 2>/dev/null || true
|
||||||
|
sudo a2enmod proxy_fcgi
|
||||||
|
sudo a2enconf php"${version:?}"-fpm
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
cgi:apache*)
|
||||||
|
install_apache2
|
||||||
|
install_packages php"${version:?}"-cgi -y
|
||||||
|
sudo cp "$conf_dir"/default_apache /etc/apache2/sites-available/000-default.conf
|
||||||
|
echo "Action application/x-httpd-php /cgi-bin/php${version:?}" | sudo tee -a /etc/apache2/conf-available/php"${version:?}"-cgi.conf
|
||||||
|
sudo a2dismod php"${version:?}" mpm_event 2>/dev/null || true
|
||||||
|
sudo a2enmod mpm_prefork actions cgi
|
||||||
|
sudo a2disconf php"${version:?}"-fpm 2>/dev/null || true
|
||||||
|
sudo a2enconf php"${version:?}"-cgi
|
||||||
|
sudo service apache2 restart
|
||||||
|
;;
|
||||||
|
fpm:nginx)
|
||||||
|
install_nginx
|
||||||
|
install_packages php"${version:?}"-fpm -y
|
||||||
|
sudo cp "$conf_dir"/default_nginx /etc/nginx/sites-available/default
|
||||||
|
sudo sed -i "s/PHP_VERSION/${version:?}/" /etc/nginx/sites-available/default
|
||||||
|
sudo service nginx restart
|
||||||
|
;;
|
||||||
|
apache*)
|
||||||
|
install_packages libapache2-mod-php"${version:?}" -y
|
||||||
|
;;
|
||||||
|
fpm|embed|cgi|phpdbg)
|
||||||
|
install_packages php"${version:?}"-"$sapi" -y
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_service() {
|
||||||
|
service=$1
|
||||||
|
if ! pidof "$service"; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
(
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$service" "Click to check $service status"
|
||||||
|
sudo service "$service" status
|
||||||
|
echo "::endgroup::"
|
||||||
|
) | sudo tee -a /tmp/sapi.log >/dev/null 2>&1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_version() {
|
||||||
|
sapi=$1
|
||||||
|
sapi_version=$(php_semver "$sapi")
|
||||||
|
if [ "${sapi_version%.*}" != "${version:?}" ]; then
|
||||||
|
return 1;
|
||||||
|
fi
|
||||||
|
add_log "${tick:?}" "$sapi" "Added $sapi $sapi_version" | sudo tee -a /tmp/sapi.log >/dev/null 2>&1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
check_sapi() {
|
||||||
|
sapi=$1
|
||||||
|
sudo rm /tmp/sapi.log
|
||||||
|
if [[ "$sapi" =~ fpm|cgi ]]; then status=$(check_version php-"$sapi"); fi
|
||||||
|
if [[ "$sapi" =~ ^phpdbg$ ]]; then status=$(check_version phpdbg); fi
|
||||||
|
if [[ "$sapi" =~ .*fpm.* ]]; then status=$(check_service php"${version:?}"-fpm); fi
|
||||||
|
if [[ "$sapi" =~ .*:apache.* ]]; then status=$(check_service apache2); fi
|
||||||
|
if [[ "$sapi" =~ .*:nginx.* ]]; then status=$(check_service nginx); fi
|
||||||
|
|
||||||
|
if [ "$status" = "0" ]; then
|
||||||
|
if [[ "$sapi" =~ .*:.* ]]; then
|
||||||
|
add_log "${tick:?}" "$sapi" "Added $sapi"
|
||||||
|
fi
|
||||||
|
cat /tmp/sapi.log && sudo rm /tmp/sapi.log
|
||||||
|
else
|
||||||
|
add_log "${cross:?}" "$sapi" "Could not setup $sapi"
|
||||||
|
fi
|
||||||
|
}
|
26
src/scripts/tools/add_tools.ps1
Normal file
26
src/scripts/tools/add_tools.ps1
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Function Add-ToolsHelper() {
|
||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
$tool
|
||||||
|
)
|
||||||
|
if($tool -eq "codeception") {
|
||||||
|
Copy-Item $composer_bin\codecept.bat -Destination $composer_bin\codeception.bat
|
||||||
|
} elseif($tool -eq "composer") {
|
||||||
|
Edit-ComposerConfig $bin_dir\$tool
|
||||||
|
} elseif($tool -eq "cs2pr") {
|
||||||
|
(Get-Content $bin_dir/cs2pr).replace('exit(9)', 'exit(0)') | Set-Content $bin_dir/cs2pr
|
||||||
|
} elseif($tool -eq "phan") {
|
||||||
|
Add-Extension fileinfo >$null 2>&1
|
||||||
|
Add-Extension ast >$null 2>&1
|
||||||
|
} elseif($tool -eq "phive") {
|
||||||
|
Add-Extension xml >$null 2>&1
|
||||||
|
} elseif($tool -eq "symfony") {
|
||||||
|
Add-ToProfile $current_profile "symfony" "New-Alias symfony $bin_dir\$tool.exe"
|
||||||
|
Add-ToProfile $current_profile "symfony-cli" "New-Alias symfony-cli $bin_dir\$tool.exe"
|
||||||
|
} elseif($tool -eq "vapor-cli") {
|
||||||
|
Copy-Item $composer_bin\vapor.bat -Destination $composer_bin\vapor-cli.bat
|
||||||
|
} elseif($tool -eq "wp-cli") {
|
||||||
|
Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat
|
||||||
|
}
|
||||||
|
}
|
24
src/scripts/tools/add_tools.sh
Normal file
24
src/scripts/tools/add_tools.sh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
add_tools_helper() {
|
||||||
|
tool=$1
|
||||||
|
if [ "$tool" = "codeception" ]; then
|
||||||
|
sudo ln -s "${composer_bin:?}"/codecept "${composer_bin:?}"/codeception
|
||||||
|
elif [ "$tool" = "composer" ]; then
|
||||||
|
configure_composer "${tool_path:?}"
|
||||||
|
elif [ "$tool" = "cs2pr" ]; then
|
||||||
|
sudo sed -i 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}" 2>/dev/null ||
|
||||||
|
sudo sed -i '' 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}"
|
||||||
|
elif [ "$tool" = "phan" ]; then
|
||||||
|
add_extension fileinfo extension >/dev/null 2>&1
|
||||||
|
add_extension ast extension >/dev/null 2>&1
|
||||||
|
elif [ "$tool" = "phive" ]; then
|
||||||
|
add_extension curl extension >/dev/null 2>&1
|
||||||
|
add_extension mbstring extension >/dev/null 2>&1
|
||||||
|
add_extension xml extension >/dev/null 2>&1
|
||||||
|
elif [ "$tool" = "symfony" ]; then
|
||||||
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/symfony-cli
|
||||||
|
elif [ "$tool" = "vapor-cli" ]; then
|
||||||
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/vapor-cli
|
||||||
|
elif [ "$tool" = "wp-cli" ]; then
|
||||||
|
sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/wp
|
||||||
|
fi
|
||||||
|
}
|
21
src/scripts/tools/blackfire.ps1
Normal file
21
src/scripts/tools/blackfire.ps1
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Function to add blackfire and blackfire-agent.
|
||||||
|
Function Add-Blackfire() {
|
||||||
|
$arch_name ='amd64'
|
||||||
|
if(-not([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
|
||||||
|
$arch_name = '386'
|
||||||
|
}
|
||||||
|
$agent_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).agent
|
||||||
|
$url = "https://packages.blackfire.io/binaries/blackfire-agent/${agent_version}/blackfire-agent-windows_${arch_name}.zip"
|
||||||
|
Invoke-WebRequest -Uri $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
|
||||||
|
Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
||||||
|
Add-ToProfile $current_profile 'blackfire' "New-Alias blackfire $bin_dir\blackfire.exe"
|
||||||
|
Add-ToProfile $current_profile 'blackfire-agent' "New-Alias blackfire-agent $bin_dir\blackfire-agent.exe"
|
||||||
|
if ((Test-Path env:BLACKFIRE_SERVER_ID) -and (Test-Path env:BLACKFIRE_SERVER_TOKEN)) {
|
||||||
|
blackfire-agent --register --server-id=$env:BLACKFIRE_SERVER_ID --server-token=$env:BLACKFIRE_SERVER_TOKEN >$null 2>&1
|
||||||
|
}
|
||||||
|
if ((Test-Path env:BLACKFIRE_CLIENT_ID) -and (Test-Path env:BLACKFIRE_CLIENT_TOKEN)) {
|
||||||
|
blackfire config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem >$null 2>&1
|
||||||
|
}
|
||||||
|
Add-Log $tick "blackfire" "Added blackfire $agent_version"
|
||||||
|
Add-Log $tick "blackfire-agent" "Added blackfire-agent $agent_version"
|
||||||
|
}
|
35
src/scripts/tools/blackfire.sh
Normal file
35
src/scripts/tools/blackfire.sh
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
add_blackfire_linux() {
|
||||||
|
sudo mkdir -p /var/run/blackfire
|
||||||
|
get -s -n "" https://packages.blackfire.io/gpg.key | sudo apt-key add -
|
||||||
|
echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list
|
||||||
|
sudo "${debconf_fix:?}" apt-get update
|
||||||
|
${apt_install:?} blackfire-agent
|
||||||
|
}
|
||||||
|
|
||||||
|
add_blackfire_darwin() {
|
||||||
|
sudo mkdir -p /usr/local/var/run
|
||||||
|
brew tap --shallow blackfireio/homebrew-blackfire
|
||||||
|
brew install blackfire-agent
|
||||||
|
}
|
||||||
|
|
||||||
|
blackfire_config() {
|
||||||
|
if [[ -n $BLACKFIRE_SERVER_ID ]] && [[ -n $BLACKFIRE_SERVER_TOKEN ]]; then
|
||||||
|
sudo blackfire-agent --register --server-id="$BLACKFIRE_SERVER_ID" --server-token="$BLACKFIRE_SERVER_TOKEN"
|
||||||
|
[ "$os" = "Linux" ] && sudo /etc/init.d/blackfire-agent restart
|
||||||
|
[ "$os" = "Darwin" ] && brew services start blackfire-agent
|
||||||
|
fi
|
||||||
|
if [[ -n $BLACKFIRE_CLIENT_ID ]] && [[ -n $BLACKFIRE_CLIENT_TOKEN ]]; then
|
||||||
|
blackfire config --client-id="$BLACKFIRE_CLIENT_ID" --client-token="$BLACKFIRE_CLIENT_TOKEN"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to add blackfire and blackfire-agent.
|
||||||
|
add_blackfire() {
|
||||||
|
os="$(uname -s)"
|
||||||
|
[ "$os" = "Linux" ] && add_blackfire_linux >/dev/null 2>&1
|
||||||
|
[ "$os" = "Darwin" ] && add_blackfire_darwin >/dev/null 2>&1
|
||||||
|
blackfire_config >/dev/null 2>&1
|
||||||
|
tool_version=$(get_tool_version "blackfire" "version")
|
||||||
|
add_log "${tick:?}" "blackfire" "Added blackfire $tool_version"
|
||||||
|
add_log "${tick:?}" "blackfire-agent" "Added blackfire-agent $tool_version"
|
||||||
|
}
|
21
src/scripts/tools/grpc_php_plugin.ps1
Normal file
21
src/scripts/tools/grpc_php_plugin.ps1
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Function Add-Msys2() {
|
||||||
|
$msys_location = 'C:\msys64'
|
||||||
|
if (-not(Test-Path $msys_location)) {
|
||||||
|
choco install msys2 -y >$null 2>&1
|
||||||
|
$msys_location = 'C:\tools\msys64'
|
||||||
|
}
|
||||||
|
return $msys_location
|
||||||
|
}
|
||||||
|
|
||||||
|
Function Add-Grpc_php_plugin() {
|
||||||
|
$msys_location = Add-Msys2
|
||||||
|
$logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm mingw-w64-x86_64-grpc" >$null 2>&1
|
||||||
|
$grpc_version = Get-ToolVersion 'Write-Output' "$logs"
|
||||||
|
Write-Output "$msys_location\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||||
|
Write-Output "::set-output name=grpc_php_plugin_path::$msys_location\mingw64\bin\grpc_php_plugin.exe"
|
||||||
|
Add-ToProfile $current_profile 'grpc_php_plugin' "New-Alias grpc_php_plugin $msys_location\mingw64\bin\grpc_php_plugin.exe"
|
||||||
|
Add-Log $tick "grpc_php_plugin" "Added grpc_php_plugin $grpc_version"
|
||||||
|
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "grpc_php_plugin" "Click to read the grpc_php_plugin related license information"
|
||||||
|
Write-Output (Invoke-WebRequest https://raw.githubusercontent.com/grpc/grpc/master/LICENSE).Content
|
||||||
|
Write-Output "::endgroup::"
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user