mirror of
https://github.com/shivammathur/setup-php.git
synced 2026-10-15 20:06:58 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6f75134d3 | ||
|
|
1874353919 | ||
|
|
eea39ea741 | ||
|
|
bac56c8d91 | ||
|
|
124d256c78 | ||
|
|
eeddcfe955 | ||
|
|
de2903ad82 | ||
|
|
bbe1204148 | ||
|
|
99a92d54d5 | ||
|
|
7c6c249257 | ||
|
|
e6d44f159a | ||
|
|
dc513528da | ||
|
|
bfbd3882c0 | ||
|
|
3c525df325 | ||
|
|
a36e1e52ff | ||
|
|
04ff9b08a2 | ||
|
|
65fad67e88 | ||
|
|
6668249e24 | ||
|
|
81c255f988 | ||
|
|
81cd5ae092 | ||
|
|
29a9813921 | ||
|
|
f60e7de98e | ||
|
|
b5efb21934 | ||
|
|
26e6a92f3b | ||
|
|
28b68529b5 | ||
|
|
4e4861ec30 | ||
|
|
70169700c3 | ||
|
|
f4e27c9ead | ||
|
|
9855c76987 | ||
|
|
546935924a | ||
|
|
491e9de600 | ||
|
|
e3bda5bed8 | ||
|
|
e70f6d9e7c | ||
|
|
92e992b198 | ||
|
|
99680be1df | ||
|
|
e83e329355 | ||
|
|
10c12b9377 | ||
|
|
91026460e4 | ||
|
|
7fdd3ece87 | ||
|
|
0de5aa9140 | ||
|
|
a6e0b1404f | ||
|
|
5d259c66b1 | ||
|
|
6207829361 | ||
|
|
319feb83c2 | ||
|
|
661ad4bf75 | ||
|
|
04c15e2314 | ||
|
|
5aa416d77b | ||
|
|
a9a661ccd4 | ||
|
|
321f8d7d9a | ||
|
|
7af6c0fe6f | ||
|
|
36e04fc85c | ||
|
|
95916a72b1 | ||
|
|
a5fb328c6a | ||
|
|
72ae4ccbe5 | ||
|
|
5b2015e8fe | ||
|
|
9c77701ae5 | ||
|
|
394503cb8a | ||
|
|
f1cc14e3d5 | ||
|
|
9d529a72e0 | ||
|
|
c63f07d82e | ||
|
|
e40aa32c04 | ||
|
|
a683e80307 | ||
|
|
7ce22e0264 | ||
|
|
4bd44f22a9 | ||
|
|
d2f333de6f | ||
|
|
948bd8df3c | ||
|
|
8cac79fdb1 | ||
|
|
6cc8b47c6f | ||
|
|
0be6fa1958 | ||
|
|
22d9c80367 | ||
|
|
4630172078 | ||
|
|
1b02c009e7 | ||
|
|
12282c9597 | ||
|
|
592bbc7716 | ||
|
|
fb5054b163 | ||
|
|
3f2a402846 | ||
|
|
c5fc0d8281 | ||
|
|
48037d201f | ||
|
|
71b43c4f65 | ||
|
|
3818224063 | ||
|
|
5b29e8a454 | ||
|
|
2a798336a0 | ||
|
|
cb8f453143 | ||
|
|
19323ea920 | ||
|
|
b951cf1d99 | ||
|
|
1fdc5e773b | ||
|
|
1474d67903 | ||
|
|
1afae1868c | ||
|
|
36e33e130a | ||
|
|
3d794ddd93 | ||
|
|
c61bd0e074 | ||
|
|
1f8252a3ed | ||
|
|
3e2462a699 | ||
|
|
e513384a65 | ||
|
|
6483a6ea70 | ||
|
|
ca308a6886 | ||
|
|
035ef490b9 | ||
|
|
6bf279d08a | ||
|
|
bb16550379 | ||
|
|
7d999d501a | ||
|
|
7f8b1e5773 | ||
|
|
6461006ceb | ||
|
|
5f422817a1 | ||
|
|
1b08836381 | ||
|
|
ae98bca05f | ||
|
|
fb1ad7fc84 | ||
|
|
0d60024683 | ||
|
|
1224b29111 | ||
|
|
2f306f9d25 | ||
|
|
39b4e4a983 | ||
|
|
7e46297c8d | ||
|
|
f9390a5478 | ||
|
|
f42145a164 | ||
|
|
755bbb1cc0 | ||
|
|
a36edd3ca4 | ||
|
|
f2018b2189 | ||
|
|
9c411b6e2b | ||
|
|
e8d8aa3403 | ||
|
|
686e8dfff9 | ||
|
|
b46c8e2a8c | ||
|
|
2d47531473 | ||
|
|
fd03521cb4 | ||
|
|
f03add0b41 | ||
|
|
baf9535ba5 | ||
|
|
cc0e576689 | ||
|
|
d30ad8b184 | ||
|
|
0f765070fa | ||
|
|
313d0cfdbf | ||
|
|
cf767706fe | ||
|
|
1267cf80a1 | ||
|
|
7abee8e28c | ||
|
|
dd0115673c | ||
|
|
bbc65d999a | ||
|
|
6db1a06425 | ||
|
|
52eb86c60c | ||
|
|
2b77dd6b79 | ||
|
|
224f9ddef5 | ||
|
|
7f5c8b51ba | ||
|
|
bd5c747191 | ||
|
|
40846b27d0 | ||
|
|
8e2ac35f63 | ||
|
|
a1e6789a94 | ||
|
|
9114b007ae | ||
|
|
cb0c293f02 | ||
|
|
387ec95b46 | ||
|
|
3514d30f93 | ||
|
|
e186e47261 | ||
|
|
e51e662ef0 | ||
|
|
5afd8a1842 | ||
|
|
1a42045d48 | ||
|
|
b3a12ce01e | ||
|
|
04b2ed5b3e | ||
|
|
189e8e6ec0 | ||
|
|
3407e6019c | ||
|
|
f20012026f | ||
|
|
7743b7976f | ||
|
|
b7b50ce742 | ||
|
|
aa9b80f158 | ||
|
|
53adb47562 | ||
|
|
f7d3c00320 | ||
|
|
b359d922e7 | ||
|
|
01aa440f0b | ||
|
|
51f83e019c | ||
|
|
173ca15c9b | ||
|
|
4704ad638a | ||
|
|
1a18b2267f | ||
|
|
e9704839e9 | ||
|
|
5178fac634 | ||
|
|
388883d4bf | ||
|
|
cae6d06e69 | ||
|
|
89f4f7e8be | ||
|
|
d2efbcd126 | ||
|
|
98e3af0bff | ||
|
|
e8836c6d46 | ||
|
|
9068f2e46f | ||
|
|
5bbbd3fdf6 | ||
|
|
7622357ff1 | ||
|
|
6652a09da6 | ||
|
|
48fb8e1194 | ||
|
|
bbc6e9069b | ||
|
|
37dcd1cf8c | ||
|
|
12b1efad4b | ||
|
|
0575a32108 | ||
|
|
71b0e09dbc | ||
|
|
edff21f0a6 | ||
|
|
22035eb75b | ||
|
|
b556cf7292 | ||
|
|
f99a9d4624 | ||
|
|
a49dfe8457 | ||
|
|
7ff9ac44b4 | ||
|
|
7aff4d7a22 | ||
|
|
633321754d | ||
|
|
40a4cb064f | ||
|
|
45410ae8f0 | ||
|
|
56ad5977ba | ||
|
|
6353d20df2 | ||
|
|
e04e1d97f0 | ||
|
|
52685a348b | ||
|
|
44d81f9830 | ||
|
|
401bdecb71 | ||
|
|
aa82ffc68f | ||
|
|
7e03c76ef2 | ||
|
|
16011a795d | ||
|
|
66f24470dc | ||
|
|
e57ea715eb | ||
|
|
e8ba27f3d2 | ||
|
|
945c34c175 | ||
|
|
c8c64c6cf9 | ||
|
|
0d3f92f127 | ||
|
|
4979d5b484 | ||
|
|
0d9a1ba5ae | ||
|
|
3ede7656cb | ||
|
|
f3cdc074ce | ||
|
|
109db648f1 | ||
|
|
3ccc00eece | ||
|
|
0f688a10cb | ||
|
|
3312ea6101 | ||
|
|
ce49f82dd8 | ||
|
|
cf5cd90b4c | ||
|
|
cdb037c2a4 | ||
|
|
261f13a7c5 | ||
|
|
9eaa66d89b | ||
|
|
da9dfe4a71 | ||
|
|
a863ab6d3d | ||
|
|
050cb8061b | ||
|
|
3fda17f3fa | ||
|
|
1a2cb4f872 | ||
|
|
4969814b69 | ||
|
|
07f2ea7d02 | ||
|
|
a1c17b4b18 | ||
|
|
3eda583472 | ||
|
|
74d43be8a3 | ||
|
|
aa1fe473f9 | ||
|
|
a92acf13e4 | ||
|
|
0533892eb4 | ||
|
|
43fb4ad30e | ||
|
|
b88a8c89d1 | ||
|
|
36d7f6c7c5 | ||
|
|
a1a52db9f3 | ||
|
|
88e54b10ca | ||
|
|
203099e007 | ||
|
|
4e9ea33f8d | ||
|
|
68ba5ba947 | ||
|
|
99af32331c | ||
|
|
810a92a9b0 | ||
|
|
9c760dd6e2 | ||
|
|
dea233d702 | ||
|
|
787285e08a | ||
|
|
ee065c5938 | ||
|
|
dbc8ba0844 | ||
|
|
fe9e23a16a | ||
|
|
16de39288a | ||
|
|
67ff09364d | ||
|
|
1dfe0dc4a4 | ||
|
|
6f83b63bf5 | ||
|
|
f0db57dcab | ||
|
|
6cba851606 | ||
|
|
209324abab | ||
|
|
846135c190 | ||
|
|
32d20248ae | ||
|
|
ba8485d89f | ||
|
|
97721a77b9 | ||
|
|
7dfee150df | ||
|
|
251330ef7f | ||
|
|
448bd61c6f | ||
|
|
657e0936e8 | ||
|
|
36d70683e9 | ||
|
|
7a9bf9ecf6 | ||
|
|
5210dd20ed | ||
|
|
e83d1a7f9e | ||
|
|
6ae3564af4 | ||
|
|
9e33c7b24e | ||
|
|
d37cc30485 | ||
|
|
412722b7c7 | ||
|
|
c19f6bbdcd | ||
|
|
dfd2c8da97 | ||
|
|
27eef9a04c | ||
|
|
f172a4dc76 | ||
|
|
c88ece8451 | ||
|
|
33ad931dbb | ||
|
|
4e4b26a024 | ||
|
|
228bfba836 | ||
|
|
34c35ecdad | ||
|
|
1828f05f7a | ||
|
|
927419e77f | ||
|
|
e29242d481 | ||
|
|
035c0a8550 | ||
|
|
e9884d0d9a | ||
|
|
02131e37d9 | ||
|
|
341d29a88f | ||
|
|
5e3bc57de0 | ||
|
|
a826799c7c | ||
|
|
62bd8f3ca4 | ||
|
|
4056d3f353 | ||
|
|
ddf8825c2f | ||
|
|
4678e809c3 | ||
|
|
b75c104ca8 | ||
|
|
94c859a50e | ||
|
|
293da043d1 | ||
|
|
808396c4e6 | ||
|
|
7205f47330 | ||
|
|
7ad352e12a | ||
|
|
5bf95cd61f | ||
|
|
18f3abac75 | ||
|
|
7854a0cae7 | ||
|
|
a72a638da4 | ||
|
|
46c34bb6a5 | ||
|
|
948917a97b | ||
|
|
d9cb143213 | ||
|
|
0cfde7beae | ||
|
|
ce2a129c36 | ||
|
|
78532b17de | ||
|
|
8b26e8d15a | ||
|
|
4dc94c27cf | ||
|
|
76555571a6 | ||
|
|
be43989cc9 | ||
|
|
6f6e534936 | ||
|
|
99a4a141f4 | ||
|
|
c1285cc7f3 | ||
|
|
57662657e0 | ||
|
|
8d4007321f | ||
|
|
8eb9866044 | ||
|
|
e554590514 | ||
|
|
5959fab498 | ||
|
|
408b70728f | ||
|
|
9d74a11420 | ||
|
|
5acd006232 | ||
|
|
0022878947 | ||
|
|
71d07ee7f4 | ||
|
|
8d1c02194f | ||
|
|
5187531b8b | ||
|
|
44ff4ed92d | ||
|
|
96857323bb | ||
|
|
cad2a1bda3 | ||
|
|
c2c73b16c1 | ||
|
|
63c7766312 | ||
|
|
175c9649c4 | ||
|
|
495989aff1 | ||
|
|
c09e310dc1 | ||
|
|
1db2ec93f3 | ||
|
|
0a601ebeee | ||
|
|
da21b560da | ||
|
|
c1efd614e8 | ||
|
|
dcf2f7f74f | ||
|
|
8109be4850 | ||
|
|
a0a791cada | ||
|
|
147905fd60 | ||
|
|
57db6baebb | ||
|
|
c38f1acc38 | ||
|
|
9ca9ab33ef | ||
|
|
fdbb31f707 | ||
|
|
14a9f0b4ae | ||
|
|
2ee6797b63 | ||
|
|
2b729b1130 | ||
|
|
0374a8ae84 | ||
|
|
7f951c9333 | ||
|
|
449da348c0 | ||
|
|
51476af47d | ||
|
|
9a70be75c2 | ||
|
|
282305f4d7 | ||
|
|
c2a765ed5b | ||
|
|
9ea5899759 | ||
|
|
62d47dd238 | ||
|
|
e480353a3d | ||
|
|
3a4acaaed8 | ||
|
|
f7f679181d | ||
|
|
f3010adf3e | ||
|
|
b7cdb2373c | ||
|
|
22ebe0d733 | ||
|
|
cb614c45fa | ||
|
|
e6e79e1717 | ||
|
|
45a631dbaf | ||
|
|
1fd26e45c8 | ||
|
|
de4fdb85b9 | ||
|
|
2fd8046c9d | ||
|
|
d189609ea9 | ||
|
|
3681a25ab6 | ||
|
|
092944b039 | ||
|
|
9e30788903 | ||
|
|
bca2d0b1b0 | ||
|
|
d78b8a6d49 | ||
|
|
da0e854737 | ||
|
|
f24f33ea89 | ||
|
|
7789b4e03e | ||
|
|
75988cd9be | ||
|
|
65341e4a6d | ||
|
|
0f13e29d1f | ||
|
|
5cd765a20d | ||
|
|
deb31af403 | ||
|
|
a6b35b119b | ||
|
|
7dadf1bf21 | ||
|
|
cca8ad3588 | ||
|
|
7117491f1a | ||
|
|
aa1efabe45 | ||
|
|
dab0e73adf | ||
|
|
15b20027cf | ||
|
|
1b4cc0b6fa | ||
|
|
bbba8d75a6 | ||
|
|
a274bd910a | ||
|
|
f4d1db5c23 | ||
|
|
cecf84878d | ||
|
|
be75d5e01d | ||
|
|
cf36ddc55e | ||
|
|
fe438f8e25 | ||
|
|
fdd0a76eca | ||
|
|
7c0b4c8c8e | ||
|
|
b33066473d | ||
|
|
92b4784fb6 | ||
|
|
345999bf0b | ||
|
|
4c5c122aa6 | ||
|
|
bee5abe269 | ||
|
|
220d0c24c7 | ||
|
|
2f5c2edb22 | ||
|
|
721e4c3367 | ||
|
|
2f2a90e464 | ||
|
|
81a06ff6ed | ||
|
|
dfc02c42d9 | ||
|
|
ac7d3d7f84 | ||
|
|
874e5099b0 | ||
|
|
4a3337d069 | ||
|
|
123f6df529 | ||
|
|
341cf69e13 | ||
|
|
f7b503e36b | ||
|
|
beaceb0089 | ||
|
|
03509eca9b | ||
|
|
2c9c274411 | ||
|
|
1c85db7f9e | ||
|
|
d259dd49a2 | ||
|
|
ea20ae1fbd | ||
|
|
383c74bb06 | ||
|
|
b4593b7df0 | ||
|
|
9b92c9db92 | ||
|
|
a357b6a054 | ||
|
|
0bc2f7ce96 | ||
|
|
e2e76ea34f | ||
|
|
719018955c | ||
|
|
4c903565c9 | ||
|
|
fc60088a95 | ||
|
|
a7f90656b3 | ||
|
|
0cd4af837e | ||
|
|
96e47f9be7 | ||
|
|
eca40cad4d | ||
|
|
4e864eae3b | ||
|
|
49a0bad962 | ||
|
|
b971d8f4ad | ||
|
|
fca0924fa9 | ||
|
|
8dfe214356 | ||
|
|
f2d6820ca2 | ||
|
|
705c2a5785 | ||
|
|
5e33fdb0d9 | ||
|
|
dab978c436 | ||
|
|
2cc925b655 | ||
|
|
4ce6f3c3df | ||
|
|
b3bf0f3990 | ||
|
|
8426bf89fd | ||
|
|
d7c3e33a96 | ||
|
|
17ef667e04 | ||
|
|
295b5da700 | ||
|
|
e820a5d75b | ||
|
|
2c8682d5e6 | ||
|
|
87993cd853 | ||
|
|
e0dd9c9560 | ||
|
|
28853c9f3b | ||
|
|
608ad1a0cf | ||
|
|
257e4c088d | ||
|
|
7b145b5fae | ||
|
|
253459691c | ||
|
|
cb5db3f888 | ||
|
|
52d2b3b70b | ||
|
|
fa5fbefff9 | ||
|
|
256b466cc4 | ||
|
|
57f4a60e24 | ||
|
|
2e289f30e2 | ||
|
|
bc0d607611 | ||
|
|
1fa3ba1b16 | ||
|
|
d8d1da5d6d | ||
|
|
094bc8ae17 | ||
|
|
48aac87d46 | ||
|
|
31971c78cd | ||
|
|
13760f5b16 | ||
|
|
c644f654ce | ||
|
|
9adda12e86 | ||
|
|
6db8a6c378 | ||
|
|
a34eeedd37 | ||
|
|
35bc046b26 | ||
|
|
64e9bb0e79 | ||
|
|
19a01870e7 | ||
|
|
c4560dd084 | ||
|
|
0313f578ce | ||
|
|
d068c17d9e | ||
|
|
8eebeae48a | ||
|
|
da9dadf09c | ||
|
|
e06e40278f | ||
|
|
6473b1c04c | ||
|
|
7694412cb0 | ||
|
|
e990e98a54 | ||
|
|
b2d037d560 | ||
|
|
4beeea41b4 | ||
|
|
8e80635955 | ||
|
|
c8837583fc | ||
|
|
bb36513e49 | ||
|
|
5402397d9f | ||
|
|
f6b4601c63 | ||
|
|
ed62711289 | ||
|
|
2cb9b82943 | ||
|
|
4f420be5bd | ||
|
|
cf40c1e950 | ||
|
|
91936faf85 | ||
|
|
ca319bd10e | ||
|
|
4d3cfaa653 | ||
|
|
c8b716540c | ||
|
|
1cecc2cc99 | ||
|
|
5137c78ee5 | ||
|
|
c37021df01 | ||
|
|
c6e99860cd | ||
|
|
05b4ac2afb | ||
|
|
91bd11146c | ||
|
|
8ace7bdc6e | ||
|
|
4bb4f1812c | ||
|
|
7bd9f10bef | ||
|
|
0b38e86c65 | ||
|
|
b717b2fcde | ||
|
|
216d501175 | ||
|
|
c2e811ce23 | ||
|
|
dbf50bf9e0 |
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"env": { "node": true, "jest": true },
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": { "ecmaVersion": 2019, "sourceType": "module" },
|
||||
"parserOptions": { "ecmaVersion": 2021, "sourceType": "module" },
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
|
||||
+46
-33
@@ -1,37 +1,26 @@
|
||||
# Contributing to setup-php
|
||||
|
||||
## Welcome!
|
||||
|
||||
We look forward to your contributions! Here are some examples how you can contribute:
|
||||
|
||||
* [Ask any questions you may have](https://github.com/shivammathur/setup-php/discussions/new?category=Q-A-Help)
|
||||
* [Report a bug](https://github.com/shivammathur/setup-php/issues/new?labels=type/bug&template=bug.md)
|
||||
* [Propose a new feature](https://github.com/shivammathur/setup-php/issues/new?labels=enhancement&template=feature.md)
|
||||
* [Send a pull request](https://github.com/shivammathur/setup-php/pulls)
|
||||
|
||||
## Contributor Code of Conduct
|
||||
|
||||
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
||||
|
||||
## Workflow
|
||||
## Getting Started
|
||||
|
||||
* Fork the project.
|
||||
* Make your bug fix or feature addition.
|
||||
* Add tests for it, so we don't break it in a future version unintentionally.
|
||||
* 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.
|
||||
|
||||
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
|
||||
|
||||
## Using setup-php from a Git checkout
|
||||
|
||||
The following commands can be used to perform the initial checkout of setup-php:
|
||||
To get started fork `setup-php` and clone it using git:
|
||||
|
||||
```bash
|
||||
$ git clone https://github.com/shivammathur/setup-php.git
|
||||
git clone https://github.com/<your-username>/setup-php.git
|
||||
|
||||
$ cd setup-php
|
||||
```
|
||||
|
||||
Install setup-php dependencies using [npm](https://www.npmjs.com/):
|
||||
|
||||
```bash
|
||||
$ npm install
|
||||
cd setup-php
|
||||
```
|
||||
|
||||
If you are using `Windows` configure `git` to handle line endings.
|
||||
@@ -40,31 +29,55 @@ If you are using `Windows` configure `git` to handle line endings.
|
||||
git config --local core.autocrlf true
|
||||
```
|
||||
|
||||
Install `setup-php` dependencies using [npm](https://www.npmjs.com/):
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
## Workflow to create Pull Requests
|
||||
|
||||
* Fork the `setup-php` project and clone it.
|
||||
* Create a new branch from the develop branch.
|
||||
* Make your bug fix or feature addition.
|
||||
* Add tests for it, so we don't break it in a future version unintentionally.
|
||||
* Ensure the test suite passes and the code complies with our coding guidelines (see below).
|
||||
* Send a pull request to the develop branch with all the details.
|
||||
* If possible, create a GitHub Actions workflow with an integration test for the change in a demo repository and link it in your pull request.
|
||||
|
||||
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 personally and feel free to remind.
|
||||
|
||||
## Coding Guidelines
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
```bash
|
||||
$ npm test
|
||||
npm test
|
||||
```
|
||||
|
||||
## Creating a release
|
||||
### Creating a release
|
||||
|
||||
Create a release before you push your changes.
|
||||
Creating a release means compiling all the TypeScript code to a single file which `setup-php` can run. Run this, before you push your changes.
|
||||
|
||||
```bash
|
||||
$ npm run release
|
||||
npm run build
|
||||
npm run release
|
||||
```
|
||||
|
||||
## Reporting issues
|
||||
### Reporting issues and discussions
|
||||
|
||||
Please submit the issue using the appropriate template provided for a bug report or a feature request:
|
||||
For questions or support, we prefer GitHub Discussions. For any bugs or new features you can create an issue using the appropriate template:
|
||||
|
||||
* [Discussions](https://github.com/shivammathur/setup-php/discussions)
|
||||
* [Issues](https://github.com/shivammathur/setup-php/issues)
|
||||
+1
-5
@@ -1,7 +1,3 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
open_collective: setup-php
|
||||
tidelift: "npm/setup-php"
|
||||
community_bridge: setup-php
|
||||
patreon: shivammathur
|
||||
custom: https://www.paypal.me/shivammathur
|
||||
github: shivammathur
|
||||
File renamed without changes.
File renamed without changes.
+5
-10
@@ -2,22 +2,17 @@
|
||||
|
||||
## Supported Versions
|
||||
|
||||
The following versions of this project are supported for security updates.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 1.11.x | :white_check_mark: |
|
||||
| 2.11.x | :white_check_mark: |
|
||||
The latest patch versions of `v1` and `v2` releases of this project are supported for security updates.
|
||||
|
||||
## Supported PHP Versions
|
||||
|
||||
This security policy only applies to the latest patches of the following PHP versions.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 7.3 | :white_check_mark: |
|
||||
| 7.4 | :white_check_mark: |
|
||||
| 8.0 | :white_check_mark: |
|
||||
|---------|--------------------|
|
||||
| 8.1 | :white_check_mark: |
|
||||
| 8.2 | :white_check_mark: |
|
||||
| 8.3 | :white_check_mark: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
name : CodeQL Configuration
|
||||
|
||||
paths:
|
||||
- './src'
|
||||
@@ -0,0 +1,7 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
target-branch: "develop"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
@@ -0,0 +1,32 @@
|
||||
name: CodeQL Workflow
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 15 * * 6'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
codeql:
|
||||
permissions:
|
||||
actions: read # for github/codeql-action/init to get workflow details
|
||||
contents: read # for actions/checkout to fetch code
|
||||
security-events: write # for github/codeql-action/autobuild to send a status report
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
config-file: ./.github/codeql/codeql-configuration.yml
|
||||
languages: javascript
|
||||
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
+30
-15
@@ -3,25 +3,30 @@ on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 15 * * 6'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
create:
|
||||
permissions:
|
||||
contents: none
|
||||
name: Create
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-20.04, ubuntu-18.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']
|
||||
operating-system: [ubuntu-22.04, ubuntu-20.04, windows-2022, macos-12]
|
||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
|
||||
steps:
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
- name: Save unix
|
||||
- name: Create for Linux and macOS
|
||||
env:
|
||||
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||
version: ${{ matrix.php-versions }}
|
||||
if: matrix.operating-system != 'windows-2019'
|
||||
if: matrix.operating-system != 'windows-2022'
|
||||
run: |
|
||||
echo "## PHP $version" >> "$file"
|
||||
printf "\n" >> "$file"
|
||||
@@ -29,47 +34,57 @@ jobs:
|
||||
php -m >> "$file"
|
||||
echo "\`\`\`" >> "$file"
|
||||
printf "\n" >> "$file"
|
||||
- name: Save Windows
|
||||
- name: Create for Windows
|
||||
env:
|
||||
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||
version: ${{ matrix.php-versions }}
|
||||
if: matrix.operating-system == 'windows-2019'
|
||||
if: matrix.operating-system == 'windows-2022'
|
||||
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
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: lists
|
||||
path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
||||
update:
|
||||
permissions:
|
||||
contents: write # for Git to git push
|
||||
name: Update
|
||||
needs: create
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository }}.wiki
|
||||
- uses: actions/download-artifact@v2
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
path: ${{ github.workspace }}
|
||||
- name: Combine
|
||||
run: |
|
||||
- name: Configure Git
|
||||
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 windows-2019 macos-10.15 macos-11.0; do
|
||||
- name: Combine
|
||||
run: |
|
||||
for os in ubuntu-22.04 ubuntu-20.04 windows-2022 windows-2019 macos-11 macos-12 macos-13; 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
|
||||
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 8.2 8.3 8.4; do
|
||||
if [[ "$os" = "macos-11" || "$os" = "macos-13" ]]; then
|
||||
cat lists/php"$version"-macos-12.md >> Php-extensions-loaded-on-"$os".md
|
||||
elif [ "$os" = "windows-2019" ]; then
|
||||
cat lists/php"$version"-windows-2022.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
|
||||
- name: Update
|
||||
run: |
|
||||
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')"
|
||||
|
||||
@@ -16,6 +16,9 @@ on:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- 'examples/**'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
run:
|
||||
name: Run
|
||||
@@ -26,12 +29,14 @@ jobs:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup Node.js 15.x
|
||||
uses: actions/setup-node@v1
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
node-version: 15.x
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Setup Node.js 16.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
@@ -45,7 +50,14 @@ jobs:
|
||||
- name: Run tests
|
||||
run: npm test
|
||||
|
||||
- name: Run npm audit
|
||||
run: npm audit
|
||||
|
||||
- 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/lcov.info -n github-actions-codecov-${{ matrix.operating-system }}
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: coverage/lcov.info
|
||||
name: github-actions-codecov-${{ matrix.operating-system }}
|
||||
fail_ci_if_error: false
|
||||
verbose: true
|
||||
@@ -17,6 +17,10 @@ on:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- 'examples/**'
|
||||
permissions:
|
||||
contents: read
|
||||
env:
|
||||
default-php-version: '8.2'
|
||||
jobs:
|
||||
run:
|
||||
name: Run
|
||||
@@ -24,41 +28,51 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-20.04, ubuntu-18.04, windows-latest, macos-latest]
|
||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1']
|
||||
operating-system: [ubuntu-22.04, ubuntu-20.04, windows-2019, macos-latest]
|
||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4']
|
||||
include:
|
||||
- operating-system: ubuntu-22.04
|
||||
php-versions: ''
|
||||
php-version-file: 'php-version-file'
|
||||
env:
|
||||
extensions: xml, opcache, xdebug, pcov
|
||||
key: cache-v3
|
||||
extensions: xml, opcache, xdebug, pcov, gd
|
||||
key: cache-v5
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup cache environment
|
||||
id: cache-env
|
||||
uses: shivammathur/cache-extensions@develop
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
php-version: ${{ matrix.php-versions || env.default-php-version }}
|
||||
extensions: ${{ env.extensions }}
|
||||
key: ${{ env.key }}
|
||||
|
||||
- name: Cache extensions
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.cache-env.outputs.dir }}
|
||||
key: ${{ steps.cache-env.outputs.key }}
|
||||
restore-keys: ${{ steps.cache-env.outputs.key }}
|
||||
|
||||
- name: Stage php-version-file
|
||||
if: ${{ matrix.php-version-file == 'php-version-file' }}
|
||||
run: |
|
||||
echo ${{ env.default-php-version }} > php-version-file
|
||||
|
||||
- name: Setup PHP with extensions and custom config
|
||||
run: node dist/index.js
|
||||
env:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
php-version-file: ${{ matrix.php-version-file }}
|
||||
extensions: ${{ env.extensions }}
|
||||
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata
|
||||
|
||||
- name: Testing PHP version
|
||||
run: |
|
||||
php -v
|
||||
php -r "if(strpos(phpversion(), '${{ matrix.php-versions }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
||||
php -r "if(strpos(phpversion(), '${{ matrix.php-versions || env.default-php-version }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
||||
|
||||
- name: Testing Composer version
|
||||
run: |
|
||||
@@ -67,6 +81,7 @@ jobs:
|
||||
- name: Testing Extensions
|
||||
run: |
|
||||
php -m
|
||||
php -r "if(! extension_loaded('gd')) {throw new Exception('gd not found');}"
|
||||
php -r "if(! extension_loaded('xml')) {throw new Exception('xml not found');}"
|
||||
php -r "if(! extension_loaded('Xdebug')) {throw new Exception('Xdebug not found');}"
|
||||
php -r "if(phpversion()>=7.1 && ! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
||||
@@ -0,0 +1,62 @@
|
||||
name: Publish Package
|
||||
on:
|
||||
release:
|
||||
types: [created]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
skip:
|
||||
description: Skip release to repository
|
||||
required: false
|
||||
tag:
|
||||
description: Tag name
|
||||
required: true
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
steps:
|
||||
- name: Checkout release
|
||||
if: github.event_name != 'workflow_dispatch'
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Checkout tag
|
||||
uses: actions/checkout@v4
|
||||
if: github.event_name == 'workflow_dispatch'
|
||||
with:
|
||||
ref: ${{ github.event.inputs.tag }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '16.x'
|
||||
registry-url: https://registry.npmjs.org
|
||||
|
||||
- name: Install dependencies and add lib
|
||||
run: |
|
||||
npm install
|
||||
npm run build
|
||||
sed -i -e '/lib\//d' .gitignore
|
||||
|
||||
- name: Publish to NPM
|
||||
if: "!contains(github.event.inputs.skip, 'skip-npm')"
|
||||
run: npm publish --access public
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
- name: Change to GitHub Packages registry
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
registry-url: https://npm.pkg.github.com
|
||||
scope: '@shivammathur'
|
||||
|
||||
- name: Patch package.json
|
||||
run: |
|
||||
sed -i 's#"name": "#"name": "@shivammathur/#' package.json
|
||||
|
||||
- name: Publish to GitHub Packages
|
||||
if: "!contains(github.event.inputs.skip, 'skip-github-packages')"
|
||||
run: npm publish
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2019-2021 shivammathur and contributors
|
||||
Copyright (c) shivammathur and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
+11
-47
@@ -1,52 +1,16 @@
|
||||
import * as config from '../src/config';
|
||||
|
||||
describe('Config tests', () => {
|
||||
it('checking addINIValuesOnWindows', async () => {
|
||||
let win32: string = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'win32'
|
||||
);
|
||||
expect(win32).toContain(
|
||||
'Add-Content "$php_dir\\php.ini" "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||
);
|
||||
|
||||
win32 = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'openbsd'
|
||||
);
|
||||
expect(win32).toContain('Platform openbsd is not supported');
|
||||
});
|
||||
|
||||
it('checking addINIValuesOnLinux', async () => {
|
||||
let linux: string = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'linux',
|
||||
true
|
||||
);
|
||||
expect(linux).toContain(
|
||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'
|
||||
);
|
||||
|
||||
linux = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'openbsd'
|
||||
);
|
||||
expect(linux).toContain('Platform openbsd is not supported');
|
||||
});
|
||||
|
||||
it('checking addINIValuesOnDarwin', async () => {
|
||||
let darwin: string = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'darwin'
|
||||
);
|
||||
expect(darwin).toContain(
|
||||
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'
|
||||
);
|
||||
|
||||
darwin = await config.addINIValues(
|
||||
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||
'openbsd'
|
||||
);
|
||||
expect(darwin).toContain('Platform openbsd is not supported');
|
||||
it.each`
|
||||
ini_values | os | output
|
||||
${'a=b, c=d'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=b\nc=d"'}
|
||||
${'a=b, c=d'} | ${'linux'} | ${'echo "a=b\nc=d" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'}
|
||||
${'a=b, c=d'} | ${'darwin'} | ${'echo "a=b\nc=d" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'}
|
||||
${'a=b & ~c'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=\'b & ~c\'"'}
|
||||
${'a="~(b)"'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=\'~(b)\'"'}
|
||||
${'a="b, c"'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=b, c"'}
|
||||
${'a=b, c=d'} | ${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`('checking addINIValues on $os', async ({ini_values, os, output}) => {
|
||||
expect(await config.addINIValues(ini_values, os)).toContain(output);
|
||||
});
|
||||
});
|
||||
+40
-106
@@ -1,110 +1,44 @@
|
||||
import * as coverage from '../src/coverage';
|
||||
|
||||
describe('Config tests', () => {
|
||||
it('checking addCoverage with PCOV on windows', async () => {
|
||||
let win32: string = await coverage.addCoverage('PCOV', '7.4', 'win32');
|
||||
expect(win32).toContain('Add-Extension pcov');
|
||||
expect(win32).toContain('Remove-Extension xdebug');
|
||||
|
||||
win32 = await coverage.addCoverage('pcov', '7.0', 'win32');
|
||||
expect(win32).toContain('PHP 7.1 or newer is required');
|
||||
|
||||
win32 = await coverage.addCoverage('pcov', '5.6', 'win32');
|
||||
expect(win32).toContain('PHP 7.1 or newer is required');
|
||||
});
|
||||
|
||||
it('checking addCoverage with PCOV on linux', async () => {
|
||||
const linux: string = await coverage.addCoverage('pcov', '7.4', 'linux');
|
||||
expect(linux).toContain('add_extension pcov');
|
||||
expect(linux).toContain('remove_extension xdebug');
|
||||
});
|
||||
|
||||
it('checking addCoverage with PCOV on darwin', async () => {
|
||||
const darwin: string = await coverage.addCoverage('pcov', '7.4', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension pcov');
|
||||
expect(darwin).toContain('remove_extension xdebug');
|
||||
});
|
||||
|
||||
it('checking addCoverage with Xdebug on windows', async () => {
|
||||
const win32: string = await coverage.addCoverage('xdebug', '7.4', 'win32');
|
||||
expect(win32).toContain('Add-Extension xdebug');
|
||||
});
|
||||
|
||||
it('checking addCoverage with Xdebug3 on windows', async () => {
|
||||
const win32: string = await coverage.addCoverage('xdebug3', '7.4', 'win32');
|
||||
expect(win32).toContain('Add-Extension xdebug');
|
||||
});
|
||||
|
||||
it('checking addCoverage with Xdebug2 on windows', async () => {
|
||||
const win32: string = await coverage.addCoverage('xdebug2', '7.4', 'win32');
|
||||
expect(win32).toContain('Add-Extension xdebug stable 2.9.8');
|
||||
});
|
||||
|
||||
it('checking addCoverage with Xdebug on linux', async () => {
|
||||
const linux: string = await coverage.addCoverage('xdebug', '8.0', 'linux');
|
||||
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 () => {
|
||||
const darwin: string = await coverage.addCoverage(
|
||||
'xdebug',
|
||||
'7.4',
|
||||
'darwin'
|
||||
);
|
||||
expect(darwin).toContain('add_brew_extension xdebug');
|
||||
});
|
||||
|
||||
it('checking addCoverage with Xdebug3 on darwin', async () => {
|
||||
const darwin: string = await coverage.addCoverage(
|
||||
'xdebug3',
|
||||
'7.4',
|
||||
'darwin'
|
||||
);
|
||||
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 () => {
|
||||
const win32 = await coverage.addCoverage('none', '7.4', 'win32');
|
||||
expect(win32).toContain('Remove-Extension xdebug');
|
||||
expect(win32).toContain('Remove-Extension pcov');
|
||||
});
|
||||
|
||||
it('checking disableCoverage on linux', async () => {
|
||||
const linux: string = await coverage.addCoverage('none', '7.4', 'linux');
|
||||
expect(linux).toContain('remove_extension xdebug');
|
||||
expect(linux).toContain('remove_extension pcov');
|
||||
});
|
||||
|
||||
it('checking disableCoverage on darwin', async () => {
|
||||
const darwin: string = await coverage.addCoverage('none', '7.4', 'darwin');
|
||||
expect(darwin).toContain('remove_extension xdebug');
|
||||
expect(darwin).toContain('remove_extension pcov');
|
||||
});
|
||||
|
||||
it('checking no or invalid coverage driver', async () => {
|
||||
let nocov: string = await coverage.addCoverage('nocov', '7.x', 'any');
|
||||
expect(nocov).toEqual('');
|
||||
|
||||
nocov = await coverage.addCoverage('', '7.x', 'any');
|
||||
expect(nocov).toEqual('');
|
||||
});
|
||||
it.each`
|
||||
driver | php | os | output
|
||||
${'PCOV'} | ${'7.4'} | ${'win32'} | ${'Add-Extension pcov,Disable-Extension xdebug false'}
|
||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'$pcov_version = php -r "echo phpversion(\'pcov\');"'}
|
||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'PCOV $pcov_version enabled as coverage driver'}
|
||||
${'pcov'} | ${'7.0'} | ${'win32'} | ${'PHP 7.1 or newer is required'}
|
||||
${'pcov'} | ${'5.6'} | ${'win32'} | ${'PHP 7.1 or newer is required'}
|
||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'Add-Extension pcov,Disable-Extension xdebug false'}
|
||||
${'pcov'} | ${'7.4'} | ${'linux'} | ${'add_extension pcov,disable_extension xdebug false'}
|
||||
${'pcov'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension pcov,disable_extension xdebug false'}
|
||||
${'xdebug'} | ${'7.4'} | ${'win32'} | ${'Add-Extension xdebug'}
|
||||
${'xdebug3'} | ${'7.1'} | ${'win32'} | ${'xdebug3 is not supported on PHP 7.1'}
|
||||
${'xdebug2'} | ${'7.4'} | ${'win32'} | ${'Add-Extension xdebug stable 2.9.8'}
|
||||
${'xdebug'} | ${'8.0'} | ${'linux'} | ${'add_extension xdebug'}
|
||||
${'xdebug3'} | ${'8.0'} | ${'linux'} | ${'add_extension xdebug'}
|
||||
${'xdebug2'} | ${'7.4'} | ${'linux'} | ${'add_pecl_extension xdebug 2.9.8 zend_extension'}
|
||||
${'xdebug'} | ${'7.4'} | ${'linux'} | ${'xdebug_version="$(php -r "echo phpversion(\'xdebug\');")"'}
|
||||
${'xdebug'} | ${'7.4'} | ${'linux'} | ${'Xdebug $xdebug_version enabled as coverage driver'}
|
||||
${'xdebug'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension xdebug'}
|
||||
${'xdebug3'} | ${'7.1'} | ${'darwin'} | ${'xdebug3 is not supported on PHP 7.1'}
|
||||
${'xdebug2'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension xdebug2'}
|
||||
${'xdebug2'} | ${'8.0'} | ${'darwin'} | ${'xdebug2 is not supported on PHP 8.0'}
|
||||
${'none'} | ${'7.4'} | ${'win32'} | ${'Disable-Extension xdebug false,Disable-Extension pcov false'}
|
||||
${'none'} | ${'7.4'} | ${'linux'} | ${'disable_extension xdebug false,disable_extension pcov false'}
|
||||
${'none'} | ${'7.4'} | ${'darwin'} | ${'disable_extension xdebug false,disable_extension pcov false'}
|
||||
${'nocov'} | ${'7.x'} | ${'any'} | ${''}
|
||||
${''} | ${'7.x'} | ${'any'} | ${''}
|
||||
`(
|
||||
'checking addCoverage with $driver on $os',
|
||||
async ({driver, php, os, output}) => {
|
||||
const script: string = await coverage.addCoverage(driver, php, os);
|
||||
if (output) {
|
||||
output.split(',').forEach((command: string) => {
|
||||
expect(script).toContain(command);
|
||||
});
|
||||
} else {
|
||||
expect(script).toEqual(output);
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
+144
-252
@@ -1,261 +1,153 @@
|
||||
import * as fs from 'fs';
|
||||
import * as extensions from '../src/extensions';
|
||||
|
||||
describe('Extension tests', () => {
|
||||
it('checking addExtensionOnWindows', async () => {
|
||||
let win32: string = await extensions.addExtension(
|
||||
'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',
|
||||
'win32'
|
||||
);
|
||||
expect(win32).toContain('Add-Extension xdebug');
|
||||
expect(win32).toContain('Add-Extension pcov');
|
||||
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 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');
|
||||
it.each`
|
||||
extension | version | output
|
||||
${'none'} | ${'7.4'} | ${'Disable-AllShared'}
|
||||
${':intl'} | ${'7.4'} | ${'Disable-Extension intl'}
|
||||
${'ast-beta'} | ${'7.4'} | ${'Add-Extension ast beta'}
|
||||
${'blackfire'} | ${'7.3'} | ${'Add-Blackfire blackfire'}
|
||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'Add-Blackfire blackfire-1.31.0'}
|
||||
${'grpc-1.2.3'} | ${'7.4'} | ${'Add-Extension grpc stable 1.2.3'}
|
||||
${'inotify-1.2.3alpha2'} | ${'7.4'} | ${'Add-Extension inotify alpha 1.2.3'}
|
||||
${'ioncube'} | ${'7.4'} | ${'Add-Ioncube'}
|
||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'Add-Log "$cross" "mongodb-mongodb/mongo-php-driver@master" "mongodb-mongodb/mongo-php-driver@master is not supported on PHP 7.3"'}
|
||||
${'mysql'} | ${'7.4'} | ${'Add-Extension mysqli\nAdd-Extension mysqlnd'}
|
||||
${'mysql'} | ${'5.5'} | ${'Add-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd'}
|
||||
${'oci8'} | ${'7.4'} | ${'Add-Oci oci8'}
|
||||
${'pcov'} | ${'5.6'} | ${'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
||||
${'pdo_oci'} | ${'7.4'} | ${'Add-Oci pdo_oci'}
|
||||
${'pecl_http'} | ${'7.4'} | ${'Add-Http'}
|
||||
${'pdo_sqlsrv'} | ${'7.4'} | ${'Add-Sqlsrv pdo_sqlsrv'}
|
||||
${'phalcon3'} | ${'7.2'} | ${'Add-Phalcon phalcon3'}
|
||||
${'phalcon4'} | ${'7.4'} | ${'Add-Phalcon phalcon4'}
|
||||
${'sqlite'} | ${'7.4'} | ${'Add-Extension sqlite3'}
|
||||
${'sqlsrv'} | ${'5.6'} | ${'Add-Extension sqlsrv'}
|
||||
${'sqlsrv'} | ${'7.4'} | ${'Add-Sqlsrv sqlsrv'}
|
||||
${'sqlsrv-1.2.3preview1'} | ${'7.4'} | ${'Add-Extension sqlsrv devel 1.2.3'}
|
||||
${'Xdebug'} | ${'7.4'} | ${'Add-Extension xdebug'}
|
||||
${'xdebug2'} | ${'7.2'} | ${'Add-Extension xdebug stable 2.9.8'}
|
||||
${'zephir_parser'} | ${'7.2'} | ${'Add-ZephirParser zephir_parser'}
|
||||
`(
|
||||
'checking addExtensionOnWindows for extension $extension on version $version',
|
||||
async ({extension, version, output}) => {
|
||||
expect(
|
||||
await extensions.addExtension(extension, version, 'win32')
|
||||
).toContain(output);
|
||||
}
|
||||
);
|
||||
|
||||
win32 = await extensions.addExtension('pcov', '5.6', 'win32');
|
||||
expect(win32).toContain(
|
||||
'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||
);
|
||||
it.each`
|
||||
extension | version | output
|
||||
${'none'} | ${'7.4'} | ${'disable_all_shared'}
|
||||
${':intl'} | ${'7.4'} | ${'disable_extension intl'}
|
||||
${'ast-beta'} | ${'7.4'} | ${'add_unstable_extension ast beta extension'}
|
||||
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
||||
${'couchbase'} | ${'7.4'} | ${'add_couchbase'}
|
||||
${'gearman'} | ${'5.6'} | ${'add_gearman'}
|
||||
${'geos'} | ${'7.3'} | ${'add_geos'}
|
||||
${'grpc-1.2.3'} | ${'7.4'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
||||
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
||||
${'intl-65.1'} | ${'5.6'} | ${'add_intl intl-65.1'}
|
||||
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
||||
${'memcache-8.2'} | ${'8.2'} | ${'add_pecl_extension memcache 8.2 extension'}
|
||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
||||
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
||||
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6'}
|
||||
${'pdo-odbc'} | ${'7.4'} | ${'add_pdo_extension odbc'}
|
||||
${'pdo_cubrid'} | ${'7.0'} | ${'add_cubrid pdo_cubrid'}
|
||||
${'pdo_cubrid'} | ${'7.4'} | ${'add_pdo_extension cubrid'}
|
||||
${'pdo_mysql'} | ${'7.4'} | ${'add_pdo_extension mysql'}
|
||||
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
||||
${'pdo_sqlsrv'} | ${'7.4'} | ${'add_sqlsrv pdo_sqlsrv'}
|
||||
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
||||
${'phalcon3'} | ${'7.3'} | ${'add_phalcon phalcon3'}
|
||||
${'relay'} | ${'7.4'} | ${'add_relay relay'}
|
||||
${'relay-v1.2.3'} | ${'7.4'} | ${'add_relay relay-v1.2.3'}
|
||||
${'sqlite'} | ${'7.4'} | ${'add_extension sqlite3'}
|
||||
${'sqlsrv-1.2.3-beta1'} | ${'7.4'} | ${'add_pecl_extension sqlsrv 1.2.3beta1 extension'}
|
||||
${'Xdebug'} | ${'7.4'} | ${'add_extension xdebug'}
|
||||
${'xdebug-alpha'} | ${'7.4'} | ${'add_unstable_extension xdebug alpha zend_extension'}
|
||||
${'xdebug2'} | ${'7.2'} | ${'add_pecl_extension xdebug 2.9.8 zend_extension'}
|
||||
${'zephir_parser-1.2.3'} | ${'7.2'} | ${'add_zephir_parser zephir_parser-1.2.3'}
|
||||
`(
|
||||
'checking addExtensionOnLinux for extension $extension on version $version',
|
||||
async ({extension, version, output}) => {
|
||||
expect(
|
||||
await extensions.addExtension(extension, version, 'linux')
|
||||
).toContain(output);
|
||||
}
|
||||
);
|
||||
|
||||
win32 = await extensions.addExtension('xdebug2', '7.2', 'win32');
|
||||
expect(win32).toContain('Add-Extension xdebug stable 2.9.8');
|
||||
it.each`
|
||||
extension | version | output
|
||||
${'none'} | ${'7.2'} | ${'disable_all_shared'}
|
||||
${':intl'} | ${'7.2'} | ${'disable_extension intl'}
|
||||
${'ast-beta'} | ${'7.2'} | ${'add_unstable_extension ast beta extension'}
|
||||
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
||||
${'couchbase'} | ${'5.6'} | ${'add_couchbase'}
|
||||
${'does_not_exist'} | ${'7.2'} | ${'add_extension does_not_exist'}
|
||||
${'geos'} | ${'7.3'} | ${'add_geos'}
|
||||
${'grpc-1.2.3'} | ${'7.2'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
||||
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
||||
${'imagick'} | ${'5.5'} | ${'add_extension imagick'}
|
||||
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.2'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
||||
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
||||
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
||||
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
||||
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
||||
${'relay-1.2.3'} | ${'7.4'} | ${'add_relay relay-1.2.3'}
|
||||
${'sqlite'} | ${'7.2'} | ${'add_extension sqlite3'}
|
||||
${'zephir_parser-v1.2.3'} | ${'7.2'} | ${'add_zephir_parser zephir_parser-v1.2.3'}
|
||||
`(
|
||||
'checking addExtensionOnDarwin for extension $extension on version $version',
|
||||
async ({extension, version, output}) => {
|
||||
expect(
|
||||
await extensions.addExtension(extension, version, 'darwin')
|
||||
).toContain(output);
|
||||
}
|
||||
);
|
||||
|
||||
win32 = await extensions.addExtension('mysql', '7.4', 'win32');
|
||||
expect(win32).toContain('Add-Extension mysqli');
|
||||
expect(win32).toContain('Add-Extension mysqlnd');
|
||||
const data: string[][] = fs
|
||||
.readFileSync('src/configs/brew_extensions')
|
||||
.toString()
|
||||
.split(/\r?\n/)
|
||||
.filter(Boolean)
|
||||
.map(line => {
|
||||
const [formula, extension]: string[] = line.split('=');
|
||||
const prefix: string =
|
||||
extension == 'xdebug' ? 'zend_extension' : 'extension';
|
||||
const ext_name = extension.replace(/\d+|(pdo|pecl)[_-]/, '');
|
||||
const output: string = fs.existsSync(
|
||||
`src/scripts/extensions/${ext_name}.sh`
|
||||
)
|
||||
? `add_${ext_name}`
|
||||
: `add_brew_extension ${formula} ${prefix}`;
|
||||
return [formula, formula === 'phalcon3' ? '7.3' : '7.4', output];
|
||||
});
|
||||
|
||||
win32 = await extensions.addExtension('mysql', '8.0', 'win32');
|
||||
expect(win32).toContain('Add-Extension mysqli');
|
||||
expect(win32).toContain('Add-Extension mysqlnd');
|
||||
it.each(data)(
|
||||
'checking addExtensionOnDarwin for brew extension %s',
|
||||
async (extension, version, output) => {
|
||||
expect(
|
||||
await extensions.addExtension(extension, version, 'darwin')
|
||||
).toContain(output);
|
||||
}
|
||||
);
|
||||
|
||||
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(
|
||||
'phalcon3, does_not_exist',
|
||||
'7.2',
|
||||
'win32',
|
||||
true
|
||||
);
|
||||
expect(win32).toContain('Add-Phalcon phalcon3');
|
||||
expect(win32).toContain('Add-Extension does_not_exist');
|
||||
|
||||
win32 = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||
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 () => {
|
||||
let linux: string = await extensions.addExtension(
|
||||
'Xdebug, pcov, sqlite, :intl, ast, ast-beta, pdo_mysql, pdo-odbc, xdebug-alpha, grpc-1.2.3',
|
||||
'7.4',
|
||||
'linux'
|
||||
);
|
||||
expect(linux).toContain('add_extension xdebug');
|
||||
expect(linux).toContain('add_extension sqlite3');
|
||||
expect(linux).toContain('remove_extension intl');
|
||||
expect(linux).toContain('add_unstable_extension ast beta extension');
|
||||
expect(linux).toContain('add_pdo_extension mysql');
|
||||
expect(linux).toContain('add_pdo_extension odbc');
|
||||
expect(linux).toContain('add_pecl_extension grpc 1.2.3 extension');
|
||||
expect(linux).toContain(
|
||||
'add_unstable_extension xdebug alpha zend_extension'
|
||||
);
|
||||
|
||||
linux = await extensions.addExtension('pcov', '5.6', 'linux');
|
||||
expect(linux).toContain(
|
||||
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||
);
|
||||
|
||||
linux = await extensions.addExtension('gearman', '5.6', 'linux');
|
||||
expect(linux).toContain('add_gearman');
|
||||
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
||||
expect(linux).toContain('add_gearman');
|
||||
|
||||
linux = await extensions.addExtension('couchbase', '5.6', 'linux');
|
||||
expect(linux).toContain('add_couchbase');
|
||||
linux = await extensions.addExtension('couchbase', '7.4', 'linux');
|
||||
expect(linux).toContain('add_couchbase');
|
||||
|
||||
linux = await extensions.addExtension('pdo_cubrid', '7.0', 'linux');
|
||||
expect(linux).toContain('add_cubrid pdo_cubrid');
|
||||
linux = await extensions.addExtension('cubrid', '7.4', 'linux');
|
||||
expect(linux).toContain('add_cubrid cubrid');
|
||||
|
||||
linux = await extensions.addExtension('xdebug2', '7.2', 'linux');
|
||||
expect(linux).toContain('add_pecl_extension xdebug 2.9.8 zend_extension');
|
||||
|
||||
linux = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||
expect(linux).toContain('Platform openbsd is not supported');
|
||||
|
||||
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
||||
expect(linux).toContain('add_phalcon phalcon3');
|
||||
expect(linux).toContain('add_phalcon phalcon4');
|
||||
|
||||
linux = await extensions.addExtension('ioncube', '7.3', 'linux');
|
||||
expect(linux).toContain('add_ioncube');
|
||||
|
||||
linux = await extensions.addExtension('geos', '7.3', 'linux');
|
||||
expect(linux).toContain('add_geos');
|
||||
|
||||
linux = await extensions.addExtension('pecl_http', '7.3', 'linux');
|
||||
expect(linux).toContain('add_http');
|
||||
|
||||
linux = await extensions.addExtension('http-1.2.3', '7.3', 'linux');
|
||||
expect(linux).toContain('add_http http-1.2.3');
|
||||
|
||||
linux = await extensions.addExtension('oci8, pdo_oci', '7.3', 'linux');
|
||||
expect(linux).toContain('add_oci oci8');
|
||||
expect(linux).toContain('add_oci pdo_oci');
|
||||
|
||||
linux = await extensions.addExtension('blackfire', '7.3', 'linux');
|
||||
expect(linux).toContain('add_blackfire blackfire');
|
||||
|
||||
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
||||
expect(linux).toContain('add_blackfire blackfire-1.31.0');
|
||||
|
||||
linux = await extensions.addExtension('intl-65.1', '5.6', 'linux');
|
||||
expect(linux).toContain('add_intl intl-65.1');
|
||||
|
||||
linux = await extensions.addExtension('intl-67.1', '7.3', 'linux');
|
||||
expect(linux).toContain('add_intl intl-67.1');
|
||||
|
||||
linux = await extensions.addExtension('intl-68.2', '8.0', 'linux');
|
||||
expect(linux).toContain('add_intl intl-68.2');
|
||||
|
||||
linux = await extensions.addExtension(
|
||||
'mongodb-mongodb/mongo-php-driver@master',
|
||||
'7.3',
|
||||
'linux'
|
||||
);
|
||||
expect(linux).toContain(
|
||||
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
|
||||
);
|
||||
});
|
||||
|
||||
it('checking addExtensionOnDarwin', async () => {
|
||||
let darwin: string = await extensions.addExtension(
|
||||
'amqp, apcu, Xdebug, pcov, grpc, igbinary, imagick, imap, memcache, memcached, msgpack, phalcon3, phalcon4, protobuf, psr, rdkafka, redis, swoole, sqlite, oci8, pdo_oci, :intl, ast-beta, grpc-1.2.3',
|
||||
'7.2',
|
||||
'darwin'
|
||||
);
|
||||
expect(darwin).toContain('add_brew_extension amqp extension');
|
||||
expect(darwin).toContain('add_brew_extension apcu extension');
|
||||
expect(darwin).toContain('add_brew_extension xdebug zend_extension');
|
||||
expect(darwin).toContain('add_brew_extension pcov extension');
|
||||
expect(darwin).toContain('add_brew_extension grpc extension');
|
||||
expect(darwin).toContain('add_brew_extension igbinary extension');
|
||||
expect(darwin).toContain('add_brew_extension imagick extension');
|
||||
expect(darwin).toContain('add_brew_extension imap extension');
|
||||
expect(darwin).toContain('add_brew_extension memcache extension');
|
||||
expect(darwin).toContain('add_brew_extension memcached extension');
|
||||
expect(darwin).toContain('add_brew_extension msgpack extension');
|
||||
expect(darwin).toContain('add_brew_extension phalcon3 extension');
|
||||
expect(darwin).toContain('add_brew_extension phalcon4 extension');
|
||||
expect(darwin).toContain('add_brew_extension protobuf extension');
|
||||
expect(darwin).toContain('add_brew_extension psr extension');
|
||||
expect(darwin).toContain('add_brew_extension rdkafka extension');
|
||||
expect(darwin).toContain('add_brew_extension redis extension');
|
||||
expect(darwin).toContain('add_brew_extension 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_pecl_extension grpc 1.2.3 extension');
|
||||
|
||||
darwin = await extensions.addExtension('couchbase', '5.6', 'darwin');
|
||||
expect(darwin).toContain('add_couchbase');
|
||||
|
||||
darwin = await extensions.addExtension('couchbase', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_couchbase');
|
||||
|
||||
darwin = await extensions.addExtension('ioncube', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_ioncube');
|
||||
|
||||
darwin = await extensions.addExtension('geos', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_geos');
|
||||
|
||||
darwin = await extensions.addExtension('pecl_http', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_http');
|
||||
|
||||
darwin = await extensions.addExtension('http-1.2.3', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_http http-1.2.3');
|
||||
|
||||
darwin = await extensions.addExtension('oci8, pdo_oci', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_oci oci8');
|
||||
expect(darwin).toContain('add_oci pdo_oci');
|
||||
|
||||
darwin = await extensions.addExtension('pcov', '5.6', 'darwin');
|
||||
expect(darwin).toContain(
|
||||
'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'
|
||||
);
|
||||
|
||||
darwin = await extensions.addExtension('pcov', '7.2', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension pcov');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension xdebug');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug', '7.0', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension xdebug');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension xdebug');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug2', '7.2', 'darwin');
|
||||
expect(darwin).toContain('add_brew_extension xdebug2');
|
||||
|
||||
darwin = await extensions.addExtension('imagick', '5.5', 'darwin');
|
||||
expect(darwin).toContain('add_extension imagick');
|
||||
|
||||
darwin = await extensions.addExtension('blackfire', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_blackfire blackfire');
|
||||
|
||||
darwin = await extensions.addExtension('blackfire-1.31.0', '7.3', 'darwin');
|
||||
expect(darwin).toContain('add_blackfire blackfire-1.31.0');
|
||||
|
||||
darwin = await extensions.addExtension(
|
||||
'does_not_exist',
|
||||
'7.2',
|
||||
'darwin',
|
||||
false
|
||||
);
|
||||
expect(darwin).toContain('add_extension does_not_exist');
|
||||
|
||||
darwin = await extensions.addExtension('xdebug', '7.2', 'openbsd');
|
||||
expect(darwin).toContain('Platform openbsd is not supported');
|
||||
|
||||
darwin = await extensions.addExtension(
|
||||
'mongodb-mongodb/mongo-php-driver@master',
|
||||
'7.3',
|
||||
'darwin'
|
||||
);
|
||||
expect(darwin).toContain(
|
||||
'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'
|
||||
);
|
||||
});
|
||||
it.each`
|
||||
extension | version | output
|
||||
${'xdebug'} | ${'7.2'} | ${'Platform openbsd is not supported'}
|
||||
`(
|
||||
'checking addExtension on openbsd for extension $extension on version $version',
|
||||
async ({extension, version, output}) => {
|
||||
expect(
|
||||
await extensions.addExtension(extension, version, 'openbsd')
|
||||
).toContain(output);
|
||||
}
|
||||
);
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import * as fetch from '../src/fetch';
|
||||
import nock = require('nock');
|
||||
|
||||
it('checking fetch', async () => {
|
||||
const host_url = 'https://example.com';
|
||||
const manifest_url = host_url + '/manifest';
|
||||
const ping_url = host_url + '/ping';
|
||||
|
||||
nock(host_url)
|
||||
.get('/manifest')
|
||||
.reply(200, {latest: 'latest'})
|
||||
.get('/manifest', '', {
|
||||
reqheaders: {authorization: 'Bearer invalid_token'}
|
||||
})
|
||||
.reply(401, {error: '401: Unauthorized'})
|
||||
.get('/ping')
|
||||
.twice()
|
||||
.reply(301, undefined, {
|
||||
Location: host_url + '/pong'
|
||||
})
|
||||
.get('/pong')
|
||||
.reply(200, 'pong');
|
||||
|
||||
let response: Record<string, string> = await fetch.fetch(manifest_url);
|
||||
expect(response.error).toBe(undefined);
|
||||
expect(response.data).toContain('latest');
|
||||
|
||||
response = await fetch.fetch(ping_url, '', 1);
|
||||
expect(response.error).toBe(undefined);
|
||||
expect(response.data).toContain('pong');
|
||||
|
||||
response = await fetch.fetch(ping_url, '', 0);
|
||||
expect(response.error).toBe('301: Redirect error');
|
||||
expect(response.data).toBe(undefined);
|
||||
|
||||
response = await fetch.fetch(manifest_url, 'invalid_token');
|
||||
expect(response.error).not.toBe(undefined);
|
||||
expect(response.data).toBe(undefined);
|
||||
});
|
||||
+64
-157
@@ -7,169 +7,76 @@ import * as utils from '../src/utils';
|
||||
jest.mock('../src/install', () => ({
|
||||
getScript: jest
|
||||
.fn()
|
||||
.mockImplementation(
|
||||
async (
|
||||
filename: string,
|
||||
version: string,
|
||||
os_version: string
|
||||
): Promise<string> => {
|
||||
const extension_csv: string = process.env['extensions'] || '';
|
||||
const ini_values_csv: string = process.env['ini-values'] || '';
|
||||
const coverage_driver: string = process.env['coverage'] || '';
|
||||
let tools_csv: string = process.env['tools'] || '';
|
||||
const pecl: string = process.env['pecl'] || '';
|
||||
if (pecl == 'true') {
|
||||
tools_csv = 'pecl, ' + tools_csv;
|
||||
}
|
||||
|
||||
let script = 'initial script ' + filename + version + os_version;
|
||||
if (tools_csv) {
|
||||
script += 'add_tool';
|
||||
}
|
||||
if (extension_csv) {
|
||||
script += 'install extensions';
|
||||
}
|
||||
if (coverage_driver) {
|
||||
script += 'set coverage driver';
|
||||
}
|
||||
if (ini_values_csv) {
|
||||
script += 'edit php.ini';
|
||||
}
|
||||
|
||||
return script;
|
||||
}
|
||||
),
|
||||
.mockImplementation(async (os: string): Promise<string> => {
|
||||
const filename = os + (await utils.scriptExtension(os));
|
||||
const version: string = await utils.parseVersion(
|
||||
await utils.readPHPVersion()
|
||||
);
|
||||
const ini_file: string = await utils.parseIniFile(
|
||||
await utils.getInput('ini-file', false)
|
||||
);
|
||||
const extension_csv: string = process.env['extensions'] || '';
|
||||
const ini_values_csv: string = process.env['ini-values'] || '';
|
||||
const coverage_driver: string = process.env['coverage'] || '';
|
||||
const tools_csv: string = process.env['tools'] || '';
|
||||
let script = await utils.joins(filename, version, ini_file);
|
||||
script += extension_csv ? ' install extensions' : '';
|
||||
script += tools_csv ? ' add_tool' : '';
|
||||
script += coverage_driver ? ' set coverage driver' : '';
|
||||
script += ini_values_csv ? ' edit php.ini' : '';
|
||||
return script;
|
||||
}),
|
||||
run: jest.fn().mockImplementation(async (): Promise<string> => {
|
||||
const os_version: string = process.env['RUNNER_OS'] || '';
|
||||
const version: string = await utils.parseVersion(
|
||||
await utils.getInput('php-version', true)
|
||||
);
|
||||
const tool = await utils.scriptTool(os_version);
|
||||
const filename = os_version + (await utils.scriptExtension(os_version));
|
||||
return [
|
||||
await install.getScript(filename, version, os_version),
|
||||
tool,
|
||||
filename,
|
||||
version,
|
||||
__dirname
|
||||
].join(' ');
|
||||
const os: string = process.env['RUNNER_OS'] || '';
|
||||
const tool = await utils.scriptTool(os);
|
||||
return tool + (await install.getScript(os));
|
||||
})
|
||||
}));
|
||||
|
||||
/**
|
||||
* Function to set the process.env
|
||||
*
|
||||
* @param version
|
||||
* @param os
|
||||
* @param extension_csv
|
||||
* @param ini_values_csv
|
||||
* @param coverage_driver
|
||||
* @param tools
|
||||
* Mock fetch.ts
|
||||
*/
|
||||
function setEnv(
|
||||
version: string | number,
|
||||
os: string,
|
||||
extension_csv: string,
|
||||
ini_values_csv: string,
|
||||
coverage_driver: string,
|
||||
tools: string
|
||||
): void {
|
||||
process.env['php-version'] = version.toString();
|
||||
process.env['RUNNER_OS'] = os;
|
||||
process.env['extensions'] = extension_csv;
|
||||
process.env['ini-values'] = ini_values_csv;
|
||||
process.env['coverage'] = coverage_driver;
|
||||
process.env['tools'] = tools;
|
||||
}
|
||||
jest.mock('../src/fetch', () => ({
|
||||
fetch: jest.fn().mockImplementation(() => {
|
||||
return {data: '{ "latest": "8.1", "5.x": "5.6" }'};
|
||||
})
|
||||
}));
|
||||
|
||||
describe('Install', () => {
|
||||
it('Test install on windows', async () => {
|
||||
setEnv('7.0', 'win32', '', '', '', '');
|
||||
|
||||
let script: string = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('pwsh win32.ps1 7.0 ' + __dirname);
|
||||
|
||||
setEnv('7.3', 'win32', '', '', '', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
||||
|
||||
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('install extensions');
|
||||
expect(script).toContain('edit php.ini');
|
||||
expect(script).toContain('set coverage driver');
|
||||
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
|
||||
});
|
||||
|
||||
it('Test install on linux', async () => {
|
||||
setEnv('7.3', 'linux', '', '', '', '');
|
||||
|
||||
let script: string = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash linux.sh 7.3 ');
|
||||
|
||||
setEnv('latest', 'linux', '', '', '', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash linux.sh 8.0 ');
|
||||
|
||||
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('install extensions');
|
||||
expect(script).toContain('edit php.ini');
|
||||
expect(script).toContain('set coverage driver');
|
||||
expect(script).toContain('bash linux.sh 7.3');
|
||||
expect(script).toContain('add_tool');
|
||||
});
|
||||
|
||||
it('Test install on darwin', async () => {
|
||||
setEnv('7.3', 'darwin', '', '', '', '');
|
||||
|
||||
let script: string = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
|
||||
|
||||
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('install extensions');
|
||||
expect(script).toContain('edit php.ini');
|
||||
expect(script).toContain('set coverage driver');
|
||||
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
|
||||
});
|
||||
|
||||
it('Test malformed version inputs', async () => {
|
||||
setEnv('7.4.1', 'darwin', '', '', '', '');
|
||||
|
||||
let script: string = '' + '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash darwin.sh 7.4 ' + __dirname);
|
||||
|
||||
setEnv(8.0, 'darwin', '', '', '', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
|
||||
|
||||
setEnv(8, 'darwin', '', '', '', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
|
||||
|
||||
setEnv(8.1, 'darwin', '', '', '', '');
|
||||
|
||||
script = '' + (await install.run());
|
||||
expect(script).toContain('initial script');
|
||||
expect(script).toContain('bash darwin.sh 8.1 ' + __dirname);
|
||||
});
|
||||
it.each`
|
||||
version | os | extension_csv | ini_file | ini_values_csv | coverage_driver | tools | output
|
||||
${'7.3'} | ${'darwin'} | ${''} | ${'production'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 7.3 production'}
|
||||
${'7.3'} | ${'darwin'} | ${'a, b'} | ${'development'} | ${'a=b'} | ${'x'} | ${''} | ${'bash darwin.sh 7.3 development install extensions set coverage driver edit php.ini'}
|
||||
${'7.4.1'} | ${'darwin'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 7.4 none'}
|
||||
${'8'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.0 production'}
|
||||
${'8.0'} | ${'darwin'} | ${''} | ${'development'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.0 development'}
|
||||
${'8.1'} | ${'darwin'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.1 none'}
|
||||
${'7.3'} | ${'linux'} | ${''} | ${'invalid'} | ${''} | ${''} | ${''} | ${'bash linux.sh 7.3 production'}
|
||||
${'7.3'} | ${'linux'} | ${'a, b'} | ${'development'} | ${'a=b'} | ${'x'} | ${'phpunit'} | ${'bash linux.sh 7.3 development install extensions add_tool set coverage driver edit php.ini'}
|
||||
${'latest'} | ${'linux'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash linux.sh 8.1 none'}
|
||||
${'7.0'} | ${'win32'} | ${''} | ${'production'} | ${''} | ${''} | ${''} | ${'pwsh win32.ps1 7.0 production'}
|
||||
${'7.3'} | ${'win32'} | ${''} | ${'development'} | ${''} | ${''} | ${''} | ${'pwsh win32.ps1 7.3 development'}
|
||||
${'7.3'} | ${'win32'} | ${'a, b'} | ${'none'} | ${'a=b'} | ${'x'} | ${''} | ${'pwsh win32.ps1 7.3 none install extensions set coverage driver edit php.ini'}
|
||||
`(
|
||||
'Test install on $os for $version with extensions=$extension_csv, ini_values=$ini_values_csv, coverage_driver=$coverage_driver, tools=$tools',
|
||||
async ({
|
||||
version,
|
||||
os,
|
||||
extension_csv,
|
||||
ini_file,
|
||||
ini_values_csv,
|
||||
coverage_driver,
|
||||
tools,
|
||||
output
|
||||
}) => {
|
||||
process.env['php-version'] = version.toString();
|
||||
process.env['RUNNER_OS'] = os;
|
||||
process.env['extensions'] = extension_csv;
|
||||
process.env['ini-file'] = ini_file;
|
||||
process.env['ini-values'] = ini_values_csv;
|
||||
process.env['coverage'] = coverage_driver;
|
||||
process.env['tools'] = tools;
|
||||
expect(await install.run()).toBe(output);
|
||||
}
|
||||
);
|
||||
});
|
||||
@@ -0,0 +1,50 @@
|
||||
import * as packagist from '../src/packagist';
|
||||
import nock = require('nock');
|
||||
|
||||
describe('search function', () => {
|
||||
const mockResponse = {
|
||||
packages: {
|
||||
'test-package': [
|
||||
{
|
||||
require: {
|
||||
php: '8.0.0'
|
||||
},
|
||||
version: '1.0.0'
|
||||
},
|
||||
{
|
||||
version: '2.0.0'
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
test('should return the version if matching php version is found', async () => {
|
||||
nock('https://repo.packagist.org')
|
||||
.get('/p2/test-package.json')
|
||||
.reply(200, mockResponse);
|
||||
const result = await packagist.search('test-package', '8.0');
|
||||
expect(result).toBe('1.0.0');
|
||||
});
|
||||
|
||||
test('should return null if no matching php version is found', async () => {
|
||||
nock('https://repo.packagist.org')
|
||||
.get('/p2/test-package.json')
|
||||
.reply(200, mockResponse);
|
||||
const result = await packagist.search('test-package', '5.6');
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
test('should return null if fetch fails', async () => {
|
||||
nock('https://repo.packagist.org').get('/p2/test-package.json').reply(404);
|
||||
const result = await packagist.search('test-package', '8.0');
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
test('should return null if the response is empty', async () => {
|
||||
nock('https://repo.packagist.org')
|
||||
.get('/p2/test-package.json')
|
||||
.reply(200, {error: true, data: '[]'});
|
||||
const result = await packagist.search('test-package', '8.0');
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
});
|
||||
+252
-134
@@ -1,16 +1,18 @@
|
||||
import fs = require('fs');
|
||||
import * as tools from '../src/tools';
|
||||
import * as utils from '../src/utils';
|
||||
|
||||
interface IData {
|
||||
tool: string;
|
||||
version: string;
|
||||
version?: string;
|
||||
domain?: string;
|
||||
extension?: string;
|
||||
os_version?: string;
|
||||
os?: string;
|
||||
php_version?: string;
|
||||
release?: string;
|
||||
repository?: string;
|
||||
scope?: string;
|
||||
type?: string;
|
||||
fetch_latest?: string;
|
||||
version_parameter?: string;
|
||||
version_prefix?: string;
|
||||
}
|
||||
@@ -18,14 +20,16 @@ interface IData {
|
||||
function getData(data: IData): Record<string, string> {
|
||||
return {
|
||||
tool: data.tool,
|
||||
version: data.version,
|
||||
version: data.version || '',
|
||||
domain: data.domain || 'https://example.com',
|
||||
extension: data.extension || '.phar',
|
||||
os_version: data.os_version || 'linux',
|
||||
os: data.os || 'linux',
|
||||
php_version: data.php_version || '7.4',
|
||||
release: data.release || [data.tool, data.version].join(':'),
|
||||
repository: data.repository || '',
|
||||
scope: data.scope || 'global',
|
||||
type: data.type || 'phar',
|
||||
fetch_latest: data.fetch_latest || 'false',
|
||||
version_parameter: data.version_parameter || '-V',
|
||||
version_prefix: data.version_prefix || '',
|
||||
github: 'https://github.com',
|
||||
@@ -34,21 +38,54 @@ function getData(data: IData): Record<string, string> {
|
||||
};
|
||||
}
|
||||
|
||||
jest
|
||||
.spyOn(utils, 'fetch')
|
||||
.mockImplementation(
|
||||
async (url: string, token?: string): Promise<Record<string, string>> => {
|
||||
if (!token || token === 'valid_token') {
|
||||
return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`};
|
||||
} else if (token === 'beta_token') {
|
||||
return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`};
|
||||
} else if (token === 'no_data') {
|
||||
return {data: '[]'};
|
||||
} else {
|
||||
return {error: 'Invalid token'};
|
||||
/**
|
||||
* Mock fetch.ts
|
||||
*/
|
||||
jest.mock('../src/fetch', () => ({
|
||||
fetch: jest
|
||||
.fn()
|
||||
.mockImplementation(
|
||||
async (url: string, token?: string): Promise<Record<string, string>> => {
|
||||
if (url.includes('deployer')) {
|
||||
return {
|
||||
data: '[{"version": "1.2.3", "url": "https://deployer.org/releases/v1.2.3/deployer.phar"}]'
|
||||
};
|
||||
} else if (url.includes('atom') && !url.includes('no-')) {
|
||||
return {
|
||||
data: '"releases/tag/1.2.3", "releases/tag/3.2.1", "releases/tag/2.3.1"'
|
||||
};
|
||||
} else if (url.includes('no-data')) {
|
||||
return {};
|
||||
} else if (url.includes('no-release')) {
|
||||
return {data: 'no-release'};
|
||||
} else if (!token || token === 'valid_token') {
|
||||
return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`};
|
||||
} else if (token === 'beta_token') {
|
||||
return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`};
|
||||
} else if (token === 'no_data') {
|
||||
return {data: '[]'};
|
||||
} else {
|
||||
return {error: 'Invalid token'};
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
)
|
||||
}));
|
||||
|
||||
jest.mock('../src/packagist', () => ({
|
||||
search: jest
|
||||
.fn()
|
||||
.mockImplementation(
|
||||
async (
|
||||
package_name: string,
|
||||
php_version: string
|
||||
): Promise<string | null> => {
|
||||
if (package_name === 'phpunit/phpunit') {
|
||||
return php_version + '.0';
|
||||
}
|
||||
return null;
|
||||
}
|
||||
)
|
||||
}));
|
||||
|
||||
describe('Tools tests', () => {
|
||||
it.each`
|
||||
@@ -64,6 +101,27 @@ describe('Tools tests', () => {
|
||||
).toBe(version);
|
||||
});
|
||||
|
||||
it.each`
|
||||
tool | fetch_latest | version
|
||||
${'tool'} | ${'true'} | ${'3.2.1'}
|
||||
${'tool-no-data'} | ${'true'} | ${'latest'}
|
||||
${'tool-no-release'} | ${'true'} | ${'latest'}
|
||||
${'tool'} | ${'false'} | ${'latest'}
|
||||
`(
|
||||
'checking getLatestVersion: $tool, $fetch_latest, $version',
|
||||
async ({tool, fetch_latest, version}) => {
|
||||
expect(
|
||||
await tools.getLatestVersion(
|
||||
getData({
|
||||
tool: tool,
|
||||
repository: 'user/' + tool,
|
||||
fetch_latest: fetch_latest
|
||||
})
|
||||
)
|
||||
).toBe(version);
|
||||
}
|
||||
);
|
||||
|
||||
it.each`
|
||||
version | tool | type | expected
|
||||
${'latest'} | ${'tool'} | ${'phar'} | ${'latest'}
|
||||
@@ -164,58 +222,58 @@ describe('Tools tests', () => {
|
||||
);
|
||||
|
||||
it.each`
|
||||
os_version | script
|
||||
os | script
|
||||
${'linux'} | ${'add_tool https://example.com/tool.phar tool "-v"'}
|
||||
${'darwin'} | ${'add_tool https://example.com/tool.phar tool "-v"'}
|
||||
${'win32'} | ${'Add-Tool https://example.com/tool.phar tool "-v"'}
|
||||
${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`('checking addArchive: $os_version', async ({os_version, script}) => {
|
||||
`('checking addArchive: $os', async ({os, script}) => {
|
||||
const data = getData({
|
||||
tool: 'tool',
|
||||
version: 'latest',
|
||||
version_parameter: JSON.stringify('-v'),
|
||||
os_version: os_version
|
||||
os: os
|
||||
});
|
||||
data['url'] = 'https://example.com/tool.phar';
|
||||
expect(await tools.addArchive(data)).toContain(script);
|
||||
});
|
||||
|
||||
it.each`
|
||||
os_version | script
|
||||
${'linux'} | ${'add_composertool tool tool:1.2.3 user/'}
|
||||
${'darwin'} | ${'add_composertool tool tool:1.2.3 user/'}
|
||||
${'win32'} | ${'Add-Composertool tool tool:1.2.3 user/'}
|
||||
${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`('checking addPackage: $os_version', async ({os_version, script}) => {
|
||||
os | script | scope
|
||||
${'linux'} | ${'add_composer_tool tool tool:1.2.3 user/ global'} | ${'global'}
|
||||
${'darwin'} | ${'add_composer_tool tool tool:1.2.3 user/ scoped'} | ${'scoped'}
|
||||
${'win32'} | ${'Add-ComposerTool tool tool:1.2.3 user/ scoped'} | ${'scoped'}
|
||||
${'openbsd'} | ${'Platform openbsd is not supported'} | ${'global'}
|
||||
`('checking addPackage: $os, $scope', async ({os, script, scope}) => {
|
||||
const data = getData({
|
||||
tool: 'tool',
|
||||
version: '1.2.3',
|
||||
repository: 'user/tool',
|
||||
os_version: os_version
|
||||
os: os,
|
||||
scope: scope
|
||||
});
|
||||
data['release'] = [data['tool'], data['version']].join(':');
|
||||
expect(await tools.addPackage(data)).toContain(script);
|
||||
});
|
||||
|
||||
it.each`
|
||||
version | php_version | os_version | script
|
||||
${'latest'} | ${'7.4'} | ${'linux'} | ${'add_tool https://phar.io/releases/phive.phar phive'}
|
||||
version | php_version | os | script
|
||||
${'latest'} | ${'7.4'} | ${'linux'} | ${'add_tool https://github.com/phar-io/phive/releases/download/3.2.1/phive-3.2.1.phar phive'}
|
||||
${'1.2.3'} | ${'7.4'} | ${'darwin'} | ${'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'}
|
||||
${'1.2.3'} | ${'7.2'} | ${'win32'} | ${'Add-Tool https://github.com/phar-io/phive/releases/download/0.14.5/phive-0.14.5.phar phive'}
|
||||
${'1.2.3'} | ${'7.1'} | ${'win32'} | ${'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.5/phive-0.13.5.phar phive'}
|
||||
${'latest'} | ${'5.6'} | ${'win32'} | ${'Add-Tool https://github.com/phar-io/phive/releases/download/0.12.1/phive-0.12.1.phar phive'}
|
||||
${'latest'} | ${'5.5'} | ${'win32'} | ${'Phive is not supported on PHP 5.5'}
|
||||
`(
|
||||
'checking addPhive: $version, $php_version, $os_version',
|
||||
async ({version, php_version, os_version, script}) => {
|
||||
'checking addPhive: $version, $php_version, $os',
|
||||
async ({version, php_version, os, script}) => {
|
||||
const data = getData({
|
||||
tool: 'phive',
|
||||
domain: 'https://phar.io',
|
||||
repository: 'phar-io/phive',
|
||||
version_parameter: 'status',
|
||||
version: version,
|
||||
php_version: php_version,
|
||||
os_version: os_version
|
||||
os: os
|
||||
});
|
||||
script = await tools.addPhive(data);
|
||||
expect(script).toContain(script);
|
||||
@@ -223,15 +281,18 @@ describe('Tools tests', () => {
|
||||
);
|
||||
|
||||
it.each`
|
||||
version | php_version | url
|
||||
${'latest'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player.phar'}
|
||||
${'1.2.3'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player-v1.2.3.phar'}
|
||||
${'latest'} | ${'5.5'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'}
|
||||
${'latest'} | ${'7.0'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'}
|
||||
os | version | php_version | url
|
||||
${'linux'} | ${'latest'} | ${'8.1'} | ${'https://get.blackfire.io/blackfire-player.phar'}
|
||||
${'linux'} | ${'1.2.3'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player-v1.2.3.phar'}
|
||||
${'linux'} | ${'latest'} | ${'7.4'} | ${'https://get.blackfire.io/blackfire-player-v1.22.0.phar'}
|
||||
${'linux'} | ${'latest'} | ${'5.5'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'}
|
||||
${'linux'} | ${'latest'} | ${'7.0'} | ${'https://get.blackfire.io/blackfire-player-v1.9.3.phar'}
|
||||
${'win32'} | ${'latest'} | ${'7.0'} | ${'blackfire-player is not a windows tool'}
|
||||
`(
|
||||
'checking addBlackfirePlayer: $version, $php_version',
|
||||
async ({version, php_version, url}) => {
|
||||
'checking addBlackfirePlayer: $os, $version, $php_version',
|
||||
async ({os, version, php_version, url}) => {
|
||||
const data = getData({
|
||||
os: os,
|
||||
tool: 'blackfire-player',
|
||||
domain: 'https://get.blackfire.io',
|
||||
version_prefix: 'v',
|
||||
@@ -246,6 +307,7 @@ describe('Tools tests', () => {
|
||||
version | url
|
||||
${'latest'} | ${'https://deployer.org/deployer.phar'}
|
||||
${'1.2.3'} | ${'https://deployer.org/releases/v1.2.3/deployer.phar'}
|
||||
${'3.2.1'} | ${'Version missing in deployer manifest'}
|
||||
`('checking addDeployer: $version', async ({version, url}) => {
|
||||
const data = getData({
|
||||
tool: 'deployer',
|
||||
@@ -256,48 +318,42 @@ describe('Tools tests', () => {
|
||||
});
|
||||
|
||||
it.each`
|
||||
version | cache_url | source_url
|
||||
${'latest'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'stable'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'snapshot'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar'} | ${'https://getcomposer.org/composer.phar'}
|
||||
${'preview'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar'} | ${'https://getcomposer.org/composer-preview.phar'}
|
||||
${'1'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar'} | ${'https://getcomposer.org/composer-1.phar'}
|
||||
${'2'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-2.phar'} | ${'https://getcomposer.org/composer-2.phar'}
|
||||
${'1.2.3'} | ${'https://github.com/composer/composer/releases/download/1.2.3/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3.phar'}
|
||||
${'1.2.3-RC1'} | ${'https://github.com/composer/composer/releases/download/1.2.3-RC1/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3-RC1.phar'}
|
||||
version | php_version | no_tool_cache | cache_url | source_url
|
||||
${'latest'} | ${'7.4'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'stable'} | ${'7.4'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'snapshot'} | ${'7.4'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-snapshot.phar'} | ${'https://getcomposer.org/composer.phar'}
|
||||
${'preview'} | ${'7.4'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-preview.phar'} | ${'https://getcomposer.org/composer-preview.phar'}
|
||||
${'1'} | ${'7.4'} | ${'false'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar'} | ${'https://getcomposer.org/composer-1.phar'}
|
||||
${'2'} | ${'7.4'} | ${'false'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-2.phar'} | ${'https://getcomposer.org/composer-2.phar'}
|
||||
${'latest'} | ${'7.4'} | ${'true'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'stable'} | ${'7.4'} | ${'true'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar'} | ${'https://getcomposer.org/composer-stable.phar'}
|
||||
${'snapshot'} | ${'7.4'} | ${'true'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-snapshot.phar'} | ${'https://getcomposer.org/composer.phar'}
|
||||
${'preview'} | ${'7.4'} | ${'true'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-preview.phar'} | ${'https://getcomposer.org/composer-preview.phar'}
|
||||
${'1'} | ${'7.4'} | ${'false'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar'} | ${'https://getcomposer.org/composer-1.phar'}
|
||||
${'2'} | ${'7.4'} | ${'false'} | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-2.phar'} | ${'https://getcomposer.org/composer-2.phar'}
|
||||
${'latest'} | ${'7.1'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-stable.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'}
|
||||
${'stable'} | ${'7.1'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-stable.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'}
|
||||
${'snapshot'} | ${'7.1'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-snapshot.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'}
|
||||
${'preview'} | ${'7.1'} | ${'true'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-preview.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'}
|
||||
${'1'} | ${'7.1'} | ${'false'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-1.phar'} | ${'https://getcomposer.org/composer-1.phar'}
|
||||
${'2'} | ${'7.1'} | ${'false'} | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-2.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'}
|
||||
${'1.2.3'} | ${'7.4'} | ${'false'} | ${'https://github.com/composer/composer/releases/download/1.2.3/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3.phar'}
|
||||
${'1.2.3-RC1'} | ${'7.4'} | ${'false'} | ${'https://github.com/composer/composer/releases/download/1.2.3-RC1/composer.phar'} | ${'https://getcomposer.org/composer-1.2.3-RC1.phar'}
|
||||
`(
|
||||
'checking addComposer: $version',
|
||||
async ({version, cache_url, source_url}) => {
|
||||
'checking addComposer: $version, $php_version, $no_tool_cache',
|
||||
async ({version, php_version, no_tool_cache, cache_url, source_url}) => {
|
||||
const data = getData({
|
||||
tool: 'composer',
|
||||
php_version: php_version,
|
||||
domain: 'https://getcomposer.org',
|
||||
repository: 'composer/composer',
|
||||
version: version
|
||||
});
|
||||
expect(await tools.addComposer(data)).toContain(cache_url);
|
||||
process.env['no_tools_cache'] = no_tool_cache;
|
||||
expect(await tools.addComposer(data)).toContain(source_url);
|
||||
}
|
||||
);
|
||||
|
||||
it.each`
|
||||
version | os_version | uri
|
||||
${'latest'} | ${'linux'} | ${'releases/latest/download/symfony_linux_amd64'}
|
||||
${'1.2.3'} | ${'linux'} | ${'releases/download/v1.2.3/symfony_linux_amd64'}
|
||||
${'latest'} | ${'darwin'} | ${'releases/latest/download/symfony_darwin_amd64'}
|
||||
${'1.2.3'} | ${'darwin'} | ${'releases/download/v1.2.3/symfony_darwin_amd64'}
|
||||
${'latest'} | ${'win32'} | ${'releases/latest/download/symfony_windows_amd64.exe'}
|
||||
${'1.2.3'} | ${'win32'} | ${'releases/download/v1.2.3/symfony_windows_amd64.exe'}
|
||||
${'latest'} | ${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`(
|
||||
'checking addSymfony: $version, $os_version',
|
||||
async ({version, os_version, uri}) => {
|
||||
const data = getData({
|
||||
tool: 'symfony',
|
||||
php_version: '7.4',
|
||||
version: version,
|
||||
os_version: os_version
|
||||
});
|
||||
expect(await tools.addSymfony(data)).toContain(uri);
|
||||
if (no_tool_cache !== 'true') {
|
||||
expect(await tools.addComposer(data)).toContain(cache_url);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
@@ -317,7 +373,7 @@ describe('Tools tests', () => {
|
||||
});
|
||||
|
||||
it.each`
|
||||
tool | os_version | script
|
||||
tool | os | script
|
||||
${'phpize'} | ${'linux'} | ${'add_devtools phpize'}
|
||||
${'php-config'} | ${'linux'} | ${'add_devtools php-config'}
|
||||
${'phpize'} | ${'darwin'} | ${'add_devtools phpize'}
|
||||
@@ -325,43 +381,47 @@ describe('Tools tests', () => {
|
||||
${'phpize'} | ${'win32'} | ${'Add-Log "$tick" "phpize" "phpize is not a windows tool"'}
|
||||
${'php-config'} | ${'win32'} | ${'Add-Log "$tick" "php-config" "php-config is not a windows tool"'}
|
||||
${'phpize'} | ${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`(
|
||||
'checking addDevTools: $tool, $os_version',
|
||||
async ({tool, os_version, script}) => {
|
||||
const data = getData({
|
||||
version: '7.4',
|
||||
tool: tool,
|
||||
os_version: os_version
|
||||
});
|
||||
expect(await tools.addDevTools(data)).toContain(script);
|
||||
}
|
||||
);
|
||||
`('checking addDevTools: $tool, $os', async ({tool, os, script}) => {
|
||||
const data = getData({
|
||||
version: '7.4',
|
||||
tool: tool,
|
||||
os: os
|
||||
});
|
||||
expect(await tools.addDevTools(data)).toContain(script);
|
||||
});
|
||||
|
||||
it.each([
|
||||
[
|
||||
'blackfire, blackfire-player, cs2pr, flex, grpc_php_plugin, php-cs-fixer, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, phpunit-bridge, php-config, phpize, protoc, symfony, vapor, wp',
|
||||
'blackfire, blackfire-player, box, churn, cs2pr, flex, grpc_php_plugin, parallel-lint, php-cs-fixer, php-scoper, phpDocumentor, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, phpunit-bridge, phpunit-polyfills, pint, php-config, phpize, protoc, symfony, vapor, wp',
|
||||
[
|
||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'add_blackfire',
|
||||
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"',
|
||||
'add_tool https://get.blackfire.io/blackfire-player-v1.22.0.phar blackfire-player "-V"',
|
||||
'add_tool https://github.com/box-project/box/releases/latest/download/box.phar box "--version"',
|
||||
'add_tool https://github.com/bmitch/churn-php/releases/latest/download/churn.phar churn "-V"',
|
||||
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"',
|
||||
'add_composertool flex flex symfony/',
|
||||
'add_composer_tool flex flex symfony/ global',
|
||||
'add_grpc_php_plugin latest',
|
||||
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer "-V"',
|
||||
'add_composertool phplint phplint overtrue/',
|
||||
'add_tool https://github.com/php-parallel-lint/PHP-Parallel-Lint/releases/latest/download/parallel-lint.phar parallel-lint "--version"',
|
||||
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v3.2.1/php-cs-fixer.phar php-cs-fixer "-V"',
|
||||
'add_tool https://github.com/humbug/php-scoper/releases/latest/download/php-scoper.phar php-scoper "--version"',
|
||||
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
||||
'add_composer_tool phplint phplint overtrue/',
|
||||
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"',
|
||||
'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"',
|
||||
'add_tool https://phar.phpunit.de/phpunit-7.4.0.phar phpunit "--version"',
|
||||
'add_pecl',
|
||||
'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"',
|
||||
'add_composertool phinx phinx robmorgan/',
|
||||
'add_composertool phinx phinx:1.2.3 robmorgan/',
|
||||
'add_tool https://phar.io/releases/phive.phar phive "status"',
|
||||
'add_composertool phpunit-bridge phpunit-bridge symfony/',
|
||||
'add_composer_tool phinx phinx robmorgan/ scoped',
|
||||
'add_composer_tool phinx phinx:1.2.3 robmorgan/ scoped',
|
||||
'add_tool https://github.com/phar-io/phive/releases/download/3.2.1/phive-3.2.1.phar phive "status"',
|
||||
'add_composer_tool phpunit-bridge phpunit-bridge symfony/ global',
|
||||
'add_composer_tool phpunit-polyfills phpunit-polyfills yoast/ global',
|
||||
'add_tool https://github.com/laravel/pint/releases/latest/download/pint.phar pint "-V"',
|
||||
'add_devtools php-config',
|
||||
'add_devtools phpize',
|
||||
'add_protoc latest',
|
||||
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony-cli "version"',
|
||||
'add_composertool vapor-cli vapor-cli laravel/',
|
||||
'add_symfony latest',
|
||||
'add_composer_tool vapor-cli vapor-cli laravel/ scoped',
|
||||
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||
]
|
||||
]
|
||||
@@ -374,37 +434,40 @@ describe('Tools tests', () => {
|
||||
|
||||
it.each([
|
||||
[
|
||||
'behat, blackfire, blackfire-player, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, flex, grpc_php_plugin:1.2.3, infection, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpize, phpmd, phpspec, phpunit-bridge:5.6, protoc:v1.2.3, psalm, symfony-cli, symfony:1.2.3, vapor-cli, wp-cli',
|
||||
'behat, blackfire, blackfire-player, churn, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, flex, grpc_php_plugin:1.2.3, infection, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpdoc, phpize, phpmd, phpspec, phpunit-bridge:5.6, phpunit-polyfills:1.0.1, protoc:v1.2.3, psalm, rector, symfony-cli, vapor-cli, wp-cli',
|
||||
[
|
||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'add_composertool behat behat behat/',
|
||||
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'add_composer_tool behat behat behat/ scoped',
|
||||
'add_blackfire',
|
||||
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"',
|
||||
'add_tool https://get.blackfire.io/blackfire-player-v1.22.0.phar blackfire-player "-V"',
|
||||
'add_tool https://github.com/bmitch/churn-php/releases/latest/download/churn.phar churn "-V"',
|
||||
'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize "-V"',
|
||||
'add_composertool composer-require-checker composer-require-checker maglnet/',
|
||||
'add_composertool composer-unused composer-unused icanhazstring/',
|
||||
'add_composer_tool composer-require-checker composer-require-checker maglnet/ scoped',
|
||||
'add_tool https://github.com/composer-unused/composer-unused/releases/latest/download/composer-unused.phar composer-unused "-V"',
|
||||
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr "-V"',
|
||||
'add_composertool flex flex symfony/',
|
||||
'add_composer_tool flex flex symfony/ global',
|
||||
'add_grpc_php_plugin 1.2.3',
|
||||
'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection "-V"',
|
||||
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan "-v"',
|
||||
'add_tool https://github.com/phan/phan/releases/download/1.2.3/phan.phar phan "-v"',
|
||||
'add_tool https://www.phing.info/get/phing-1.2.3.phar phing "-v"',
|
||||
'add_composertool phinx phinx robmorgan/',
|
||||
'add_tool https://www.phing.info/get/phing-1.2.3.phar,https://github.com/phingofficial/phing/releases/download/1.2.3/phing-1.2.3.phar phing "-v"',
|
||||
'add_composer_tool phinx phinx robmorgan/ scoped',
|
||||
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive',
|
||||
'add_devtools php-config',
|
||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"',
|
||||
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"',
|
||||
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"',
|
||||
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
||||
'add_devtools phpize',
|
||||
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"',
|
||||
'add_composertool phpspec phpspec phpspec/',
|
||||
'add_composertool phpunit-bridge phpunit-bridge:5.6.* symfony/',
|
||||
'add_tool https://github.com/phpspec/phpspec/releases/latest/download/phpspec.phar phpspec "-V"',
|
||||
'add_composer_tool phpunit-bridge phpunit-bridge:5.6.* symfony/ global',
|
||||
'add_composer_tool phpunit-polyfills phpunit-polyfills:1.0.1 yoast/ global',
|
||||
'add_protoc 1.2.3',
|
||||
'add_tool https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"',
|
||||
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony-cli "version"',
|
||||
'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony-cli "version"',
|
||||
'add_composertool vapor-cli vapor-cli laravel/',
|
||||
'add_composer_tool rector rector rector/ scoped',
|
||||
'add_symfony latest',
|
||||
'add_composer_tool vapor-cli vapor-cli laravel/ scoped',
|
||||
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||
]
|
||||
]
|
||||
@@ -417,22 +480,23 @@ describe('Tools tests', () => {
|
||||
|
||||
it.each([
|
||||
[
|
||||
'blackfire, blackfire-player:1.2.3, cs2pr, deployer, does_not_exist, flex, phinx, phive:0.13.2, php-config, phpize, phpmd, simple-phpunit, symfony, wp',
|
||||
'blackfire, blackfire-player:1.2.3, cs2pr, churn, deployer, does_not_exist, flex, phinx, phive:0.13.2, php-config, phpize, phpmd, simple-phpunit, symfony, wp',
|
||||
[
|
||||
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer',
|
||||
'Add-Blackfire',
|
||||
'Add-Tool https://get.blackfire.io/blackfire-player-v1.2.3.phar blackfire-player "-V"',
|
||||
'blackfire-player is not a windows tool',
|
||||
'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"',
|
||||
'Add-Tool https://github.com/bmitch/churn-php/releases/latest/download/churn.phar churn "-V"',
|
||||
'Add-Tool https://deployer.org/deployer.phar deployer "-V"',
|
||||
'Tool does_not_exist is not supported',
|
||||
'Add-Composertool flex flex symfony/',
|
||||
'Add-Composertool phinx phinx robmorgan/',
|
||||
'Add-ComposerTool flex flex symfony/ global',
|
||||
'Add-ComposerTool phinx phinx robmorgan/ scoped',
|
||||
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive "status"',
|
||||
'php-config is not a windows tool',
|
||||
'phpize is not a windows tool',
|
||||
'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"',
|
||||
'Add-Composertool phpunit-bridge phpunit-bridge symfony/',
|
||||
'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony-cli "version"',
|
||||
'Add-ComposerTool phpunit-bridge phpunit-bridge symfony/ global',
|
||||
'Add-Symfony',
|
||||
'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
|
||||
]
|
||||
]
|
||||
@@ -447,14 +511,14 @@ describe('Tools tests', () => {
|
||||
[
|
||||
'composer:v1, codeception/codeception, prestissimo, hirak/prestissimo, composer-prefetcher, narrowspark/automatic-composer-prefetcher, phinx: 1.2, robmorgan/phinx: ^1.2, user/tool:1.2.3, user/tool:~1.2',
|
||||
[
|
||||
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer',
|
||||
'Add-Composertool codeception codeception codeception/',
|
||||
'Add-Composertool prestissimo prestissimo hirak/',
|
||||
'Add-Composertool automatic-composer-prefetcher automatic-composer-prefetcher narrowspark/',
|
||||
'Add-Composertool phinx phinx:1.2.* robmorgan/',
|
||||
'Add-Composertool phinx phinx:^1.2 robmorgan/',
|
||||
'Add-Composertool tool tool:1.2.3 user/',
|
||||
'Add-Composertool tool tool:~1.2 user/'
|
||||
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer',
|
||||
'Add-ComposerTool codeception codeception codeception/ global',
|
||||
'Add-ComposerTool prestissimo prestissimo hirak/ global',
|
||||
'Add-ComposerTool automatic-composer-prefetcher automatic-composer-prefetcher narrowspark/ global',
|
||||
'Add-ComposerTool phinx phinx:1.2.* robmorgan/ scoped',
|
||||
'Add-ComposerTool phinx phinx:^1.2 robmorgan/ global',
|
||||
'Add-ComposerTool tool tool:1.2.3 user/ global',
|
||||
'Add-ComposerTool tool tool:~1.2 user/ global'
|
||||
]
|
||||
]
|
||||
])(
|
||||
@@ -467,13 +531,39 @@ describe('Tools tests', () => {
|
||||
}
|
||||
);
|
||||
|
||||
it.each`
|
||||
version | os | uri
|
||||
${'latest'} | ${'linux'} | ${'releases/latest/download/castor.linux-amd64.phar'}
|
||||
${'0.5.1'} | ${'linux'} | ${'releases/download/v0.5.1/castor.linux-amd64.phar'}
|
||||
${'latest'} | ${'darwin'} | ${'releases/latest/download/castor.darwin-amd64.phar'}
|
||||
${'0.5.1'} | ${'darwin'} | ${'releases/download/v0.5.1/castor.darwin-amd64.phar'}
|
||||
${'latest'} | ${'win32'} | ${'releases/latest/download/castor.windows-amd64.phar'}
|
||||
${'0.5.1'} | ${'win32'} | ${'releases/download/v0.5.1/castor.windows-amd64.phar castor -V'}
|
||||
${'latest'} | ${'openbsd'} | ${'Platform openbsd is not supported'}
|
||||
`('checking addCastor: $version, $os', async ({version, os, uri}) => {
|
||||
const data = getData({
|
||||
tool: 'castor',
|
||||
php_version: '8.1',
|
||||
version_prefix: 'v',
|
||||
version: version,
|
||||
os: os
|
||||
});
|
||||
if (os === 'win32' && version === '0.5.1') {
|
||||
fs.writeFileSync('castor.php', '');
|
||||
expect(await tools.addCastor(data)).toContain(uri);
|
||||
fs.unlinkSync('castor.php');
|
||||
} else {
|
||||
expect(await tools.addCastor(data)).toContain(uri);
|
||||
}
|
||||
});
|
||||
|
||||
it.each`
|
||||
tools_csv | script
|
||||
${'none'} | ${''}
|
||||
${'none, phpunit'} | ${'\nstep_log "Setup Tools"\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n\nadd_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"'}
|
||||
${'composer:preview'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'}
|
||||
${'composer, composer:v1'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-1.phar,https://getcomposer.org/composer-1.phar composer'}
|
||||
${'composer:v1, composer:preview, composer:snapshot'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'}
|
||||
${'none, phpunit'} | ${'\nstep_log "Setup Tools"\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n\nadd_tool https://phar.phpunit.de/phpunit-7.4.0.phar phpunit "--version"'}
|
||||
${'composer:preview'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-preview.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'}
|
||||
${'composer, composer:v1'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer'}
|
||||
${'composer:v1, composer:preview, composer:snapshot'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-snapshot.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'}
|
||||
`('checking composer setup: $tools_csv', async ({tools_csv, script}) => {
|
||||
expect(await tools.addTools(tools_csv, '7.4', 'linux')).toContain(script);
|
||||
});
|
||||
@@ -487,4 +577,32 @@ describe('Tools tests', () => {
|
||||
process.env['COMPOSER_TOKEN'] = token;
|
||||
expect(await tools.addTools(tools_csv, '7.4', 'linux')).toContain(script);
|
||||
});
|
||||
|
||||
it.each`
|
||||
tools_csv | token | script
|
||||
${'cs2pr:1.2'} | ${'invalid_token'} | ${'add_log "$cross" "cs2pr" "Invalid token"'}
|
||||
${'phpunit:1.2'} | ${'invalid_token'} | ${'add_log "$cross" "phpunit" "Invalid token"'}
|
||||
${'phpunit:0.1'} | ${'no_data'} | ${'add_log "$cross" "phpunit" "No version found with prefix 0.1."'}
|
||||
`('checking error: $tools_csv', async ({tools_csv, token, script}) => {
|
||||
process.env['GITHUB_TOKEN'] = token;
|
||||
expect(await tools.addTools(tools_csv, '7.4', 'linux')).toContain(script);
|
||||
});
|
||||
|
||||
it.each`
|
||||
tools_csv | php_version | resolved
|
||||
${'phpunit'} | ${'8.2'} | ${'/phpunit-8.2.0.phar'}
|
||||
${'phpunit'} | ${'8.1'} | ${'/phpunit-8.1.0.phar'}
|
||||
${'phpunit'} | ${'8.0'} | ${'/phpunit-8.0.0.phar'}
|
||||
${'phpunit'} | ${'7.3'} | ${'/phpunit-7.3.0.phar'}
|
||||
${'phpunit'} | ${'7.2'} | ${'/phpunit-7.2.0.phar'}
|
||||
${'phpunit'} | ${'7.1'} | ${'/phpunit-7.1.0.phar'}
|
||||
${'phpunit'} | ${'7.0'} | ${'/phpunit-7.0.0.phar'}
|
||||
`(
|
||||
'checking error: $tools_csv',
|
||||
async ({tools_csv, php_version, resolved}) => {
|
||||
expect(await tools.addTools(tools_csv, php_version, 'linux')).toContain(
|
||||
resolved
|
||||
);
|
||||
}
|
||||
);
|
||||
});
|
||||
+88
-76
@@ -1,25 +1,34 @@
|
||||
import * as fs from 'fs';
|
||||
import fs = require('fs');
|
||||
import * as path from 'path';
|
||||
import * as utils from '../src/utils';
|
||||
|
||||
/**
|
||||
* Mock @actions/core
|
||||
*/
|
||||
jest.mock('@actions/core', () => ({
|
||||
getInput: jest.fn().mockImplementation(key => {
|
||||
return ['setup-php'].indexOf(key) !== -1 ? key : '';
|
||||
})
|
||||
}),
|
||||
info: jest.fn()
|
||||
}));
|
||||
|
||||
async function cleanup(path: string): Promise<void> {
|
||||
fs.unlink(path, error => {
|
||||
if (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Mock fetch.ts
|
||||
*/
|
||||
jest.mock('../src/fetch', () => ({
|
||||
fetch: jest.fn().mockImplementation(() => {
|
||||
return {data: '{ "latest": "8.1", "5.x": "5.6" }'};
|
||||
})
|
||||
}));
|
||||
|
||||
describe('Utils tests', () => {
|
||||
it('checking readEnv', async () => {
|
||||
process.env['test'] = 'setup-php';
|
||||
process.env['test-hyphen'] = 'setup-php';
|
||||
expect(await utils.readEnv('test')).toBe('setup-php');
|
||||
expect(await utils.readEnv('TEST')).toBe('setup-php');
|
||||
expect(await utils.readEnv('test_hyphen')).toBe('setup-php');
|
||||
expect(await utils.readEnv('TEST_HYPHEN')).toBe('setup-php');
|
||||
expect(await utils.readEnv('undefined')).toBe('');
|
||||
});
|
||||
|
||||
@@ -33,40 +42,27 @@ describe('Utils tests', () => {
|
||||
}).rejects.toThrow('Input required and not supplied: DoesNotExist');
|
||||
});
|
||||
|
||||
it('checking fetch', async () => {
|
||||
const manifest = await utils.getManifestURL();
|
||||
let response: Record<string, string> = await utils.fetch(manifest);
|
||||
expect(response.error).toBe(undefined);
|
||||
expect(response.data).toContain('latest');
|
||||
|
||||
response = await utils.fetch(manifest, 'invalid_token');
|
||||
expect(response.error).not.toBe(undefined);
|
||||
expect(response.data).toBe(undefined);
|
||||
});
|
||||
|
||||
it('checking getManifestURL', async () => {
|
||||
expect(await utils.getManifestURL()).toContain('php-versions.json');
|
||||
});
|
||||
|
||||
it('checking parseVersion', async () => {
|
||||
jest
|
||||
.spyOn(utils, 'fetch')
|
||||
.mockImplementation(
|
||||
async (url, token?): Promise<Record<string, string>> => {
|
||||
if (!token || token === 'valid_token') {
|
||||
return {data: `{ "latest": "8.0", "5.x": "5.6", "url": "${url}" }`};
|
||||
} else {
|
||||
return {error: 'Invalid token'};
|
||||
}
|
||||
}
|
||||
);
|
||||
expect(await utils.parseVersion('latest')).toBe('8.0');
|
||||
expect(await utils.parseVersion('latest')).toBe('8.1');
|
||||
expect(await utils.parseVersion('7')).toBe('7.0');
|
||||
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
||||
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
||||
expect(await utils.parseVersion('4.x')).toBe(undefined);
|
||||
});
|
||||
|
||||
it('checking parseIniFile', async () => {
|
||||
expect(await utils.parseIniFile('production')).toBe('production');
|
||||
expect(await utils.parseIniFile('development')).toBe('development');
|
||||
expect(await utils.parseIniFile('none')).toBe('none');
|
||||
expect(await utils.parseIniFile('php.ini-production')).toBe('production');
|
||||
expect(await utils.parseIniFile('php.ini-development')).toBe('development');
|
||||
expect(await utils.parseIniFile('invalid')).toBe('production');
|
||||
});
|
||||
|
||||
it('checking asyncForEach', async () => {
|
||||
const array: Array<string> = ['a', 'b', 'c'];
|
||||
let concat = '';
|
||||
@@ -86,48 +82,10 @@ describe('Utils tests', () => {
|
||||
expect(await utils.color('warning')).toBe('33');
|
||||
});
|
||||
|
||||
it('checking readFile', async () => {
|
||||
const darwin: string = fs.readFileSync(
|
||||
path.join(__dirname, '../src/scripts/darwin.sh'),
|
||||
'utf8'
|
||||
);
|
||||
const linux: string = fs.readFileSync(
|
||||
path.join(__dirname, '../src/scripts/linux.sh'),
|
||||
'utf8'
|
||||
);
|
||||
const win32: string = fs.readFileSync(
|
||||
path.join(__dirname, '../src/scripts/win32.ps1'),
|
||||
'utf8'
|
||||
);
|
||||
expect(await utils.readFile('darwin.sh', 'src/scripts')).toBe(darwin);
|
||||
expect(await utils.readFile('darwin.sh', 'src/scripts')).toBe(darwin);
|
||||
expect(await utils.readFile('linux.sh', 'src/scripts')).toBe(linux);
|
||||
expect(await utils.readFile('linux.sh', 'src/scripts')).toBe(linux);
|
||||
expect(await utils.readFile('win32.ps1', 'src/scripts')).toBe(win32);
|
||||
expect(await utils.readFile('win32.ps1', 'src/scripts')).toBe(win32);
|
||||
});
|
||||
|
||||
it('checking writeScripts', async () => {
|
||||
const testString = 'sudo apt-get install php';
|
||||
const runner_dir: string = process.env['RUNNER_TOOL_CACHE'] || '';
|
||||
const script_path: string = path.join(runner_dir, 'test.sh');
|
||||
await utils.writeScript('test.sh', testString);
|
||||
await fs.readFile(
|
||||
script_path,
|
||||
function (error: Error | null, data: Buffer) {
|
||||
expect(testString).toBe(data.toString());
|
||||
}
|
||||
);
|
||||
await cleanup(script_path);
|
||||
});
|
||||
|
||||
it('checking extensionArray', async () => {
|
||||
expect(await utils.extensionArray('a, b, php_c, php-d')).toEqual([
|
||||
'a',
|
||||
'b',
|
||||
'c',
|
||||
'd'
|
||||
]);
|
||||
expect(
|
||||
await utils.extensionArray('a, :b, php_c, none, php-d, Zend e, :Zend f')
|
||||
).toEqual(['none', 'a', ':b', 'c', 'd', 'e', ':f']);
|
||||
|
||||
expect(await utils.extensionArray('')).toEqual([]);
|
||||
expect(await utils.extensionArray(' ')).toEqual([]);
|
||||
@@ -153,6 +111,9 @@ describe('Utils tests', () => {
|
||||
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('a="b=c;d=e", b=\'c=d,e\', c="g=h,i=j", d=g=h, a===')
|
||||
).toEqual(["a='b=c;d=e'", "b='c=d,e'", "c='g=h,i=j'", "d='g=h'", "a='=='"]);
|
||||
expect(await utils.CSVArray('')).toEqual([]);
|
||||
expect(await utils.CSVArray(' ')).toEqual([]);
|
||||
});
|
||||
@@ -234,6 +195,7 @@ describe('Utils tests', () => {
|
||||
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('win32', 'tool_name')).toBe('Add-ToolName ');
|
||||
expect(await utils.getCommand('openbsd', 'tool')).toContain(
|
||||
'Platform openbsd is not supported'
|
||||
);
|
||||
@@ -253,9 +215,9 @@ describe('Utils tests', () => {
|
||||
});
|
||||
|
||||
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('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'
|
||||
);
|
||||
@@ -300,4 +262,54 @@ describe('Utils tests', () => {
|
||||
'\nadd_extension_from_source ext https://sub.domain.XN--tld org repo release extension'
|
||||
);
|
||||
});
|
||||
|
||||
it('checking readPHPVersion', async () => {
|
||||
expect(await utils.readPHPVersion()).toBe('latest');
|
||||
|
||||
process.env['php-version-file'] = '.phpenv-version';
|
||||
await expect(utils.readPHPVersion()).rejects.toThrow(
|
||||
"Could not find '.phpenv-version' file."
|
||||
);
|
||||
|
||||
const existsSync = jest.spyOn(fs, 'existsSync').mockImplementation();
|
||||
const readFileSync = jest.spyOn(fs, 'readFileSync').mockImplementation();
|
||||
|
||||
existsSync.mockReturnValue(true);
|
||||
readFileSync.mockReturnValue('8.1');
|
||||
|
||||
expect(await utils.readPHPVersion()).toBe('8.1');
|
||||
|
||||
process.env['php-version'] = '8.2';
|
||||
expect(await utils.readPHPVersion()).toBe('8.2');
|
||||
|
||||
delete process.env['php-version-file'];
|
||||
delete process.env['php-version'];
|
||||
|
||||
existsSync.mockReturnValueOnce(false).mockReturnValueOnce(true);
|
||||
readFileSync.mockReturnValue(
|
||||
'{ "platform-overrides": { "php": "7.3.25" } }'
|
||||
);
|
||||
expect(await utils.readPHPVersion()).toBe('7.3.25');
|
||||
|
||||
existsSync
|
||||
.mockReturnValueOnce(false)
|
||||
.mockReturnValueOnce(false)
|
||||
.mockReturnValueOnce(true);
|
||||
readFileSync.mockReturnValue(
|
||||
'{ "config": { "platform": { "php": "7.4.33" } } }'
|
||||
);
|
||||
expect(await utils.readPHPVersion()).toBe('7.4.33');
|
||||
|
||||
existsSync.mockClear();
|
||||
readFileSync.mockClear();
|
||||
});
|
||||
|
||||
it('checking setVariable', async () => {
|
||||
let script: string = await utils.setVariable('var', 'command', 'linux');
|
||||
expect(script).toEqual('\nvar="$(command)"\n');
|
||||
script = await utils.setVariable('var', 'command', 'darwin');
|
||||
expect(script).toEqual('\nvar="$(command)"\n');
|
||||
script = await utils.setVariable('var', 'command', 'win32');
|
||||
expect(script).toEqual('\n$var = command\n');
|
||||
});
|
||||
});
|
||||
+9
-3
@@ -7,11 +7,17 @@ branding:
|
||||
inputs:
|
||||
php-version:
|
||||
description: 'Setup PHP version.'
|
||||
default: '8.0'
|
||||
required: true
|
||||
required: false
|
||||
php-version-file:
|
||||
description: 'Setup PHP version from a file.'
|
||||
required: false
|
||||
extensions:
|
||||
description: 'Setup PHP extensions.'
|
||||
required: false
|
||||
ini-file:
|
||||
description: 'Set base ini file.'
|
||||
required: false
|
||||
default: 'production'
|
||||
ini-values:
|
||||
description: 'Add values to php.ini.'
|
||||
required: false
|
||||
@@ -25,5 +31,5 @@ outputs:
|
||||
php-version:
|
||||
description: 'PHP version in semver format'
|
||||
runs:
|
||||
using: 'node12'
|
||||
using: 'node20'
|
||||
main: 'dist/index.js'
|
||||
Vendored
+3149
-428
File diff suppressed because it is too large.
Load diff
+13
-7
@@ -8,25 +8,31 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.1', '7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
- uses: actions/cache@v2
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: PHP test
|
||||
run: composer test
|
||||
run: composer test
|
||||
@@ -15,17 +15,22 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
# 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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: blackfire
|
||||
tools: blackfire, blackfire-player #Setup Blackfire client, agent and player
|
||||
# Setup Blackfire CLI and player
|
||||
tools: blackfire, blackfire-player
|
||||
coverage: none
|
||||
|
||||
# Refer to https://blackfire.io/docs/player/index#usage
|
||||
- name: Play the scenario
|
||||
run: blackfire-player run scenario.bkf # Refer to https://blackfire.io/docs/player/index#usage
|
||||
run: blackfire-player run scenario.bkf
|
||||
+13
-7
@@ -15,17 +15,23 @@ jobs:
|
||||
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
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
# 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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# Setup Blackfire extension and CLI
|
||||
extensions: blackfire
|
||||
tools: blackfire #Setup Blackfire client and agent
|
||||
tools: blackfire
|
||||
# Disable Xdebug and PCOV coverage drivers
|
||||
coverage: none
|
||||
|
||||
# Refer to https://blackfire.io/docs/cookbooks/profiling-cli
|
||||
- name: Profile
|
||||
run: blackfire run php my-script.php # Refer to https://blackfire.io/docs/cookbooks/profiling-cli
|
||||
run: blackfire run php my-script.php
|
||||
+41
-17
@@ -6,11 +6,13 @@ jobs:
|
||||
tests:
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
@@ -18,6 +20,7 @@ jobs:
|
||||
ports:
|
||||
- 3306/tcp
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -25,7 +28,9 @@ jobs:
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
@@ -34,23 +39,30 @@ jobs:
|
||||
# Install memcached if using ext-memcached
|
||||
extensions: mbstring, intl, redis, pdo_mysql
|
||||
coverage: pcov
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer run-script post-install-cmd --no-interaction
|
||||
composer run-script post-install-cmd
|
||||
|
||||
# Add a step to run migrations if required
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
@@ -63,25 +75,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: PHP CodeSniffer
|
||||
run: composer cs-check
|
||||
|
||||
@@ -90,25 +108,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
tools: phpstan
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Static Analysis using PHPStan
|
||||
run: phpstan analyse --no-progress src/
|
||||
run: phpstan analyse --no-progress src/
|
||||
@@ -6,11 +6,13 @@ jobs:
|
||||
tests:
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -18,6 +20,7 @@ jobs:
|
||||
ports:
|
||||
- 5432/tcp
|
||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -25,7 +28,9 @@ jobs:
|
||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
@@ -34,21 +39,30 @@ jobs:
|
||||
# Install memcached if using ext-memcached
|
||||
extensions: mbstring, intl, redis, pdo_pgsql
|
||||
coverage: pcov
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer run-script post-install-cmd --no-interaction
|
||||
composer run-script post-install-cmd
|
||||
|
||||
# Add a step to run migrations if required
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
@@ -61,25 +75,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: PHP CodeSniffer
|
||||
run: composer cs-check
|
||||
|
||||
@@ -88,25 +108,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
tools: phpstan
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Static Analysis using PHPStan
|
||||
run: phpstan analyse --no-progress src/
|
||||
run: phpstan analyse --no-progress src/
|
||||
+32
-15
@@ -7,32 +7,38 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, intl, pdo_sqlite, pdo_mysql
|
||||
coverage: pcov #optional
|
||||
coverage: pcov
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer run-script post-install-cmd --no-interaction
|
||||
composer run-script post-install-cmd
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
|
||||
@@ -41,25 +47,30 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: PHP CodeSniffer
|
||||
run: composer cs-check
|
||||
|
||||
@@ -68,25 +79,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '7.3'
|
||||
php-version: '8.1'
|
||||
extensions: mbstring, intl
|
||||
tools: phpstan
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Static Analysis using PHPStan
|
||||
run: phpstan analyse --no-progress src/
|
||||
@@ -6,29 +6,35 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, intl, curl, dom
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
@@ -1,4 +1,4 @@
|
||||
# GitHub Action for Zend Framework
|
||||
# GitHub Action for Laminas framework MVC projects
|
||||
name: Testing Zend Framework
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
@@ -6,31 +6,34 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, bcmath, curl, intl
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
+27
-12
@@ -12,10 +12,12 @@ jobs:
|
||||
BROADCAST_DRIVER: log
|
||||
CACHE_DRIVER: redis
|
||||
QUEUE_CONNECTION: redis
|
||||
SESSION_DRIVER: redis
|
||||
SESSION_DRIVER: redis
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
@@ -23,6 +25,7 @@ jobs:
|
||||
ports:
|
||||
- 3306/tcp
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -31,44 +34,56 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo, mysql
|
||||
coverage: xdebug #optional
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
coverage: xdebug
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: |
|
||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
php artisan key:generate
|
||||
|
||||
- name: Clear Config
|
||||
run: php artisan config:clear
|
||||
|
||||
- name: Run Migration
|
||||
run: php artisan migrate -v
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
@@ -15,9 +15,11 @@ jobs:
|
||||
DB_PASSWORD: postgres
|
||||
DB_USERNAME: postgres
|
||||
DB_DATABASE: postgres
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -25,6 +27,7 @@ jobs:
|
||||
ports:
|
||||
- 5432/tcp
|
||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -33,42 +36,56 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo, pgsql
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: |
|
||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
php artisan key:generate
|
||||
|
||||
- name: Clear Config
|
||||
run: php artisan config:clear
|
||||
|
||||
- name: Run Migration
|
||||
run: php artisan migrate -v
|
||||
env:
|
||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
env:
|
||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
+16
-8
@@ -9,34 +9,42 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: |
|
||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
php artisan key:generate
|
||||
|
||||
- name: Clear Config
|
||||
run: php artisan config:clear
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
+26
-11
@@ -13,9 +13,11 @@ jobs:
|
||||
CACHE_DRIVER: redis
|
||||
QUEUE_CONNECTION: redis
|
||||
SESSION_DRIVER: redis
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
@@ -23,6 +25,7 @@ jobs:
|
||||
ports:
|
||||
- 3306/tcp
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -31,44 +34,56 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo, mysql
|
||||
coverage: xdebug #optional
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
coverage: xdebug
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer require predis/predis illuminate/redis
|
||||
|
||||
- name: Prepare the application
|
||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
|
||||
- name: Register Redis as service provider
|
||||
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
||||
|
||||
- name: Run Migration
|
||||
run: php artisan migrate -v
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
@@ -15,9 +15,11 @@ jobs:
|
||||
DB_PASSWORD: postgres
|
||||
DB_USERNAME: postgres
|
||||
DB_DATABASE: postgres
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -25,6 +27,7 @@ jobs:
|
||||
ports:
|
||||
- 5432/tcp
|
||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
@@ -33,40 +36,54 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo, pgsql
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: |
|
||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
composer require predis/predis illuminate/redis
|
||||
|
||||
- name: Prepare the application
|
||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
|
||||
- name: Register Redis as service provider
|
||||
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
||||
|
||||
- name: Run Migration
|
||||
run: php artisan migrate -v
|
||||
env:
|
||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
env:
|
||||
|
||||
+15
-8
@@ -9,30 +9,37 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, fileinfo, mysql
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
+27
-13
@@ -16,9 +16,11 @@ jobs:
|
||||
DB_PASSWORD: password
|
||||
CODECEPTION_URL: 127.0.0.1
|
||||
CODECEPTION_PORT: 8888
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
@@ -30,34 +32,45 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
# For phalcon 3.x, use
|
||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||
# For phalcon 3.x, use
|
||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, zip, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
|
||||
coverage: xdebug #optional
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
# Use phalcon3 for the phalcon 3.x.
|
||||
extensions: mbstring, dom, zip, phalcon4, mysql
|
||||
coverage: xdebug
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
|
||||
- name: Run Migration
|
||||
run: |
|
||||
if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
|
||||
@@ -65,10 +78,11 @@ jobs:
|
||||
vendor/bin/phinx seed:run
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
(cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
|
||||
vendor/bin/codecept build
|
||||
vendor/bin/codecept run
|
||||
env:
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||
@@ -17,9 +17,11 @@ jobs:
|
||||
CODECEPTION_URL: 127.0.0.1
|
||||
CODECEPTION_PORT: 8888
|
||||
DB_CONNECTION: pgsql
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -31,22 +33,31 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
# For phalcon 3.x, use
|
||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||
# For phalcon 3.x, use
|
||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, dom, zip, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
|
||||
coverage: xdebug #optional
|
||||
# Use phalcon3 for the phalcon 3.x
|
||||
extensions: mbstring, dom, zip, phalcon4, pgsql
|
||||
coverage: xdebug
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
|
||||
+22
-10
@@ -8,50 +8,62 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.1', '7.2', '7.3', '7.4']
|
||||
node-versions: ['8', '10']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
node-versions: ['16']
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-versions }}
|
||||
- name: Setup PHP, with composer and extensions
|
||||
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring
|
||||
|
||||
- name: Check node versions
|
||||
run: node -v
|
||||
|
||||
- name: Get yarn cache
|
||||
id: yarn-cache
|
||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||
- uses: actions/cache@v2
|
||||
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.yarn-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||
restore-keys: ${{ runner.os }}-yarn-
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install yarn dependencies
|
||||
run: yarn -V
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Yarn test and build
|
||||
run: |
|
||||
yarn run test
|
||||
yarn run build
|
||||
yarn run rmdist
|
||||
yarn run "build:production"
|
||||
|
||||
- name: PHP test
|
||||
run: composer test
|
||||
run: composer test
|
||||
@@ -6,29 +6,35 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
runs-on: ${{ matrix.operating-system }}
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, simplexml, dom
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Test with phpunit
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
run: vendor/bin/phpunit --coverage-text
|
||||
+23
-10
@@ -5,9 +5,11 @@ jobs:
|
||||
symfony:
|
||||
name: Symfony (PHP ${{ matrix.php-versions }})
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: symfony
|
||||
@@ -18,32 +20,41 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit-bridge
|
||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
|
||||
coverage: xdebug #optional
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
coverage: xdebug
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Run Migration
|
||||
run: |
|
||||
composer require --dev symfony/orm-pack
|
||||
@@ -51,7 +62,9 @@ jobs:
|
||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||
env:
|
||||
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
|
||||
|
||||
- name: Install PHPUnit
|
||||
run: simple-phpunit install
|
||||
|
||||
- name: Run tests
|
||||
run: simple-phpunit --coverage-text
|
||||
@@ -5,9 +5,11 @@ jobs:
|
||||
symfony:
|
||||
name: Symfony (PHP ${{ matrix.php-versions }})
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -18,30 +20,41 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit-bridge
|
||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, pgsql
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Run Migration
|
||||
run: |
|
||||
composer require --dev symfony/orm-pack
|
||||
@@ -49,7 +62,9 @@ jobs:
|
||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||
env:
|
||||
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:${{ job.services.postgres.ports[5432] }}/postgres?charset=UTF-8
|
||||
|
||||
- name: Install PHPUnit
|
||||
run: simple-phpunit install
|
||||
|
||||
- name: Run tests
|
||||
run: simple-phpunit --coverage-text
|
||||
+14
-7
@@ -9,31 +9,38 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||
php-versions: ['7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit-bridge
|
||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Install PHPUnit
|
||||
run: simple-phpunit install
|
||||
|
||||
- name: Run tests
|
||||
run: simple-phpunit --coverage-text
|
||||
+24
-11
@@ -11,9 +11,11 @@ jobs:
|
||||
TEST_DB_USERNAME: root
|
||||
TEST_DB_PASSWORD: yii
|
||||
DB_CHARSET: utf8
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
image: mysql:latest
|
||||
env:
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||
MYSQL_ROOT_PASSWORD: yii
|
||||
@@ -24,35 +26,45 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0']
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set Node.js 10.x
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 10.x
|
||||
- name: Setup PHP, with composer and extensions
|
||||
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, intl, gd, imagick, zip, dom, mysql
|
||||
coverage: xdebug #optional
|
||||
- name: Start mysql service
|
||||
run: sudo /etc/init.d/mysql start
|
||||
coverage: xdebug
|
||||
|
||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start mysql service
|
||||
# run: sudo systemctl start mysql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: |
|
||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||
@@ -62,6 +74,7 @@ jobs:
|
||||
env:
|
||||
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
vendor/bin/codecept build
|
||||
@@ -70,4 +83,4 @@ jobs:
|
||||
vendor/bin/codecept run
|
||||
env:
|
||||
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||
@@ -11,9 +11,11 @@ jobs:
|
||||
TEST_DB_USERNAME: postgres
|
||||
TEST_DB_PASSWORD: postgres
|
||||
DB_CHARSET: utf8
|
||||
|
||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:10.8
|
||||
image: postgres:latest
|
||||
env:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
@@ -24,33 +26,45 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.2', '7.3', '7.4']
|
||||
php-versions: ['7.4', '8.0']
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set Node.js 10.x
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: 10.x
|
||||
- name: Setup PHP, with composer and extensions
|
||||
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||
|
||||
# Docs: https://github.com/shivammathur/setup-php
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
||||
coverage: xdebug #optional
|
||||
coverage: xdebug
|
||||
|
||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
||||
# If you are using it instead of service containers, make sure you start it.
|
||||
# - name: Start postgresql service
|
||||
# run: sudo systemctl start postgresql.service
|
||||
|
||||
- name: Get composer cache directory
|
||||
id: composer-cache
|
||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
# Use composer.json for key, if composer.lock is not committed.
|
||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: ${{ runner.os }}-composer-
|
||||
|
||||
- name: Install Composer dependencies
|
||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
||||
|
||||
- name: Prepare the application
|
||||
run: |
|
||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||
@@ -60,6 +74,7 @@ jobs:
|
||||
env:
|
||||
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||
|
||||
- name: Run Tests
|
||||
run: |
|
||||
vendor/bin/codecept build
|
||||
@@ -68,4 +83,4 @@ jobs:
|
||||
vendor/bin/codecept run
|
||||
env:
|
||||
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||
Generated
+5610
-5760
File diff suppressed because it is too large.
Load diff
+40
-29
@@ -1,14 +1,24 @@
|
||||
{
|
||||
"name": "setup-php",
|
||||
"version": "2.12.0",
|
||||
"version": "2.28.0",
|
||||
"private": false,
|
||||
"description": "Setup PHP for use with GitHub Actions",
|
||||
"main": "lib/install.js",
|
||||
"types": "lib/install.d.ts",
|
||||
"directories": {
|
||||
"lib": "lib",
|
||||
"test": "__tests__",
|
||||
"src": "src"
|
||||
},
|
||||
"files": [
|
||||
"lib",
|
||||
"src"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"lint": "eslint **/*.ts --cache --fix",
|
||||
"format": "prettier --write **/*.ts && git add .",
|
||||
"format-check": "prettier --check **/*.ts",
|
||||
"lint": "eslint **/src/*.ts **/__tests__/*.ts --cache --fix",
|
||||
"format": "prettier --write **/src/*.ts **/__tests__/*.ts && git add -f __tests__/ ",
|
||||
"format-check": "prettier --check **/src/*.ts **/__tests__/*.ts",
|
||||
"release": "ncc build -o dist && git add -f dist/",
|
||||
"test": "jest"
|
||||
},
|
||||
@@ -24,33 +34,34 @@
|
||||
"author": "shivammathur",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.4.0",
|
||||
"@actions/exec": "^1.1.0",
|
||||
"@actions/io": "^1.1.1",
|
||||
"fs": "0.0.1-security"
|
||||
"@actions/core": "^1.10.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/io": "^1.1.3",
|
||||
"compare-versions": "^6.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^26.0.24",
|
||||
"@types/node": "^16.3.2",
|
||||
"@typescript-eslint/eslint-plugin": "^4.28.3",
|
||||
"@typescript-eslint/parser": "^4.28.3",
|
||||
"@vercel/ncc": "^0.28.6",
|
||||
"eslint": "^7.30.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-import": "^2.23.4",
|
||||
"eslint-plugin-jest": "^24.3.6",
|
||||
"eslint-plugin-prettier": "^3.4.0",
|
||||
"husky": "^4.3.8",
|
||||
"jest": "^27.0.6",
|
||||
"jest-circus": "^27.0.6",
|
||||
"prettier": "^2.3.2",
|
||||
"ts-jest": "^27.0.3",
|
||||
"typescript": "^4.3.5"
|
||||
"@types/jest": "^29.5.10",
|
||||
"@types/node": "^20.10.0",
|
||||
"@typescript-eslint/eslint-plugin": "^6.12.0",
|
||||
"@typescript-eslint/parser": "^6.12.0",
|
||||
"@vercel/ncc": "^0.38.1",
|
||||
"eslint": "^8.54.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-import": "^2.29.0",
|
||||
"eslint-plugin-jest": "^27.6.0",
|
||||
"eslint-plugin-prettier": "^5.0.1",
|
||||
"jest": "^29.7.0",
|
||||
"jest-circus": "^29.7.0",
|
||||
"nock": "^13.3.8",
|
||||
"prettier": "^3.1.0",
|
||||
"simple-git-hooks": "^2.9.0",
|
||||
"ts-jest": "^29.1.1",
|
||||
"typescript": "^5.3.2"
|
||||
},
|
||||
"husky": {
|
||||
"skipCI": true,
|
||||
"hooks": {
|
||||
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
||||
}
|
||||
"bugs": {
|
||||
"url": "https://github.com/shivammathur/setup-php/issues"
|
||||
},
|
||||
"simple-git-hooks": {
|
||||
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
||||
}
|
||||
}
|
||||
+8
-8
@@ -45,28 +45,28 @@ export async function addINIValuesWindows(
|
||||
* Function to add custom ini values
|
||||
*
|
||||
* @param ini_values_csv
|
||||
* @param os_version
|
||||
* @param os
|
||||
* @param no_step
|
||||
*/
|
||||
export async function addINIValues(
|
||||
ini_values_csv: string,
|
||||
os_version: string,
|
||||
os: string,
|
||||
no_step = false
|
||||
): Promise<string> {
|
||||
let script = '\n';
|
||||
switch (no_step) {
|
||||
case true:
|
||||
script +=
|
||||
(await utils.stepLog('Add php.ini values', os_version)) +
|
||||
(await utils.suppressOutput(os_version)) +
|
||||
(await utils.stepLog('Add php.ini values', os)) +
|
||||
(await utils.suppressOutput(os)) +
|
||||
'\n';
|
||||
break;
|
||||
case false:
|
||||
default:
|
||||
script += (await utils.stepLog('Add php.ini values', os_version)) + '\n';
|
||||
script += (await utils.stepLog('Add php.ini values', os)) + '\n';
|
||||
break;
|
||||
}
|
||||
switch (os_version) {
|
||||
switch (os) {
|
||||
case 'win32':
|
||||
return script + (await addINIValuesWindows(ini_values_csv));
|
||||
case 'darwin':
|
||||
@@ -74,8 +74,8 @@ export async function addINIValues(
|
||||
return script + (await addINIValuesUnix(ini_values_csv));
|
||||
default:
|
||||
return await utils.log(
|
||||
'Platform ' + os_version + ' is not supported',
|
||||
os_version,
|
||||
'Platform ' + os + ' is not supported',
|
||||
os,
|
||||
'error'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
amqp=amqp
|
||||
apcu=apcu
|
||||
ast=ast
|
||||
couchbase=couchbase
|
||||
ds=ds
|
||||
event=event
|
||||
expect=expect
|
||||
gearman=gearman
|
||||
gnupg=gnupg
|
||||
grpc=grpc
|
||||
igbinary=igbinary
|
||||
imagick=imagick
|
||||
imap=imap
|
||||
lua=lua
|
||||
mailparse=mailparse
|
||||
mcrypt=mcrypt
|
||||
memcache=memcache
|
||||
memcached=memcached
|
||||
mongodb=mongodb
|
||||
msgpack=msgpack
|
||||
pcov=pcov
|
||||
pdo_sqlsrv=pdo_sqlsrv
|
||||
pecl_http=http
|
||||
phalcon3=phalcon
|
||||
phalcon4=phalcon
|
||||
phalcon5=phalcon
|
||||
propro=propro
|
||||
protobuf=protobuf
|
||||
psr=psr
|
||||
raphf=raphf
|
||||
rdkafka=rdkafka
|
||||
redis=redis
|
||||
snmp=snmp
|
||||
sqlsrv=sqlsrv
|
||||
ssh2=ssh2
|
||||
swoole=swoole
|
||||
uuid=uuid
|
||||
v8js=v8js
|
||||
vips=vips
|
||||
xdebug=xdebug
|
||||
xdebug2=xdebug
|
||||
xlswriter=xlswriter
|
||||
yaml=yaml
|
||||
zmq=zmq
|
||||
@@ -0,0 +1,3 @@
|
||||
COMPOSER_PROCESS_TIMEOUT=0
|
||||
COMPOSER_NO_INTERACTION=1
|
||||
COMPOSER_NO_AUDIT=1
|
||||
@@ -0,0 +1,3 @@
|
||||
opcache.enable=1
|
||||
opcache.jit_buffer_size=256M
|
||||
opcache.jit=1235
|
||||
@@ -0,0 +1,2 @@
|
||||
date.timezone=UTC
|
||||
memory_limit=-1
|
||||
@@ -0,0 +1 @@
|
||||
xdebug.mode=coverage
|
||||
@@ -0,0 +1,30 @@
|
||||
apc=25
|
||||
apcu_bc=25
|
||||
apcu-bc=25
|
||||
blackfire=30
|
||||
couchbase=30
|
||||
decimal=30
|
||||
ds=30
|
||||
event=30
|
||||
grpc=30
|
||||
http=25
|
||||
pecl_http=25
|
||||
pecl-http=25
|
||||
psr=15
|
||||
inotify=30
|
||||
libvirt-php=40
|
||||
mailparse=25
|
||||
maxminddb=30
|
||||
memcached=25
|
||||
mysqlnd=10
|
||||
mysqlnd_ms=30
|
||||
opcache=10
|
||||
pdo=10
|
||||
phalcon=35
|
||||
protobuf=30
|
||||
psr=15
|
||||
rdkafka=30
|
||||
swoole=25
|
||||
vips=30
|
||||
xml=15
|
||||
zstd=30
|
||||
@@ -0,0 +1,22 @@
|
||||
8,jessie
|
||||
9,stretch
|
||||
10,buster
|
||||
11,bullseye
|
||||
12,bookworm
|
||||
13,trixie
|
||||
16.04 LTS,xenial
|
||||
16.10,yakkety
|
||||
17.04,zesty
|
||||
17.10,artful
|
||||
18.04 LTS,bionic
|
||||
18.10,cosmic
|
||||
19.04,disco
|
||||
19.10,eoan
|
||||
20.04 LTS,focal
|
||||
20.10,groovy
|
||||
21.04,hirsute
|
||||
21.10,impish
|
||||
22.04,jammy
|
||||
23.04,lunar
|
||||
23.10,mantic
|
||||
24.04,noble
|
||||
|
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"latest": "8.0",
|
||||
"latest": "8.3",
|
||||
"nightly": "8.4",
|
||||
"5.x": "5.6",
|
||||
"7.x": "7.4",
|
||||
"8.x": "8.0"
|
||||
"8.x": "8.3"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
cgi
|
||||
cli
|
||||
curl
|
||||
fpm
|
||||
intl
|
||||
mbstring
|
||||
mysql
|
||||
opcache
|
||||
pgsql
|
||||
xml
|
||||
zip
|
||||
@@ -0,0 +1,12 @@
|
||||
cgi
|
||||
cli
|
||||
curl
|
||||
dev
|
||||
fpm
|
||||
intl
|
||||
mbstring
|
||||
mysql
|
||||
opcache
|
||||
pgsql
|
||||
xml
|
||||
zip
|
||||
File renamed without changes.
File renamed without changes.
+116
-29
@@ -1,4 +1,29 @@
|
||||
{
|
||||
"box": {
|
||||
"type": "phar",
|
||||
"repository": "box-project/box",
|
||||
"packagist": "humbug/box",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"churn": {
|
||||
"type": "phar",
|
||||
"repository": "bmitch/churn-php",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"composer-unused": {
|
||||
"type": "phar",
|
||||
"repository": "composer-unused/composer-unused",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"composer-normalize": {
|
||||
"type": "phar",
|
||||
"repository": "ergebnis/composer-normalize",
|
||||
@@ -31,14 +56,32 @@
|
||||
"version_prefix": "",
|
||||
"version_parameter": "-v"
|
||||
},
|
||||
"parallel-lint": {
|
||||
"type": "phar",
|
||||
"repository": "php-parallel-lint/PHP-Parallel-Lint",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"php-cs-fixer": {
|
||||
"type": "phar",
|
||||
"repository": "FriendsOfPHP/PHP-CS-Fixer",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"fetch_latest": "true",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"php-scoper": {
|
||||
"type": "phar",
|
||||
"repository": "humbug/php-scoper",
|
||||
"packagist": "humbug/php-scoper",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"phpcbf": {
|
||||
"type": "phar",
|
||||
"repository": "squizlabs/PHP_CodeSniffer",
|
||||
@@ -55,6 +98,15 @@
|
||||
"version_prefix": "",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"phpDocumentor": {
|
||||
"type": "phar",
|
||||
"repository": "phpDocumentor/phpDocumentor",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"alias": "phpdoc",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"phpmd": {
|
||||
"type": "phar",
|
||||
"repository": "phpmd/phpmd",
|
||||
@@ -63,6 +115,14 @@
|
||||
"version_prefix": "",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
"phpspec": {
|
||||
"type": "phar",
|
||||
"repository": "phpspec/phpspec",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"phpstan": {
|
||||
"type": "phar",
|
||||
"repository": "phpstan/phpstan",
|
||||
@@ -71,6 +131,14 @@
|
||||
"version_prefix": "",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"pint": {
|
||||
"type": "phar",
|
||||
"repository": "laravel/pint",
|
||||
"extension": ".phar",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"psalm": {
|
||||
"type": "phar",
|
||||
"repository": "vimeo/psalm",
|
||||
@@ -81,54 +149,66 @@
|
||||
},
|
||||
"behat": {
|
||||
"type": "composer",
|
||||
"repository": "behat/behat"
|
||||
"repository": "behat/behat",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"codeception": {
|
||||
"type": "composer",
|
||||
"repository": "codeception/codeception"
|
||||
"repository": "codeception/codeception",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"automatic-composer-prefetcher": {
|
||||
"type": "composer",
|
||||
"alias": "composer-prefetcher",
|
||||
"repository": "narrowspark/automatic-composer-prefetcher"
|
||||
"repository": "narrowspark/automatic-composer-prefetcher",
|
||||
"scope": "global"
|
||||
},
|
||||
"composer-require-checker": {
|
||||
"type": "composer",
|
||||
"repository": "maglnet/composer-require-checker"
|
||||
},
|
||||
"composer-unused": {
|
||||
"type": "composer",
|
||||
"repository": "icanhazstring/composer-unused"
|
||||
"repository": "maglnet/composer-require-checker",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"flex": {
|
||||
"type": "composer",
|
||||
"repository": "symfony/flex"
|
||||
"repository": "symfony/flex",
|
||||
"scope": "global"
|
||||
},
|
||||
"phinx": {
|
||||
"type": "composer",
|
||||
"repository": "robmorgan/phinx"
|
||||
"repository": "robmorgan/phinx",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"phplint": {
|
||||
"type": "composer",
|
||||
"repository": "overtrue/phplint"
|
||||
},
|
||||
"phpspec": {
|
||||
"type": "composer",
|
||||
"repository": "phpspec/phpspec"
|
||||
"repository": "overtrue/phplint",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"phpunit-bridge": {
|
||||
"alias": "simple-phpunit",
|
||||
"type": "composer",
|
||||
"repository": "symfony/phpunit-bridge"
|
||||
"repository": "symfony/phpunit-bridge",
|
||||
"scope": "global"
|
||||
},
|
||||
"phpunit-polyfills": {
|
||||
"type": "composer",
|
||||
"repository": "yoast/phpunit-polyfills",
|
||||
"scope": "global"
|
||||
},
|
||||
"prestissimo": {
|
||||
"type": "composer",
|
||||
"repository": "hirak/prestissimo"
|
||||
"repository": "hirak/prestissimo",
|
||||
"scope": "global"
|
||||
},
|
||||
"vapor-cli": {
|
||||
"type": "composer",
|
||||
"alias": "vapor",
|
||||
"repository": "laravel/vapor-cli"
|
||||
"repository": "laravel/vapor-cli",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"rector": {
|
||||
"type": "composer",
|
||||
"repository": "rector/rector",
|
||||
"scope": "scoped"
|
||||
},
|
||||
"blackfire": {
|
||||
"type": "custom-package",
|
||||
@@ -146,6 +226,13 @@
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "v"
|
||||
},
|
||||
"symfony-cli": {
|
||||
"alias": "symfony",
|
||||
"type": "custom-package",
|
||||
"repository": "symfony-cli/symfony-cli",
|
||||
"domain": "https://github.com",
|
||||
"version_prefix": "-V"
|
||||
},
|
||||
"blackfire-player": {
|
||||
"type": "custom-function",
|
||||
"domain": "https://get.blackfire.io",
|
||||
@@ -153,6 +240,14 @@
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"castor": {
|
||||
"type": "custom-function",
|
||||
"domain": "https://github.com",
|
||||
"repository": "jolicode/castor",
|
||||
"function": "castor",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "-V"
|
||||
},
|
||||
"composer": {
|
||||
"type": "custom-function",
|
||||
"domain": "https://getcomposer.org",
|
||||
@@ -183,7 +278,7 @@
|
||||
"phive": {
|
||||
"type": "custom-function",
|
||||
"repository": "phar-io/phive",
|
||||
"domain": "https://phar.io",
|
||||
"domain": "https://github.com",
|
||||
"function": "phive",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "status"
|
||||
@@ -199,8 +294,9 @@
|
||||
"phpunit": {
|
||||
"type": "custom-function",
|
||||
"repository": "sebastianbergmann/phpunit",
|
||||
"packagist": "phpunit/phpunit",
|
||||
"domain": "https://phar.phpunit.de",
|
||||
"function": "phpcpd",
|
||||
"function": "phpunit",
|
||||
"version_prefix": "",
|
||||
"version_parameter": "--version"
|
||||
},
|
||||
@@ -213,15 +309,6 @@
|
||||
"type": "custom-function",
|
||||
"function": "dev_tools"
|
||||
},
|
||||
"symfony-cli": {
|
||||
"type": "custom-function",
|
||||
"function": "symfony",
|
||||
"alias": "symfony",
|
||||
"domain": "https://github.com",
|
||||
"repository": "symfony/cli",
|
||||
"version_prefix": "v",
|
||||
"version_parameter": "version"
|
||||
},
|
||||
"wp-cli": {
|
||||
"type": "custom-function",
|
||||
"function": "wp_cli",
|
||||
|
||||
@@ -10,8 +10,11 @@
|
||||
"alias": "tool_alias",
|
||||
"domain": "https://example.com",
|
||||
"extension": ".ext",
|
||||
"fetch_latest": "true",
|
||||
"function": "function_name",
|
||||
"repository": "user/tool",
|
||||
"packagist": "user/tool",
|
||||
"scope": "global, scoped",
|
||||
"type": "phar, composer, custom-package or custom-function",
|
||||
"version_parameter": "--version",
|
||||
"version_prefix": "v"
|
||||
@@ -47,6 +50,16 @@
|
||||
".ext"
|
||||
]
|
||||
},
|
||||
"fetch_latest": {
|
||||
"$id": "#/items/properties/fetch_latest",
|
||||
"type": "string",
|
||||
"title": "The fetch_latest schema",
|
||||
"description": "Fetch the latest version from GitHub releases.",
|
||||
"enum": [
|
||||
"true",
|
||||
"false"
|
||||
]
|
||||
},
|
||||
"function": {
|
||||
"$id": "#/items/properties/function",
|
||||
"type": "string",
|
||||
@@ -65,6 +78,25 @@
|
||||
"user/tool"
|
||||
]
|
||||
},
|
||||
"packagist": {
|
||||
"$id": "#/items/properties/packagist",
|
||||
"type": "string",
|
||||
"title": "The repository schema",
|
||||
"description": "Packagist repository of the tool in case different from repository.",
|
||||
"examples": [
|
||||
"user/tool"
|
||||
]
|
||||
},
|
||||
"scope": {
|
||||
"$id": "#/items/properties/scope",
|
||||
"type": "string",
|
||||
"title": "The scope schema",
|
||||
"description": "Scope of tool installation: global or scoped",
|
||||
"enum": [
|
||||
"global",
|
||||
"scoped"
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"$id": "#/items/properties/type",
|
||||
"type": "string",
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
xdebug
|
||||
pcov
|
||||
+61
-54
@@ -2,67 +2,84 @@ import * as utils from './utils';
|
||||
import * as extensions from './extensions';
|
||||
import * as config from './config';
|
||||
|
||||
export async function checkXdebugError(
|
||||
extension: string,
|
||||
version: string
|
||||
): Promise<string> {
|
||||
if (
|
||||
(/^5\.[3-6]$|^7\.[0-1]$/.test(version) && extension == 'xdebug3') ||
|
||||
(/^8\.[0-9]$/.test(version) && extension == 'xdebug2')
|
||||
) {
|
||||
return extension + ' is not supported on PHP ' + version;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to setup Xdebug
|
||||
* Function to set up Xdebug
|
||||
*
|
||||
* @param extension
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
* @param pipe
|
||||
*/
|
||||
export async function addCoverageXdebug(
|
||||
extension: string,
|
||||
version: string,
|
||||
os_version: string,
|
||||
os: string,
|
||||
pipe: string
|
||||
): Promise<string> {
|
||||
let script = '\n';
|
||||
script +=
|
||||
(await extensions.addExtension(':pcov', version, os_version, true)) + pipe;
|
||||
script +=
|
||||
(await extensions.addExtension(extension, version, os_version, true)) +
|
||||
pipe;
|
||||
script += await utils.addLog(
|
||||
'$tick',
|
||||
extension,
|
||||
'Xdebug enabled as coverage driver',
|
||||
os_version
|
||||
);
|
||||
const error: string = await checkXdebugError(extension, version);
|
||||
if (!error) {
|
||||
script +=
|
||||
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
||||
extension = extension == 'xdebug3' ? 'xdebug' : extension;
|
||||
script +=
|
||||
(await extensions.addExtension(extension, version, os, true)) + pipe;
|
||||
script += await utils.setVariable(
|
||||
'xdebug_version',
|
||||
'php -r "echo phpversion(\'xdebug\');"',
|
||||
os
|
||||
);
|
||||
script +=
|
||||
(await utils.getCommand(os, 'extension_log')) +
|
||||
'xdebug "Xdebug $xdebug_version enabled as coverage driver"';
|
||||
} else {
|
||||
script += await utils.addLog('$cross', extension, error, os);
|
||||
}
|
||||
return script;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to setup PCOV
|
||||
* Function to set up PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
* @param pipe
|
||||
*/
|
||||
export async function addCoveragePCOV(
|
||||
version: string,
|
||||
os_version: string,
|
||||
os: string,
|
||||
pipe: string
|
||||
): Promise<string> {
|
||||
let script = '\n';
|
||||
switch (true) {
|
||||
default:
|
||||
script +=
|
||||
(await extensions.addExtension(':xdebug', version, os_version, true)) +
|
||||
(await extensions.addExtension(':xdebug:false', version, os, true)) +
|
||||
pipe;
|
||||
script +=
|
||||
(await extensions.addExtension('pcov', version, os_version, true)) +
|
||||
pipe;
|
||||
script +=
|
||||
(await config.addINIValues('pcov.enabled=1', os_version, true)) + '\n';
|
||||
|
||||
// success
|
||||
script += await utils.addLog(
|
||||
'$tick',
|
||||
'coverage: pcov',
|
||||
'PCOV enabled as coverage driver',
|
||||
os_version
|
||||
(await extensions.addExtension('pcov', version, os, true)) + pipe;
|
||||
script += (await config.addINIValues('pcov.enabled=1', os, true)) + '\n';
|
||||
script += await utils.setVariable(
|
||||
'pcov_version',
|
||||
'php -r "echo phpversion(\'pcov\');"',
|
||||
os
|
||||
);
|
||||
// version is not supported
|
||||
script +=
|
||||
(await utils.getCommand(os, 'extension_log')) +
|
||||
'pcov "PCOV $pcov_version enabled as coverage driver"';
|
||||
break;
|
||||
|
||||
case /5\.[3-6]|7\.0/.test(version):
|
||||
@@ -70,7 +87,7 @@ export async function addCoveragePCOV(
|
||||
'$cross',
|
||||
'pcov',
|
||||
'PHP 7.1 or newer is required',
|
||||
os_version
|
||||
os
|
||||
);
|
||||
break;
|
||||
}
|
||||
@@ -82,26 +99,20 @@ export async function addCoveragePCOV(
|
||||
* Function to disable Xdebug and PCOV
|
||||
*
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
* @param pipe
|
||||
*/
|
||||
export async function disableCoverage(
|
||||
version: string,
|
||||
os_version: string,
|
||||
os: string,
|
||||
pipe: string
|
||||
): Promise<string> {
|
||||
let script = '\n';
|
||||
script +=
|
||||
(await extensions.addExtension(':pcov', version, os_version, true)) + pipe;
|
||||
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
||||
script +=
|
||||
(await extensions.addExtension(':xdebug', version, os_version, true)) +
|
||||
pipe;
|
||||
script += await utils.addLog(
|
||||
'$tick',
|
||||
'none',
|
||||
'Disabled Xdebug and PCOV',
|
||||
os_version
|
||||
);
|
||||
(await extensions.addExtension(':xdebug:false', version, os, true)) + pipe;
|
||||
script += await utils.addLog('$tick', 'none', 'Disabled Xdebug and PCOV', os);
|
||||
|
||||
return script;
|
||||
}
|
||||
@@ -111,31 +122,27 @@ export async function disableCoverage(
|
||||
*
|
||||
* @param coverage_driver
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
*/
|
||||
export async function addCoverage(
|
||||
coverage_driver: string,
|
||||
version: string,
|
||||
os_version: string
|
||||
os: string
|
||||
): Promise<string> {
|
||||
coverage_driver = coverage_driver.toLowerCase();
|
||||
const script: string =
|
||||
'\n' + (await utils.stepLog('Setup Coverage', os_version));
|
||||
const pipe: string = (await utils.suppressOutput(os_version)) + '\n';
|
||||
const script: string = '\n' + (await utils.stepLog('Setup Coverage', os));
|
||||
const pipe: string = (await utils.suppressOutput(os)) + '\n';
|
||||
switch (coverage_driver) {
|
||||
case 'pcov':
|
||||
return script + (await addCoveragePCOV(version, os_version, pipe));
|
||||
return script + (await addCoveragePCOV(version, os, pipe));
|
||||
case 'xdebug':
|
||||
case 'xdebug2':
|
||||
case 'xdebug3':
|
||||
return (
|
||||
script + (await addCoverageXdebug('xdebug', version, os_version, pipe))
|
||||
);
|
||||
case 'xdebug2':
|
||||
return (
|
||||
script + (await addCoverageXdebug('xdebug2', version, os_version, pipe))
|
||||
script + (await addCoverageXdebug(coverage_driver, version, os, pipe))
|
||||
);
|
||||
case 'none':
|
||||
return script + (await disableCoverage(version, os_version, pipe));
|
||||
return script + (await disableCoverage(version, os, pipe));
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
|
||||
+90
-51
@@ -21,27 +21,41 @@ export async function addExtensionDarwin(
|
||||
switch (true) {
|
||||
// match :extension
|
||||
case /^:/.test(ext_name):
|
||||
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
||||
return;
|
||||
// Match none
|
||||
case /^none$/.test(ext_name):
|
||||
add_script += '\ndisable_all_shared';
|
||||
return;
|
||||
// match extensions for compiling from source
|
||||
case /.+-.+\/.+@.+/.test(extension):
|
||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||
return;
|
||||
// match 5.3blackfire...8.0blackfire
|
||||
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
||||
// match 7.4relay...8.3relay
|
||||
// match 5.3blackfire...8.3blackfire
|
||||
// match 5.3blackfire-(semver)...8.3blackfire-(semver)
|
||||
// match couchbase, event, geos, pdo_oci, oci8, http, pecl_http
|
||||
// match 5.3ioncube...7.4ioncube
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, and 7.4phalcon5...8.2phalcon5
|
||||
// match 7.0zephir_parser...8.2zephir_parser
|
||||
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-3])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
||||
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
||||
extension
|
||||
):
|
||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
||||
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4|(7\.4|8\.[0-2])phalcon5/.test(
|
||||
version_extension
|
||||
):
|
||||
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
||||
case /^(7\.[0-4]|8\.[0-2])zephir_parser(-v?\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
'extensions',
|
||||
extension,
|
||||
'darwin'
|
||||
);
|
||||
@@ -56,7 +70,7 @@ export async function addExtensionDarwin(
|
||||
);
|
||||
return;
|
||||
// match semver
|
||||
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
||||
case /.+-\d+(\.\d+\.\d+.*)?/.test(extension):
|
||||
add_script += await utils.joins(
|
||||
'\nadd_pecl_extension',
|
||||
ext_name,
|
||||
@@ -68,15 +82,14 @@ export async function addExtensionDarwin(
|
||||
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
||||
return;
|
||||
// match 5.6 and newer - amqp, apcu, grpc, igbinary, imagick, imap, msgpack, protobuf, raphf, rdkafka, redis, swoole, xdebug, xdebug2, zmq
|
||||
// match 7.1 and newer - pcov
|
||||
// match 5.6 to 7.4 - propro
|
||||
case /(?<!5\.[3-5])(amqp|apcu|grpc|igbinary|imagick|imap|memcache|memcached|msgpack|protobuf|psr|raphf|rdkafka|redis|swoole|xdebug|xdebug2|zmq)/.test(
|
||||
// match brew extensions
|
||||
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|snmp|ssh2|swoole|uuid|xdebug|xdebug2|yaml|zmq)/.test(
|
||||
version_extension
|
||||
):
|
||||
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
||||
case /(?<!5\.[3-6])(ds|v8js)/.test(version_extension):
|
||||
case /(5\.6|7\.[0-4])(propro|lua)/.test(version_extension):
|
||||
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
||||
case /(?<!5\.[3-6])(ast|vips|xlswriter)/.test(version_extension):
|
||||
add_script += await utils.joins(
|
||||
'\nadd_brew_extension',
|
||||
ext_name,
|
||||
@@ -115,24 +128,35 @@ export async function addExtensionWindows(
|
||||
switch (true) {
|
||||
// Match :extension
|
||||
case /^:/.test(ext_name):
|
||||
remove_script += '\nRemove-Extension ' + ext_name.slice(1);
|
||||
remove_script += '\nDisable-Extension' + ext_name.replace(/:/g, ' ');
|
||||
break;
|
||||
// match 5.3blackfire...8.0blackfire
|
||||
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||
// Match none
|
||||
case /^none$/.test(ext_name):
|
||||
add_script += '\nDisable-AllShared';
|
||||
break;
|
||||
// match 5.3blackfire...8.3blackfire
|
||||
// match 5.3blackfire-(semver)...8.3blackfire-(semver)
|
||||
// match pdo_oci and oci8
|
||||
// match 5.3ioncube...7.4ioncube
|
||||
// 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(
|
||||
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, and 7.4phalcon5...8.2phalcon5
|
||||
// match 7.1pecl_http...8.1pecl_http and 7.1http...8.1http
|
||||
// match 7.0zephir_parser...8.2zephir_parser
|
||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-3])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||
case /^(7\.[1-4]|8\.0)(pecl_)?http/.test(version_extension):
|
||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$|^(7\.4|8\.[0-2])phalcon5$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /^(7\.[1-4]|8\.1)(pecl_)?http/.test(version_extension):
|
||||
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
||||
case /^(7\.[0-4]|8\.[0-2])zephir_parser(-v?\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
'extensions',
|
||||
extension,
|
||||
'win32'
|
||||
);
|
||||
@@ -153,15 +177,6 @@ export async function addExtensionWindows(
|
||||
'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(
|
||||
@@ -174,6 +189,15 @@ export async function addExtensionWindows(
|
||||
matches[1]
|
||||
);
|
||||
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 7.2xdebug2 to 7.4xdebug2
|
||||
case /7\.[2-4]xdebug2/.test(version_extension):
|
||||
add_script += '\nAdd-Extension xdebug stable 2.9.8';
|
||||
@@ -221,39 +245,54 @@ export async function addExtensionLinux(
|
||||
let remove_script = '';
|
||||
await utils.asyncForEach(extensions, async function (extension: string) {
|
||||
const version_extension: string = version + extension;
|
||||
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||
const [ext_name, ext_version]: string[] = extension
|
||||
.split(/-(.+)/)
|
||||
.filter(Boolean);
|
||||
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
||||
|
||||
switch (true) {
|
||||
// Match :extension
|
||||
case /^:/.test(ext_name):
|
||||
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
||||
return;
|
||||
// Match none
|
||||
case /^none$/.test(ext_name):
|
||||
add_script += '\ndisable_all_shared';
|
||||
return;
|
||||
// match extensions for compiling from source
|
||||
case /.+-.+\/.+@.+/.test(extension):
|
||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||
return;
|
||||
// match 5.3blackfire...8.0blackfire
|
||||
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
||||
// match 7.4relay...8.3relay
|
||||
// match 5.3blackfire...8.3blackfire
|
||||
// match 5.3blackfire-(semver)...8.3blackfire-(semver)
|
||||
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
||||
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
||||
// match 5.3ioncube...7.4ioncube
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, 7.4phalcon5...8.2phalcon5
|
||||
// match 7.0zephir_parser...8.2zephir_parser
|
||||
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-3])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /^couchbase$|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
||||
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
||||
extension
|
||||
):
|
||||
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
||||
case /(?<!5\.[3-5])intl-\d+\.\d+$/.test(version_extension):
|
||||
case /^(5\.[3-6]|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$|^(7\.4|8\.[0-2])phalcon5$/.test(
|
||||
version_extension
|
||||
):
|
||||
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
||||
case /^(7\.[0-4]|8\.[0-2])zephir_parser(-v?\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
'extensions',
|
||||
extension,
|
||||
'linux'
|
||||
);
|
||||
@@ -268,7 +307,7 @@ export async function addExtensionLinux(
|
||||
);
|
||||
return;
|
||||
// match semver versions
|
||||
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
||||
case /.+-\d+(\.\d+\.\d+.*)?/.test(extension):
|
||||
add_script += await utils.joins(
|
||||
'\nadd_pecl_extension',
|
||||
ext_name,
|
||||
@@ -311,20 +350,20 @@ export async function addExtensionLinux(
|
||||
*
|
||||
* @param extension_csv
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
* @param no_step
|
||||
*/
|
||||
export async function addExtension(
|
||||
extension_csv: string,
|
||||
version: string,
|
||||
os_version: string,
|
||||
os: string,
|
||||
no_step = false
|
||||
): Promise<string> {
|
||||
const log: string = await utils.stepLog('Setup Extensions', os_version);
|
||||
const log: string = await utils.stepLog('Setup Extensions', os);
|
||||
let script = '\n';
|
||||
switch (no_step) {
|
||||
case true:
|
||||
script += log + (await utils.suppressOutput(os_version));
|
||||
script += log + (await utils.suppressOutput(os));
|
||||
break;
|
||||
case false:
|
||||
default:
|
||||
@@ -332,7 +371,7 @@ export async function addExtension(
|
||||
break;
|
||||
}
|
||||
|
||||
switch (os_version) {
|
||||
switch (os) {
|
||||
case 'win32':
|
||||
return script + (await addExtensionWindows(extension_csv, version));
|
||||
case 'darwin':
|
||||
@@ -341,8 +380,8 @@ export async function addExtension(
|
||||
return script + (await addExtensionLinux(extension_csv, version));
|
||||
default:
|
||||
return await utils.log(
|
||||
'Platform ' + os_version + ' is not supported',
|
||||
os_version,
|
||||
'Platform ' + os + ' is not supported',
|
||||
os,
|
||||
'error'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import {IncomingMessage, OutgoingHttpHeaders} from 'http';
|
||||
import * as https from 'https';
|
||||
import * as url from 'url';
|
||||
|
||||
/**
|
||||
* Function to fetch a URL
|
||||
*
|
||||
* @param input_url
|
||||
* @param auth_token
|
||||
* @param redirect_count
|
||||
*/
|
||||
export async function fetch(
|
||||
input_url: string,
|
||||
auth_token?: string,
|
||||
redirect_count = 5
|
||||
): Promise<Record<string, string>> {
|
||||
const fetch_promise: Promise<Record<string, string>> = new Promise(
|
||||
resolve => {
|
||||
const url_object: url.UrlObject = new url.URL(input_url);
|
||||
const headers: OutgoingHttpHeaders = {
|
||||
'User-Agent': `Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`
|
||||
};
|
||||
if (auth_token) {
|
||||
headers.authorization = 'Bearer ' + auth_token;
|
||||
}
|
||||
const options: https.RequestOptions = {
|
||||
hostname: url_object.hostname,
|
||||
path: url_object.pathname,
|
||||
headers: headers,
|
||||
agent: new https.Agent({keepAlive: false})
|
||||
};
|
||||
const req = https.get(options, (res: IncomingMessage) => {
|
||||
if (res.statusCode === 200) {
|
||||
let body = '';
|
||||
res.setEncoding('utf8');
|
||||
res.on('data', chunk => (body += chunk));
|
||||
res.on('end', () => resolve({data: `${body}`}));
|
||||
} else if (
|
||||
[301, 302, 303, 307, 308].includes(res.statusCode as number)
|
||||
) {
|
||||
if (redirect_count > 0 && res.headers.location) {
|
||||
fetch(res.headers.location, auth_token, redirect_count--).then(
|
||||
resolve
|
||||
);
|
||||
} else {
|
||||
resolve({error: `${res.statusCode}: Redirect error`});
|
||||
}
|
||||
} else {
|
||||
resolve({error: `${res.statusCode}: ${res.statusMessage}`});
|
||||
}
|
||||
});
|
||||
req.end();
|
||||
}
|
||||
);
|
||||
return await fetch_promise;
|
||||
}
|
||||
+27
-43
@@ -1,3 +1,5 @@
|
||||
import path from 'path';
|
||||
import fs from 'fs';
|
||||
import {exec} from '@actions/exec';
|
||||
import * as core from '@actions/core';
|
||||
import * as config from './config';
|
||||
@@ -9,69 +11,51 @@ import * as utils from './utils';
|
||||
/**
|
||||
* Build the script
|
||||
*
|
||||
* @param filename
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param os
|
||||
*/
|
||||
export async function getScript(
|
||||
filename: string,
|
||||
version: string,
|
||||
os_version: string
|
||||
): Promise<string> {
|
||||
const name = 'setup-php';
|
||||
const url = 'https://setup-php.com/support';
|
||||
// taking inputs
|
||||
export async function getScript(os: string): Promise<string> {
|
||||
const url = 'https://setup-php.com/sponsor';
|
||||
const filename = os + (await utils.scriptExtension(os));
|
||||
const script_path = path.join(__dirname, '../src/scripts', filename);
|
||||
const run_path = script_path.replace(os, 'run');
|
||||
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
|
||||
const extension_csv: string = await utils.getInput('extensions', false);
|
||||
const ini_values_csv: string = await utils.getInput('ini-values', false);
|
||||
const coverage_driver: string = await utils.getInput('coverage', false);
|
||||
const tools_csv: string = await utils.getInput('tools', false);
|
||||
|
||||
let script: string = await utils.readFile(filename, 'src/scripts');
|
||||
script += await tools.addTools(tools_csv, version, os_version);
|
||||
|
||||
const version: string = await utils.parseVersion(
|
||||
await utils.readPHPVersion()
|
||||
);
|
||||
const ini_file: string = await utils.parseIniFile(
|
||||
await utils.getInput('ini-file', false)
|
||||
);
|
||||
let script = await utils.joins('.', script_path, version, ini_file);
|
||||
if (extension_csv) {
|
||||
script += await extensions.addExtension(extension_csv, version, os_version);
|
||||
script += await extensions.addExtension(extension_csv, version, os);
|
||||
}
|
||||
script += await tools.addTools(tools_csv, version, os);
|
||||
if (coverage_driver) {
|
||||
script += await coverage.addCoverage(coverage_driver, version, os_version);
|
||||
script += await coverage.addCoverage(coverage_driver, version, os);
|
||||
}
|
||||
if (ini_values_csv) {
|
||||
script += await config.addINIValues(ini_values_csv, os_version);
|
||||
script += await config.addINIValues(ini_values_csv, os);
|
||||
}
|
||||
script += '\n' + (await utils.stepLog(`Sponsor setup-php`, os));
|
||||
script += '\n' + (await utils.addLog('$tick', 'setup-php', url, os));
|
||||
|
||||
script += '\n' + (await utils.stepLog('Support this project', os_version));
|
||||
script += '\n' + (await utils.addLog('$tick', name, url, os_version));
|
||||
fs.writeFileSync(run_path, script, {mode: 0o755});
|
||||
|
||||
return await utils.writeScript(filename, script);
|
||||
return run_path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the script
|
||||
*/
|
||||
export async function run(): Promise<void> {
|
||||
try {
|
||||
if ((await utils.readEnv('ImageOS')) == 'ubuntu16') {
|
||||
core.setFailed(
|
||||
'setup-php is not supported on Ubuntu 16.04. Please upgrade to Ubuntu 18.04 or Ubuntu 20.04 - https://setup-php.com/i/452'
|
||||
);
|
||||
return;
|
||||
}
|
||||
const version: string = await utils.parseVersion(
|
||||
await utils.getInput('php-version', true)
|
||||
);
|
||||
if (version) {
|
||||
const os_version: string = process.platform;
|
||||
const tool = await utils.scriptTool(os_version);
|
||||
const script = os_version + (await utils.scriptExtension(os_version));
|
||||
const location = await getScript(script, version, os_version);
|
||||
await exec(await utils.joins(tool, location, version, __dirname));
|
||||
} else {
|
||||
core.setFailed('Unable to get the PHP version');
|
||||
}
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
const os: string = process.platform;
|
||||
const tool = await utils.scriptTool(os);
|
||||
const run_path = await getScript(os);
|
||||
await exec(tool + run_path);
|
||||
}
|
||||
|
||||
// call the run function
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import * as cv from 'compare-versions';
|
||||
import * as fetch from './fetch';
|
||||
|
||||
type RS = Record<string, string>;
|
||||
type RSRS = Record<string, RS>;
|
||||
|
||||
export async function search(
|
||||
package_name: string,
|
||||
php_version: string
|
||||
): Promise<string | null> {
|
||||
const response = await fetch.fetch(
|
||||
`https://repo.packagist.org/p2/${package_name}.json`
|
||||
);
|
||||
if (response.error || response.data === '[]') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const data = JSON.parse(response['data']);
|
||||
if (data && data.packages) {
|
||||
const versions = data.packages[package_name];
|
||||
versions.sort((a: RS, b: RS) => cv.compareVersions(b.version, a.version));
|
||||
|
||||
const result = versions.find((versionData: RSRS) => {
|
||||
if (versionData?.require?.php) {
|
||||
return versionData?.require?.php
|
||||
.split('|')
|
||||
.some(
|
||||
require => require && cv.satisfies(php_version + '.0', require)
|
||||
);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
return result ? result.version : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -1,314 +0,0 @@
|
||||
# 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_home="$HOME/.composer"
|
||||
export composer_bin="$composer_home/vendor/bin"
|
||||
export composer_json="$composer_home/composer.json"
|
||||
export composer_lock="$composer_home/composer.lock"
|
||||
export latest="releases/latest/download"
|
||||
export github="https://github.com/shivammathur"
|
||||
export jsdeliver="https://cdn.jsdelivr.net/gh/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() {
|
||||
(
|
||||
check_extension "$(echo "$1" | cut -d '-' -f 1)" && add_log "$tick" "$1" "$2"
|
||||
) || add_log "$cross" "$1" "Could not install $1 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 jsdeliver fallback.
|
||||
run_script() {
|
||||
repo=$1
|
||||
shift
|
||||
args=("$@")
|
||||
get -q -e /tmp/install.sh "$github/$repo/$latest/install.sh" "$jsdeliver/$1@main/scripts/install.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 cached extensions.
|
||||
enable_cache_extension() {
|
||||
deps=()
|
||||
for ext in /tmp/extcache/"$1"/*; do
|
||||
deps+=("$(basename "$ext")")
|
||||
done
|
||||
if [ "x${deps[*]}" = "x" ]; then
|
||||
sudo rm -rf /tmp/extcache/"$1"
|
||||
enable_extension "$1" "$2"
|
||||
else
|
||||
deps+=("$1")
|
||||
if php "${deps[@]/#/-d ${2}=}" -m 2>/dev/null | grep -i -q "$1"; then
|
||||
for ext in "${deps[@]}"; do
|
||||
sudo rm -rf /tmp/extcache/"$ext"
|
||||
enable_extension "$ext" "$2"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to enable existing extensions.
|
||||
enable_extension() {
|
||||
modules_dir="/var/lib/php/modules/$version"
|
||||
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
||||
if [ -d /tmp/extcache/"$1" ]; then
|
||||
enable_cache_extension "$1" "$2"
|
||||
elif ! 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
|
||||
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
|
||||
add_pecl >/dev/null 2>&1
|
||||
yes '' 2>/dev/null | sudo pecl install -f "$extension" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# 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
|
||||
disable_extension "$extension" >/dev/null 2>&1
|
||||
delete_extension "$extension" >/dev/null 2>&1
|
||||
pecl_install "$extension-$pecl_version"
|
||||
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
||||
fi
|
||||
}
|
||||
|
||||
# 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
|
||||
alp="[a-zA-Z0-9]"
|
||||
version_regex="[0-9]+((\.{1}$alp+)+)(\.{0})(-$alp+){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 ! [ -d "$composer_home" ]; then
|
||||
sudo -u "$(id -un)" -g "$(id -gn)" mkdir -p -m=00755 "$composer_home"
|
||||
else
|
||||
sudo chown -R "$(id -un)":"$(id -gn)" "$composer_home"
|
||||
fi
|
||||
if ! [ -e "$composer_json" ]; then
|
||||
echo '{}' | tee "$composer_json" >/dev/null
|
||||
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" 2>&1 | tee /tmp/composer.log >/dev/null 2>&1
|
||||
log=$(grep "$prefix$tool" /tmp/composer.log) &&
|
||||
tool_version=$(get_tool_version 'echo' "$log") &&
|
||||
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 PHP version in semver format.
|
||||
php_semver() {
|
||||
php -v | grep -Eo -m 1 "[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+([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"
|
||||
}
|
||||
+146
-108
@@ -1,61 +1,50 @@
|
||||
# Function to setup environment for self-hosted runners.
|
||||
self_hosted_helper() {
|
||||
if ! command -v brew >/dev/null; then
|
||||
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"
|
||||
# Disable dependency extensions
|
||||
disable_dependency_extensions() {
|
||||
local extension=$1
|
||||
formula_file="${tap_dir:?}/$ext_tap/Formula/$extension@${version:?}.rb"
|
||||
if [ -e "$formula_file" ]; then
|
||||
IFS=" " read -r -a dependency_extensions <<< "$(grep -Eo "shivammathur.*@" "$formula_file" | xargs -I {} -n 1 basename '{}' | cut -d '@' -f 1 | tr '\n' ' ')"
|
||||
for dependency_extension in "${dependency_extensions[@]}"; do
|
||||
sudo sed -Ei '' "/=(.*\/)?\"?$dependency_extension(.so)?$/d" "${ini_file:?}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to delete extension.
|
||||
delete_extension() {
|
||||
extension=$1
|
||||
sudo rm -rf "${scan_dir:?}"/*"$extension"* "${ext_dir:?}"/"$extension".so >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Function to disable extension.
|
||||
disable_extension() {
|
||||
extension=$1
|
||||
# Helper function to disable an extension.
|
||||
disable_extension_helper() {
|
||||
local extension=$1
|
||||
local disable_dependents=${2:-false}
|
||||
get_extension_map
|
||||
if [ "$disable_dependents" = "true" ]; then
|
||||
disable_extension_dependents "$extension"
|
||||
fi
|
||||
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
||||
sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions
|
||||
mkdir -p /tmp/extdisabled/"$version"
|
||||
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Function to remove extensions.
|
||||
remove_extension() {
|
||||
extension=$1
|
||||
if check_extension "$extension"; then
|
||||
disable_extension "$extension"
|
||||
delete_extension "$extension"
|
||||
(! 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 get extension name from brew formula.
|
||||
get_extension_from_formula() {
|
||||
local formula=$1
|
||||
local extension
|
||||
extension=$(grep -E "^$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
||||
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
||||
echo "$extension"
|
||||
}
|
||||
|
||||
# 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
|
||||
# Function to copy extension binaries to the extension directory.
|
||||
copy_brew_extensions() {
|
||||
local formula=$1
|
||||
formula_file="$tap_dir/$ext_tap/Formula/$formula@$version.rb"
|
||||
deps="$(grep -Eo 'depends_on "shivammathur[^"]+' "$formula_file" | cut -d '/' -f 3 | tr '\n' ' ')"
|
||||
IFS=' ' read -r -a deps <<< "$formula@$version $deps"
|
||||
for dependency in "${deps[@]}"; do
|
||||
extension_file="${brew_prefix:?}/opt/$dependency/$(get_extension_from_formula "${dependency%@*}").so"
|
||||
[ -e "$extension_file" ] && sudo cp "$extension_file" "$ext_dir"
|
||||
done
|
||||
if [ -d "$brew_prefix"/Cellar/"$formula"@"$version" ]; then
|
||||
sudo find -- "$brew_prefix"/Cellar/"$formula"@"$version" -name "*.dylib" -exec cp {} "$ext_dir" \;
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -63,37 +52,32 @@ add_brew_tap() {
|
||||
add_brew_extension() {
|
||||
formula=$1
|
||||
prefix=$2
|
||||
extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
||||
extension="$(get_extension_from_formula "$formula")"
|
||||
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
|
||||
add_brew_tap "$php_tap"
|
||||
add_brew_tap "$ext_tap"
|
||||
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "${core_repo:?}/Formula/" 2>/dev/null || true
|
||||
update_dependencies >/dev/null 2>&1
|
||||
brew install -f "$formula@$version" >/dev/null 2>&1
|
||||
sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
|
||||
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
||||
(brew install -f "$ext_tap/$formula@$version" >/dev/null 2>&1 && copy_brew_extensions "$formula") || pecl_install "$extension" >/dev/null 2>&1
|
||||
add_extension_log "$extension" "Installed and enabled"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup extensions.
|
||||
add_extension() {
|
||||
extension=$1
|
||||
# Helper function to add an extension.
|
||||
add_extension_helper() {
|
||||
local extension=$1
|
||||
prefix=$2
|
||||
enable_extension "$extension" "$prefix"
|
||||
if check_extension "$extension"; then
|
||||
add_log "${tick:?}" "$extension" "Enabled"
|
||||
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
||||
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
||||
else
|
||||
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
||||
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
||||
else
|
||||
pecl_install "$extension" >/dev/null 2>&1 &&
|
||||
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
||||
fi
|
||||
add_extension_log "$extension" "Installed and enabled"
|
||||
pecl_install "$extension" >/dev/null 2>&1 &&
|
||||
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
||||
fi
|
||||
add_extension_log "$extension" "Installed and enabled"
|
||||
}
|
||||
|
||||
# Function to handle request to add phpize and php-config.
|
||||
@@ -104,9 +88,10 @@ add_devtools() {
|
||||
|
||||
# Function to handle request to add PECL.
|
||||
add_pecl() {
|
||||
enable_extension xml extension >/dev/null 2>&1
|
||||
configure_pecl >/dev/null 2>&1
|
||||
pecl_version=$(get_tool_version "pecl" "version")
|
||||
add_log "${tick:?}" "PECL" "Found PECL $pecl_version"
|
||||
pear_version=$(get_tool_version "pecl" "version")
|
||||
add_log "${tick:?}" "PECL" "Found PECL $pear_version"
|
||||
}
|
||||
|
||||
# Function to link all libraries of a formula.
|
||||
@@ -120,31 +105,48 @@ link_libraries() {
|
||||
done
|
||||
}
|
||||
|
||||
# Link opcache extension to extensions directory.
|
||||
link_opcache() {
|
||||
opcache_ini="$brew_prefix"/etc/php/"$version"/conf.d/ext-opcache.ini
|
||||
if [ -e "$opcache_ini" ]; then
|
||||
opcache_ext=$(grep -Eo "zend_extension.*opcache.*\.so" "$opcache_ini" | cut -d '"' -f 2)
|
||||
sudo ln -sf "$opcache_ext" "$ext_dir"
|
||||
fi
|
||||
}
|
||||
|
||||
# Patch brew to overwrite packages.
|
||||
patch_brew() {
|
||||
formula_installer="$brew_repo"/Library/Homebrew/formula_installer.rb
|
||||
code=" keg.link(verbose: verbose?"
|
||||
sudo sed -i '' "s/$code)/$code, overwrite: true)/" "$formula_installer"
|
||||
formula_installer="${brew_repo:?}"/Library/Homebrew/formula_installer.rb
|
||||
code=" keg.link\(verbose: verbose\?"
|
||||
sudo sed -Ei '' "s/$code.*/$code, overwrite: true\)/" "$formula_installer"
|
||||
# shellcheck disable=SC2064
|
||||
trap "sudo sed -i '' 's/$code, overwrite: true)/$code)/' $formula_installer" exit
|
||||
trap "sudo sed -Ei '' 's/$code.*/$code, overwrite: overwrite?\)/' $formula_installer" exit
|
||||
}
|
||||
|
||||
# Helper function to update the dependencies.
|
||||
update_dependencies_helper() {
|
||||
dependency=$1
|
||||
get -q -n "$tap_dir/homebrew/homebrew-core/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
|
||||
[[ "${dependency:0:3}" = "lib" ]] && prefix=lib || prefix="${dependency:0:1}"
|
||||
get -q -n "$core_repo/Formula/$prefix/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$prefix/$dependency.rb"
|
||||
link_libraries "$dependency"
|
||||
}
|
||||
|
||||
# Function to update dependencies.
|
||||
update_dependencies() {
|
||||
if ! [ -e /tmp/update_dependencies ] && [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
||||
patch_brew
|
||||
while read -r dependency; do
|
||||
update_dependencies_helper "$dependency" &
|
||||
to_wait+=($!)
|
||||
done <"$tap_dir/shivammathur/homebrew-php/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
||||
wait "${to_wait[@]}"
|
||||
patch_brew
|
||||
if ! [ -e /tmp/update_dependencies ]; then
|
||||
if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
||||
deps_file="$tap_dir/$php_tap/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
||||
if [ -e "$deps_file" ]; then
|
||||
while read -r dependency; do
|
||||
update_dependencies_helper "$dependency" &
|
||||
to_wait+=($!)
|
||||
done <"$deps_file"
|
||||
fi
|
||||
wait "${to_wait[@]}"
|
||||
else
|
||||
git -C "$core_repo" fetch origin master && git -C "$core_repo" reset --hard origin/master
|
||||
fi
|
||||
echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
@@ -162,9 +164,12 @@ fix_dependencies() {
|
||||
|
||||
# Function to get PHP version if it is already installed using Homebrew.
|
||||
get_brewed_php() {
|
||||
php_cellar="$brew_prefix"/Cellar/php
|
||||
if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
||||
php-config --version 2>/dev/null | cut -c 1-3
|
||||
cellar="$brew_prefix"/Cellar
|
||||
php_cellar="$cellar"/php
|
||||
if [ -d "$cellar" ] && ! [[ "$(find "$cellar" -maxdepth 1 -name "php@$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
||||
php_semver | cut -c 1-3
|
||||
elif [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
||||
php_semver | cut -c 1-3
|
||||
else
|
||||
echo 'false';
|
||||
fi
|
||||
@@ -174,8 +179,9 @@ get_brewed_php() {
|
||||
add_php() {
|
||||
action=$1
|
||||
existing_version=$2
|
||||
add_brew_tap shivammathur/homebrew-php
|
||||
add_brew_tap "$php_tap"
|
||||
update_dependencies
|
||||
[ "${debug:?}" = "debug" ] && php_formula="$php_formula-debug"
|
||||
if [ "$existing_version" != "false" ]; then
|
||||
([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
|
||||
else
|
||||
@@ -186,14 +192,37 @@ add_php() {
|
||||
|
||||
# Function to get extra version.
|
||||
php_extra_version() {
|
||||
if [[ ${version:?} =~ ${nightly_versions:?} ]]; then
|
||||
echo " ($(brew cat "$php_formula" | grep -Eo "commit=[0-9a-zA-Z]+" | cut -d'=' -f 2))"
|
||||
php_formula_file="$tap_dir"/"$php_tap"/Formula/php@"$version".rb
|
||||
if [ -e "$php_formula_file" ] && ! grep -q "deprecate!" "$php_formula_file" && grep -Eq "archive/[0-9a-zA-Z]+" "$php_formula_file"; then
|
||||
echo " ($(grep -Eo "archive/[0-9a-zA-Z]+" "$php_formula_file" | cut -d'/' -f 2))"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to set php.ini
|
||||
add_php_config() {
|
||||
if ! [ -e "$ini_dir"/php.ini-development ]; then
|
||||
sudo cp "$ini_dir"/php.ini "$ini_dir"/php.ini-development
|
||||
fi
|
||||
if [[ "$ini" = "production" || "$ini" = "development" ]]; then
|
||||
sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini
|
||||
elif [ "$ini" = "none" ]; then
|
||||
echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to get scan directory.
|
||||
get_scan_dir() {
|
||||
if [[ "$version" =~ ${old_versions:?} ]]; then
|
||||
php --ini | grep additional | sed -e "s|.*: s*||"
|
||||
else
|
||||
echo "$ini_dir"/conf.d
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to Setup PHP.
|
||||
setup_php() {
|
||||
step_log "Setup PHP"
|
||||
php_config="$(command -v php-config 2>/dev/null)"
|
||||
existing_version=$(get_brewed_php)
|
||||
if [[ "$version" =~ ${old_versions:?} ]]; then
|
||||
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
||||
@@ -208,41 +237,50 @@ setup_php() {
|
||||
status="Found"
|
||||
fix_dependencies >/dev/null 2>&1
|
||||
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*||")
|
||||
php_config="$(command -v php-config)"
|
||||
ext_dir="$(grep 'extension_dir=' "$php_config" | cut -d "'" -f 2)"
|
||||
ini_dir="$(php_ini_path)"
|
||||
scan_dir="$(get_scan_dir)"
|
||||
ini_file="$ini_dir"/php.ini
|
||||
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
||||
semver=$(php_semver)
|
||||
extra_version=$(php_extra_version)
|
||||
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
||||
semver="$(php_semver)"
|
||||
extra_version="$(php_extra_version)"
|
||||
configure_php
|
||||
link_opcache
|
||||
set_output "php-version" "$semver"
|
||||
if [ "${semver%.*}" != "$version" ]; then
|
||||
add_log "$cross" "PHP" "Could not setup PHP $version"
|
||||
add_log "${cross:?}" "PHP" "Could not setup PHP $version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
|
||||
echo "::set-output name=php-version::$semver"
|
||||
sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
||||
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
||||
}
|
||||
|
||||
# Variables
|
||||
version=$1
|
||||
dist=$2
|
||||
version=${1:-'8.3'}
|
||||
ini=${2:-'production'}
|
||||
src=${0%/*}/..
|
||||
php_formula=shivammathur/php/php@"$version"
|
||||
brew_prefix="$(brew --prefix)"
|
||||
brew_repo="$(brew --repository)"
|
||||
tap_dir="$brew_repo"/Library/Taps
|
||||
scripts="${dist}"/../src/scripts
|
||||
scripts="$src"/scripts
|
||||
ext_tap=shivammathur/homebrew-extensions
|
||||
php_tap=shivammathur/homebrew-php
|
||||
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
export HOMEBREW_DEVELOPER=1
|
||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||
export HOMEBREW_NO_ENV_HINTS=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||
export HOMEBREW_NO_INSTALL_FROM_API=1
|
||||
|
||||
# shellcheck source=.
|
||||
. "${scripts:?}"/ext/source.sh
|
||||
. "${scripts:?}"/unix.sh
|
||||
. "${scripts:?}"/tools/brew.sh
|
||||
. "${scripts:?}"/tools/add_tools.sh
|
||||
. "${scripts:?}"/common.sh
|
||||
. "${scripts:?}"/extensions/source.sh
|
||||
. "${scripts:?}"/extensions/add_extensions.sh
|
||||
configure_brew
|
||||
read_env
|
||||
self_hosted_setup
|
||||
setup_php
|
||||
@@ -1,43 +0,0 @@
|
||||
# Function to install libraries required by couchbase
|
||||
add_couchbase_libs() {
|
||||
if [ "$(uname -s)" = "Linux" ]; then
|
||||
trunk="https://github.com/couchbase/libcouchbase/releases"
|
||||
if [[ ${version:?} =~ 5.[3-6]|7.[0-1] ]]; then
|
||||
release="2.10.9"
|
||||
else
|
||||
release="$(curl -sL $trunk/latest | grep -Eo "libcouchbase-[0-9]+\.[0-9]+\.[0-9]+" | head -n 1 | cut -d'-' -f 2)"
|
||||
fi
|
||||
deb_url="$trunk/download/$release/libcouchbase-${release}_ubuntu${DISTRIB_RELEASE/./}_${DISTRIB_CODENAME}_amd64.tar"
|
||||
get -q -n /tmp/libcouchbase.tar "$deb_url"
|
||||
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
||||
install_packages libev4 libevent-dev
|
||||
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
||||
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
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
# 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 )"
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
# 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/v3.4.5" | 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)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateSet('phalcon3', 'phalcon4')]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
try {
|
||||
$status = 'Enabled'
|
||||
$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
|
||||
} else {
|
||||
Install-Phpextension psr -MinimumStability stable -Path $php_dir
|
||||
}
|
||||
}
|
||||
|
||||
if(Test-Path $ext_dir\php_phalcon.dll) {
|
||||
$phalcon = Get-PhpExtension $ext_dir\php_phalcon.dll
|
||||
if($phalcon.Version[0] -eq $extension_version) {
|
||||
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||
} else {
|
||||
$status = 'Installed and enabled'
|
||||
Remove-Item $ext_dir\php_phalcon.dll
|
||||
Add-PhalconHelper
|
||||
}
|
||||
} else {
|
||||
$status = 'Installed and enabled'
|
||||
Add-PhalconHelper
|
||||
}
|
||||
Add-Log $tick $extension $status
|
||||
} catch [Exception] {
|
||||
Write-Output $_.Exception|format-list -force
|
||||
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
# Helper function to add phalcon.
|
||||
add_phalcon_helper() {
|
||||
status='Installed and enabled'
|
||||
update_lists
|
||||
if [ "$extension" = "phalcon4" ]; then
|
||||
${apt_install:?} "php${version:?}-psr" "php${version:?}-$extension"
|
||||
else
|
||||
${apt_install:?} "php${version:?}-$extension"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to add phalcon3.
|
||||
add_phalcon3() {
|
||||
if [ -e "${ext_dir:?}/phalcon.so" ]; then
|
||||
phalcon_version=$(php -d="extension=phalcon.so" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||
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
|
||||
}
|
||||
|
||||
# Function to add phalcon4.
|
||||
add_phalcon4() {
|
||||
if [ -e "${ext_dir:?}/psr.so" ] && ! php -m | grep -i -q -w psr; then
|
||||
echo "extension=psr.so" | sudo tee -a "${ini_file:?}"
|
||||
fi
|
||||
if [ -e "$ext_dir/phalcon.so" ]; then
|
||||
if php -m | grep -i -q -w psr; then
|
||||
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||
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
|
||||
else
|
||||
add_phalcon_helper
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to add phalcon.
|
||||
add_phalcon() {
|
||||
extension=$1
|
||||
status='Enabled'
|
||||
phalcon_ini_file="${pecl_file:-${ini_file[@]}}"
|
||||
extension_major_version=${extension: -1}
|
||||
if [ "$extension_major_version" = "4" ]; then
|
||||
add_phalcon4 >/dev/null 2>&1
|
||||
elif [ "$extension_major_version" = "3" ]; then
|
||||
add_phalcon3 >/dev/null 2>&1
|
||||
fi
|
||||
add_extension_log "phalcon" "$status"
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
# Function to check if extension is enabled.
|
||||
Function Test-Extension() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
$extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension }
|
||||
return $null -ne $extension_info
|
||||
}
|
||||
|
||||
# Function to add extension log.
|
||||
Function Add-ExtensionLog() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
$extension,
|
||||
[Parameter(Position = 1, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
$message
|
||||
)
|
||||
if (Test-Extension $extension) {
|
||||
Add-Log $tick $extension $message
|
||||
} else {
|
||||
Add-Log $cross $extension "Could not install $extension on PHP $( $installed.FullVersion )"
|
||||
}
|
||||
}
|
||||
|
||||
# Function to link dependencies to PHP directory.
|
||||
Function Set-ExtensionPrerequisites
|
||||
{
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
|
||||
$deps = Get-ChildItem -Recurse -Path $deps_dir
|
||||
if ($deps.Count -ne 0) {
|
||||
# Symlink dependencies instead of adding the directory to PATH ...
|
||||
# as other actions change the PATH thus breaking extensions.
|
||||
$deps | ForEach-Object {
|
||||
New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force > $null 2>&1
|
||||
}
|
||||
} else {
|
||||
Remove-Item $deps_dir -Recurse -Force
|
||||
}
|
||||
}
|
||||
|
||||
# Function to enable extension.
|
||||
Function Enable-Extension() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
Enable-ExtensionDependencies $extension
|
||||
Enable-PhpExtension -Extension $extension -Path $php_dir
|
||||
Set-ExtensionPrerequisites $extension
|
||||
Add-Log $tick $extension "Enabled"
|
||||
}
|
||||
|
||||
# Function to add custom built PHP extension for nightly builds.
|
||||
Function Add-NightlyExtension {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
if($ts) { $ts_part = 'ts' } else { $ts_part = 'nts' }
|
||||
$repo = "$github/shivammathur/php-extensions-windows"
|
||||
$url = "$repo/releases/download/builds/php$version`_$ts_part`_$arch`_$extension.dll"
|
||||
Get-File -Url $url -OutFile "$ext_dir\php_$extension.dll"
|
||||
if(Test-Path "$ext_dir\php_$extension.dll") {
|
||||
Enable-Extension $extension > $null
|
||||
} else {
|
||||
throw "Failed to download the $extension"
|
||||
}
|
||||
}
|
||||
|
||||
# Function to add PHP extensions.
|
||||
Function Add-Extension {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension,
|
||||
[Parameter(Position = 1, Mandatory = $false)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateSet('stable', 'beta', 'alpha', 'devel', 'snapshot')]
|
||||
[string]
|
||||
$stability = 'stable',
|
||||
[Parameter(Position = 2, Mandatory = $false)]
|
||||
[ValidateNotNull()]
|
||||
[ValidatePattern('^\d+(\.\d+){0,2}$')]
|
||||
[string]
|
||||
$extension_version = ''
|
||||
)
|
||||
try {
|
||||
$extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension }
|
||||
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
|
||||
New-Item $deps_dir -Type Directory -Force > $null 2>&1
|
||||
if ($null -ne $extension_info) {
|
||||
switch ($extension_info.State) {
|
||||
'Builtin' {
|
||||
Add-Log $tick $extension "Enabled"
|
||||
}
|
||||
'Enabled' {
|
||||
Add-Log $tick $extension "Enabled"
|
||||
}
|
||||
default {
|
||||
Enable-Extension $extension_info.Handle
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(($version -match $nightly_versions) -and (Select-String -Path $src\configs\windows_extensions -Pattern $extension -SimpleMatch -Quiet)) {
|
||||
Add-NightlyExtension $extension
|
||||
} else {
|
||||
# Patch till DLLs for PHP 8.2 and above are released as stable.
|
||||
$minimumStability = $stability
|
||||
if ($version -match '8.[2-4]' -and $stability -eq 'stable') {
|
||||
$minimumStability = 'snapshot'
|
||||
}
|
||||
|
||||
$params = @{ Extension = $extension; MinimumStability = $minimumStability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true }
|
||||
if ($extension_version -ne '')
|
||||
{
|
||||
$params["Version"] = $extension_version
|
||||
}
|
||||
Install-PhpExtension @params
|
||||
Set-ExtensionPrerequisites $extension
|
||||
}
|
||||
Add-Log $tick $extension "Installed and enabled"
|
||||
}
|
||||
} catch {
|
||||
Add-Log $cross $extension "Could not install $extension on PHP $( $installed.FullVersion )"
|
||||
}
|
||||
}
|
||||
|
||||
# Function to get a map of extensions and their dependent shared extensions.
|
||||
Function Get-ExtensionMap {
|
||||
php -d'error_reporting=0' $src\scripts\extensions\extension_map.php $env:TEMP\map$version.orig
|
||||
}
|
||||
|
||||
# Function to enable extension dependencies which are also extensions.
|
||||
Function Enable-ExtensionDependencies {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
if (-not(Test-Path $env:TEMP\extdisabled\$extension)) {
|
||||
return
|
||||
}
|
||||
Get-ExtensionMap
|
||||
$entry = findstr /r "$extension`:.*" $env:TEMP\map$version.orig
|
||||
if($entry) {
|
||||
$entry.split(':')[1].trim().split(' ') | ForEach-Object {
|
||||
if (-not(php -m | findstr -i $_)) {
|
||||
Enable-PhpExtension -Extension $_ -Path $php_dir
|
||||
}
|
||||
}
|
||||
}
|
||||
Remove-Item $env:TEMP\extdisabled\$extension -Force
|
||||
}
|
||||
|
||||
# Function to disable dependent extensions.
|
||||
Function Disable-DependentExtensions() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension
|
||||
)
|
||||
Select-String -Pattern ".*:.*\s$extension(\s|$)" $env:TEMP\map$version.orig | ForEach-Object {
|
||||
$dependent = $_.Matches[0].Value.split(':')[0];
|
||||
Disable-ExtensionHelper -Extension $dependent -DisableDependents
|
||||
Add-Log $tick ":$extension" "Disabled $dependent as it depends on $extension"
|
||||
}
|
||||
}
|
||||
|
||||
# Helper function to disable an extension.
|
||||
Function Disable-ExtensionHelper() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension,
|
||||
[switch] $DisableDependents
|
||||
)
|
||||
Get-ExtensionMap
|
||||
if($DisableDependents) {
|
||||
Disable-DependentExtensions $extension
|
||||
}
|
||||
Disable-PhpExtension -Extension $extension -Path $php_dir
|
||||
New-Item $env:TEMP\extdisabled -Type Directory -Force > $null 2>&1
|
||||
New-Item $env:TEMP\extdisabled\$extension -Type File -Force > $null 2>&1
|
||||
}
|
||||
|
||||
# Function to disable an extension.
|
||||
Function Disable-Extension() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$extension,
|
||||
[Parameter(Position = 1, Mandatory = $false)]
|
||||
[ValidateNotNull()]
|
||||
[ValidateLength(1, [int]::MaxValue)]
|
||||
[string]
|
||||
$DisableDependents
|
||||
)
|
||||
if(php -m | findstr -i $extension) {
|
||||
if(Test-Path $ext_dir\php_$extension.dll) {
|
||||
try {
|
||||
$params = @{ Extension = $extension; DisableDependents = ($DisableDependents -ne 'false') }
|
||||
Disable-ExtensionHelper @params
|
||||
Add-Log $tick ":$extension" "Disabled"
|
||||
} catch {
|
||||
Add-Log $cross ":$extension" "Could not disable $extension on PHP $($installed.FullVersion)"
|
||||
}
|
||||
} else {
|
||||
Add-Log $cross ":$extension" "Could not disable $extension on PHP $($installed.FullVersion) as it not a shared extension"
|
||||
}
|
||||
} elseif(Test-Path $ext_dir\php_$extension.dll) {
|
||||
Add-Log $tick ":$extension" "Disabled"
|
||||
} else {
|
||||
Add-Log $tick ":$extension" "Could not find $extension on PHP $($installed.FullVersion)"
|
||||
}
|
||||
}
|
||||
|
||||
# Function to disable shared extensions.
|
||||
Function Disable-AllShared() {
|
||||
Get-ExtensionMap
|
||||
(Get-Content $php_dir\php.ini) | Where-Object {$_ -notmatch '^(zend_)?extension\s*='} | Set-Content $php_dir\php.ini
|
||||
New-Item $env:TEMP\extdisabled\$version -Type Directory -Force > $null 2>&1
|
||||
Get-Childitem $ext_dir\*.dll | ForEach-Object {
|
||||
New-Item ("$env:TEMP\extdisabled\$version\" + ($_.Name.split('.')[0].split('_')[1])) -Type File -Force > $null 2>&1
|
||||
}
|
||||
Add-Log $tick "none" "Disabled all shared extensions"
|
||||
}
|
||||
|
||||
# Function to handle request to add PECL.
|
||||
Function Add-Pecl() {
|
||||
Add-Log $tick "PECL" "Use extensions input to setup PECL extensions on windows"
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
# Function to log result of installing extension.
|
||||
add_extension_log() {
|
||||
(
|
||||
check_extension "$(echo "$1" | cut -d '-' -f 1)" && add_log "${tick:?}" "$1" "$2"
|
||||
) || add_log "${cross:?}" "$1" "Could not install $1 on PHP ${semver:?}"
|
||||
}
|
||||
|
||||
# Function to test if extension is loaded.
|
||||
check_extension() {
|
||||
local extension=$1
|
||||
local extension_list=/tmp/php${version:?}_extensions
|
||||
if [ ! -e "$extension_list" ]; then
|
||||
php -m > "$extension_list"
|
||||
fi
|
||||
if [ "$extension" != "mysql" ]; then
|
||||
grep -i -q -w "$extension" "$extension_list" || php -m | grep -i -q -w "$extension"
|
||||
else
|
||||
grep -i -q "$extension" "$extension_list" || php -m | grep -i -q "$extension"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to check if extension is shared
|
||||
shared_extension() {
|
||||
[ -e "${ext_dir:?}/$1.so" ]
|
||||
}
|
||||
|
||||
# Function to enable cached extension's dependencies.
|
||||
enable_cache_extension_dependencies() {
|
||||
if [ -d /tmp/extcache ] && shared_extension "$1"; then
|
||||
cache_dir=$(find /tmp/extcache -maxdepth 1 -type d -regex ".*$1[0-9]*")
|
||||
if [[ -n "$cache_dir" ]]; then
|
||||
IFS=" " read -r -a deps <<<"$(find "$cache_dir" -maxdepth 1 -type f -name "*" -exec basename {} \; | tr '\n' ' ')"
|
||||
IFS="#" read -r -a deps_enable <<<"$(printf -- "-d ${2}=%s.so#" "${deps[@]}")"
|
||||
if [[ -n "${deps[*]}" ]] && php "${deps_enable[@]}" -d "${2}=$1.so" -m 2>/dev/null | grep -i -q "$1"; then
|
||||
for ext in "${deps[@]}"; do
|
||||
sudo rm -rf /tmp/extcache/"$ext"
|
||||
enable_extension "$ext" "$2"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to enable existing extensions.
|
||||
enable_extension() {
|
||||
if ! check_extension "$1" && shared_extension "$1"; then
|
||||
modules_dir="/var/lib/php/modules/${version:?}"
|
||||
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
||||
enable_extension_dependencies "$1" "$2"
|
||||
enable_cache_extension_dependencies "$1" "$2"
|
||||
if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod >/dev/null 2>&1; then
|
||||
sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?\"?$/d" "$pecl_file"
|
||||
mod="${ini_dir:?}"/../mods-available/"$1".ini
|
||||
if ! [ -e "$mod" ]; then
|
||||
priority="${3:-20}";
|
||||
mod_priority_line="$(grep -E "^$1=" "${src:?}/configs/mod_priority")";
|
||||
[ -n "$mod_priority_line" ] && priority=$(echo "$mod_priority_line" | cut -d'=' -f 2)
|
||||
(echo "; priority=$priority"; echo "$2=${ext_dir:?}/$1.so") | sudo tee "$mod" >/dev/null
|
||||
fi
|
||||
sudo phpenmod -v "$version" "$1" >/dev/null 2>&1
|
||||
else
|
||||
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to enable array of extensions
|
||||
enable_extensions() {
|
||||
local extensions=("$@")
|
||||
to_wait=()
|
||||
for ext in "${extensions[@]}"; do
|
||||
enable_extension "$ext" extension >/dev/null 2>&1 &
|
||||
to_wait+=($!)
|
||||
done
|
||||
wait "${to_wait[@]}"
|
||||
}
|
||||
|
||||
# Function to get a map of extensions and their dependent shared extensions.
|
||||
get_extension_map() {
|
||||
php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Function to enable extension dependencies which are also extensions.
|
||||
enable_extension_dependencies() {
|
||||
local extension=$1
|
||||
local prefix=$2
|
||||
[ -e /tmp/extdisabled/"$version"/"$extension" ] || return;
|
||||
get_extension_map
|
||||
for dependency in $(grep "$extension:" /tmp/map"$version".orig | cut -d ':' -f 2 | tr '\n' ' '); do
|
||||
enable_extension "$dependency" "$prefix"
|
||||
done
|
||||
rm /tmp/extdisabled/"$version"/"$extension"
|
||||
}
|
||||
|
||||
# Function to disable dependent extensions.
|
||||
disable_extension_dependents() {
|
||||
local extension=$1
|
||||
for dependent in $(grep -E ".*:.*\s$extension(\s|$)" /tmp/map"$version".orig | cut -d ':' -f 1 | tr '\n' ' '); do
|
||||
disable_extension_helper "$dependent" true
|
||||
add_log "${tick:?}" ":$extension" "Disabled $dependent as it depends on $extension"
|
||||
done
|
||||
}
|
||||
|
||||
# Function to disable an extension.
|
||||
disable_extension() {
|
||||
local extension=$1
|
||||
if check_extension "$extension"; then
|
||||
if shared_extension "$extension"; then
|
||||
disable_extension_helper "$extension" true
|
||||
(! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Disabled") ||
|
||||
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP ${semver:?}"
|
||||
else
|
||||
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP $semver as it not a shared extension"
|
||||
fi
|
||||
elif shared_extension "$extension"; then
|
||||
add_log "${tick:?}" ":$extension" "Disabled"
|
||||
else
|
||||
add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to disable shared extensions.
|
||||
disable_all_shared() {
|
||||
get_extension_map
|
||||
sudo sed -i.orig -E -e "/^(zend_)?extension\s*=/d" "${ini_file[@]}" "$pecl_file" 2>/dev/null || true
|
||||
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
||||
mkdir -p /tmp/extdisabled/"$version"
|
||||
sudo rm -f /tmp/php"$version"_extensions
|
||||
sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -I{} touch /tmp/extdisabled/"$version"/{}
|
||||
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
||||
}
|
||||
|
||||
# Function to configure PECL.
|
||||
configure_pecl() {
|
||||
[ -z "${pecl_file:-${ini_file[@]}}" ] && return
|
||||
if ! [ -e /tmp/pecl_config ]; then
|
||||
for script in pear pecl; do
|
||||
sudo "$script" channel-update "$script".php.net
|
||||
done
|
||||
echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to add an extension.
|
||||
add_extension() {
|
||||
local extension=$1
|
||||
local prefix=$2
|
||||
enable_extension "$extension" "$prefix"
|
||||
if check_extension "$extension"; then
|
||||
add_log "${tick:?}" "$extension" "Enabled"
|
||||
else
|
||||
add_extension_helper "$extension" "$prefix"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to get the PECL version of an extension.
|
||||
get_pecl_version() {
|
||||
local extension=$1
|
||||
states=("stable" "rc" "preview" "beta" "alpha" "snapshot")
|
||||
stability="$(echo "$2" | grep -m 1 -Eio "($(IFS='|' ; echo "${states[*]}"))")"
|
||||
IFS=' ' read -r -a states <<< "$(echo "${states[@]}" | grep -Eo "$stability.*")"
|
||||
major_version=${3:-'[0-9]+'}
|
||||
pecl_rest='https://pecl.php.net/rest/r/'
|
||||
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
||||
for state in "${states[@]}"; do
|
||||
pecl_version=$(echo "$response" | grep -m 1 -Eio "($major_version\.[0-9]+\.[0-9]+${state}[0-9]+<)" | cut -d '<' -f 1)
|
||||
[ -z "$pecl_version" ] && pecl_version=$(echo "$response" | grep -m 1 -Eio "v>(.*)<\/v>.*$state<" | grep -m 1 -Eo "($major_version\.[0-9]+\.[0-9]+.*)<" | cut -d '<' -f 1)
|
||||
[ -n "$pecl_version" ] && break;
|
||||
done
|
||||
[ -z "$pecl_version" ] && pecl_version=$(echo "$response" | grep -m 1 -Eo "($major_version\.[0-9]+\.[0-9]+)<" | cut -d '<' -f 1)
|
||||
echo "$pecl_version"
|
||||
}
|
||||
|
||||
# Function to install PECL extensions and accept default options
|
||||
pecl_install() {
|
||||
local extension=$1
|
||||
local prefix=${2:-extension}
|
||||
add_pecl >/dev/null 2>&1
|
||||
cpu_count="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo '1')"
|
||||
prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS) MAKEFLAGS='-j $cpu_count'"
|
||||
suffix_opts="$(parse_args "$extension" CONFIGURE_OPTS) $(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"
|
||||
IFS=' ' read -r -a libraries <<<"$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)"
|
||||
(( ${#libraries[@]} )) && add_libs "${libraries[@]}" >/dev/null 2>&1
|
||||
disable_extension_helper "${extension%-*}" >/dev/null 2>&1
|
||||
if [ "$version" = "5.3" ]; then
|
||||
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1
|
||||
else
|
||||
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1
|
||||
fi
|
||||
local exit_code=$?
|
||||
sudo pecl info "$extension" | grep -iq 'zend extension' && prefix=zend_extension
|
||||
enable_extension "${extension%-*}" "$prefix"
|
||||
return "$exit_code"
|
||||
}
|
||||
|
||||
# Function to install a specific version of PECL extension.
|
||||
add_pecl_extension() {
|
||||
local extension=$1
|
||||
local pecl_version=$2
|
||||
local 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 check_extension "$extension" && [[ -z "$pecl_version" || (-n "$pecl_version" && "${ext_version/-/}" == "$pecl_version") ]]; then
|
||||
add_log "${tick:?}" "$extension" "Enabled"
|
||||
else
|
||||
[ -n "$pecl_version" ] && pecl_version="-$pecl_version"
|
||||
pecl_install "$extension$pecl_version" || add_extension "$extension" "$(get_extension_prefix "$extension")" >/dev/null 2>&1
|
||||
extension_version="$(php -r "echo phpversion('$extension');")"
|
||||
[ -n "$extension_version" ] && extension_version="-$extension_version"
|
||||
add_extension_log "$extension$extension_version" "Installed and enabled"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to setup pre-release extensions using PECL.
|
||||
add_unstable_extension() {
|
||||
local extension=$1
|
||||
local stability=$2
|
||||
local prefix=$3
|
||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
||||
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
||||
}
|
||||
|
||||
# Function to get extension prefix
|
||||
get_extension_prefix() {
|
||||
echo "$1" | grep -Eq "xdebug([2-3])?$|opcache|ioncube|eaccelerator" && echo zend_extension || echo extension
|
||||
}
|
||||
@@ -21,7 +21,9 @@ Function Add-Blackfire() {
|
||||
$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
|
||||
Get-File -Url "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
|
||||
Disable-Extension xdebug > $null 2>&1
|
||||
Disable-Extension pcov > $null 2>&1
|
||||
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||
$status="Installed and enabled"
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
# Function to install blackfire extension.
|
||||
add_blackfire() {
|
||||
extension=$1
|
||||
local 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
|
||||
status='Enabled'
|
||||
if ! shared_extension blackfire; then
|
||||
status='Installed and enabled'
|
||||
if [ "$extension_version" = "blackfire" ]; then
|
||||
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
||||
extension_version='1.50.0'
|
||||
@@ -16,6 +17,8 @@ add_blackfire() {
|
||||
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"
|
||||
disable_extension xdebug >/dev/null 2>&1
|
||||
disable_extension pcov >/dev/null 2>&1
|
||||
enable_extension blackfire extension
|
||||
add_extension_log blackfire "$status"
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
# Function to install libraries required by couchbase
|
||||
add_couchbase_clibs() {
|
||||
ext=$1
|
||||
trunk="https://github.com/couchbase/libcouchbase/releases"
|
||||
if [[ "$ext" =~ couchbase-2.+ ]]; then
|
||||
release="2.10.9"
|
||||
else
|
||||
release=$(get -s -n "" "$trunk"/latest | grep -Eo -m 1 "[0-9]+\.[0-9]+\.[0-9]+" | head -n 1)
|
||||
fi
|
||||
[ "$VERSION_ID" = "22.04" ] && vid=20.04 || vid="$VERSION_ID"
|
||||
[ "$VERSION_CODENAME" = "jammy" ] && vcn=focal || vcn="$VERSION_CODENAME"
|
||||
deb_url="$trunk/download/$release/libcouchbase-${release}_ubuntu${vid/./}_${vcn}_amd64.tar"
|
||||
get -q -n /tmp/libcouchbase.tar "$deb_url"
|
||||
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
||||
install_packages libev4 libevent-dev
|
||||
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
||||
}
|
||||
|
||||
add_couchbase_cxxlibs() {
|
||||
if [ "${runner:?}" = "self-hosted" ]; then
|
||||
add_list cmake https://apt.kitware.com/ubuntu/ https://apt.kitware.com/keys/kitware-archive-latest.asc "$VERSION_CODENAME" main
|
||||
fi
|
||||
install_packages cmake ccache
|
||||
}
|
||||
|
||||
get_couchbase_version() {
|
||||
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
||||
echo couchbase-2.2.3
|
||||
elif [[ "${version:?}" =~ 5.6|7.[0-1] ]]; then
|
||||
echo couchbase-2.6.2
|
||||
elif [ "${version:?}" = '7.2' ]; then
|
||||
echo couchbase-3.0.4
|
||||
elif [ "${version:?}" = '7.3' ]; then
|
||||
echo couchbase-3.2.2
|
||||
elif [ "${version:?}" = '7.4' ]; then
|
||||
echo couchbase-4.1.0
|
||||
else
|
||||
echo couchbase
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to add couchbase.
|
||||
add_couchbase() {
|
||||
ext=$1
|
||||
if [ "$(uname -s)" = "Linux" ]; then
|
||||
if [ "$ext" = "couchbase" ]; then
|
||||
ext=$(get_couchbase_version)
|
||||
fi
|
||||
if [[ "$ext" =~ couchbase-[2-3].+ ]]; then
|
||||
add_couchbase_clibs "$ext" >/dev/null 2>&1
|
||||
else
|
||||
add_couchbase_cxxlibs >/dev/null 2>&1
|
||||
fi
|
||||
enable_extension "couchbase" "extension"
|
||||
if check_extension "couchbase"; then
|
||||
add_log "${tick:?}" "couchbase" "Enabled"
|
||||
else
|
||||
if [ "$ext" = "couchbase" ]; then
|
||||
ext="couchbase-$(get_pecl_version "couchbase" "stable")"
|
||||
n_proc="$(nproc)"
|
||||
export COUCHBASE_SUFFIX_OPTS="CMAKE_BUILD_TYPE=Release"
|
||||
export CMAKE_BUILD_PARALLEL_LEVEL="$n_proc"
|
||||
add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1
|
||||
else
|
||||
pecl_install "${ext}" >/dev/null 2>&1
|
||||
fi
|
||||
add_extension_log "couchbase" "Installed and enabled"
|
||||
fi
|
||||
else
|
||||
if [ -e "${ext_dir:?}"/libcouchbase_php_core.dylib ]; then
|
||||
sudo cp "${ext_dir:?}"/libcouchbase_php_core.dylib "${brew_prefix:?}"/lib
|
||||
fi
|
||||
add_brew_extension couchbase extension
|
||||
fi
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
# 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 "$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::"
|
||||
echo "$END_GROUP"
|
||||
}
|
||||
|
||||
# Function to setup gcc-7 and g++-7
|
||||
@@ -57,4 +57,4 @@ add_cubrid() {
|
||||
}
|
||||
|
||||
# shellcheck source=.
|
||||
. "${scripts:?}"/ext/patches/phpize.sh
|
||||
. "${scripts:?}"/extensions/patches/phpize.sh
|
||||
@@ -0,0 +1,50 @@
|
||||
# Function to get event configure options
|
||||
get_event_configure_opts() {
|
||||
event_opts=(
|
||||
--with-event-core
|
||||
--with-event-extra
|
||||
--with-event-openssl
|
||||
--enable-event-sockets
|
||||
)
|
||||
if [ "$os" = 'Linux' ]; then
|
||||
event_opts+=(
|
||||
--with-openssl-dir=yes
|
||||
--with-event-libevent-dir=/usr
|
||||
)
|
||||
else
|
||||
event_opts+=(
|
||||
--with-openssl-dir="$(brew --prefix openssl@3)"
|
||||
--with-event-libevent-dir="$(brew --prefix libevent)"
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
# Helper function to compile and install event
|
||||
add_event_helper() {
|
||||
local ext=$1
|
||||
[[ "$ext" =~ ^event$ ]] && ext="event-$(get_pecl_version "event" "stable")"
|
||||
event_opts=() && get_event_configure_opts
|
||||
export EVENT_LINUX_LIBS='libevent-dev'
|
||||
export EVENT_DARWIN_LIBS='libevent'
|
||||
event_configure_opts="--with-php-config=$(command -v php-config) ${event_opts[*]}"
|
||||
export EVENT_CONFIGURE_OPTS="$event_configure_opts"
|
||||
add_extension_from_source event https://pecl.php.net event event "${ext##*-}" extension pecl
|
||||
}
|
||||
|
||||
# Function to add event
|
||||
add_event() {
|
||||
local ext=$1
|
||||
enable_extension "event" "extension"
|
||||
if check_extension "event"; then
|
||||
add_log "${tick:?}" "event" "Enabled"
|
||||
else
|
||||
if ! [[ "${version:?}" =~ ${old_versions:?} ]] && [ "$os" = "Darwin" ]; then
|
||||
add_brew_extension event extension >/dev/null 2>&1
|
||||
else
|
||||
add_event_helper "$ext" >/dev/null 2>&1
|
||||
fi
|
||||
add_extension_log "event" "Installed and enabled"
|
||||
fi
|
||||
}
|
||||
|
||||
os="$(uname -s)"
|
||||
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Class for a map of extensions and their dependent extensions.
|
||||
*
|
||||
* Class ExtensionMap
|
||||
*/
|
||||
class ExtensionMap {
|
||||
/** @var string Directory in which shared extensions are stored. */
|
||||
private $extension_dir;
|
||||
|
||||
/** @var string File extension for PHP extension file. */
|
||||
private $file_extension;
|
||||
|
||||
/** @var string Prefix in PHP extension file. */
|
||||
private $file_prefix;
|
||||
|
||||
/** @var array Array to store the map */
|
||||
private $map;
|
||||
|
||||
/**
|
||||
* ExtensionMap constructor.
|
||||
*/
|
||||
function __construct() {
|
||||
$this->extension_dir = ini_get('extension_dir');
|
||||
$this->file_extension = (PHP_OS == 'WINNT' ? '.dll' : '.so');
|
||||
$this->file_prefix = (PHP_OS == 'WINNT' ? 'php_' : '');
|
||||
$this->map = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to read the extension map.
|
||||
*/
|
||||
private function parseMap($path) {
|
||||
if(file_exists($path)) {
|
||||
$handle = fopen($path, "r");
|
||||
if ($handle) {
|
||||
while (($line = fgets($handle)) !== false) {
|
||||
$line_parts = explode(':', $line);
|
||||
$this->map[$line_parts[0]] = explode(' ', trim($line_parts[1]));
|
||||
}
|
||||
fclose($handle);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to check if a shared extension file exists.
|
||||
*
|
||||
* @param string $extension
|
||||
* @return bool
|
||||
*/
|
||||
private function checkSharedExtension($extension) {
|
||||
$extension_file = $this->extension_dir. DIRECTORY_SEPARATOR . $this->file_prefix . $extension . $this->file_extension;
|
||||
return file_exists($extension_file);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get all shared extensions.
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
private function getSharedExtensions() {
|
||||
$files = scandir($this->extension_dir);
|
||||
$extensions = array_diff($files, array('.','..'));
|
||||
$filter_pattern = "/$this->file_extension|$this->file_prefix/";
|
||||
return array_map(function ($extension) use($filter_pattern) {
|
||||
return preg_replace($filter_pattern, '', $extension);
|
||||
}, $extensions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to patch dependencies if there are any bugs in Reflection data.
|
||||
*
|
||||
* @param string $extension
|
||||
* @param array $dependencies
|
||||
* @return array
|
||||
*/
|
||||
private function patchDependencies($extension, $dependencies) {
|
||||
// memcached 2.2.0 has no dependencies in reflection data.
|
||||
if($extension == 'memcached') {
|
||||
$dependencies = array_unique(array_merge($dependencies, array('igbinary', 'json', 'msgpack')));
|
||||
}
|
||||
return $dependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to add extension to the map.
|
||||
*
|
||||
* @param string $extension
|
||||
* @throws ReflectionException
|
||||
*/
|
||||
private function addExtensionToMap($extension) {
|
||||
if($this->map && array_key_exists($extension, $this->map) && !empty($this->map[$extension])) {
|
||||
return;
|
||||
}
|
||||
// PHP 5.3 does not allow using $this.
|
||||
$self = $this;
|
||||
|
||||
$ref = new ReflectionExtension($extension);
|
||||
$dependencies = array_keys(array_map('strtolower', $ref->getDependencies()));
|
||||
$dependencies = $this->patchDependencies($extension, $dependencies);
|
||||
$dependencies = array_filter($dependencies, function ($dependency) use ($self) {
|
||||
return $self->checkSharedExtension($dependency);
|
||||
});
|
||||
$self->map[$extension] = $dependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to write the map of shared extensions and their dependent extensions.
|
||||
*/
|
||||
public function write() {
|
||||
$path = $_SERVER['argv'][1];
|
||||
$this->parseMap($path);
|
||||
$extensions = array_map('strtolower', $this->getSharedExtensions());
|
||||
foreach ($extensions as $extension) {
|
||||
try {
|
||||
$this->addExtensionToMap($extension);
|
||||
} catch (ReflectionException $e) {
|
||||
|
||||
}
|
||||
}
|
||||
$map_string = '';
|
||||
foreach($this->map as $extension => $dependencies) {
|
||||
$map_string .= $extension . ': ' . implode(' ', $dependencies) . PHP_EOL;
|
||||
}
|
||||
file_put_contents($path, $map_string);
|
||||
}
|
||||
}
|
||||
|
||||
$extension_map = new ExtensionMap();
|
||||
$extension_map->write();
|
||||
@@ -4,7 +4,7 @@ Function Add-Choco() {
|
||||
# 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'))
|
||||
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
add_firebird_client_darwin() {
|
||||
firebird_tag='R3_0_7'
|
||||
pkg_name=$(get -s -n "" https://github.com/FirebirdSQL/firebird/releases/tag/"$firebird_tag" | grep -Eo "Firebird-.*.pkg" | head -n 1)
|
||||
pkg_name=$(get -s -n "" https://api.github.com/repos/FirebirdSQL/firebird/releases/tags/"$firebird_tag" | grep -Eo "Firebird-.*.pkg" | head -n 1)
|
||||
[ -z "$pkg_name" ] && pkg_name=$(get -s -n "" https://github.com/FirebirdSQL/firebird/releases/expanded_assets/"$firebird_tag" | grep -Eo "Firebird-.*.pkg" | head -n 1)
|
||||
get -q -e "/tmp/firebird.pkg" https://github.com/FirebirdSQL/firebird/releases/download/"$firebird_tag"/"$pkg_name"
|
||||
sudo installer -pkg /tmp/firebird.pkg -target /
|
||||
sudo mkdir -p /opt/firebird/include /opt/firebird/lib
|
||||
@@ -18,8 +19,13 @@ add_firebird_helper() {
|
||||
}
|
||||
|
||||
add_firebird() {
|
||||
enable_extension pdo_firebird
|
||||
if [ "$(uname -s )" = "Darwin" ]; then
|
||||
add_firebird_client_darwin >/dev/null 2>&1
|
||||
fi
|
||||
enable_extension pdo_firebird extension
|
||||
status="Enabled"
|
||||
if ! check_extension pdo_firebird; then
|
||||
status="Installed and enabled"
|
||||
if [ "$(uname -s)" = "Linux" ]; then
|
||||
if [[ "${version:?}" =~ 5.3|${nightly_versions:?} ]]; then
|
||||
add_firebird_helper /usr >/dev/null 2>&1
|
||||
@@ -27,9 +33,8 @@ add_firebird() {
|
||||
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
|
||||
add_extension_log pdo_firebird "$status"
|
||||
}
|
||||
@@ -17,6 +17,10 @@ add_gearman_helper() {
|
||||
# Function to add gearman extension.
|
||||
add_gearman() {
|
||||
status="Enabled"
|
||||
add_gearman_helper >/dev/null 2>&1
|
||||
add_extension_log "gearman" "$status"
|
||||
if [ "$(uname -s)" = 'Linux' ]; then
|
||||
add_gearman_helper >/dev/null 2>&1
|
||||
add_extension_log "gearman" "$status"
|
||||
else
|
||||
add_brew_extension gearman extension
|
||||
fi
|
||||
}
|
||||
File renamed without changes.
@@ -13,7 +13,7 @@ Function Get-ICUUrl() {
|
||||
$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
|
||||
$web_content = Get-File -Url $url
|
||||
foreach ($link in $web_content.Links) {
|
||||
if ($link -match "/.*ICU-${icu_version}.*/") {
|
||||
return $trunk + $link.HREF
|
||||
@@ -31,8 +31,8 @@ Function Repair-ICU() {
|
||||
}
|
||||
$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"
|
||||
New-Item -Path "$php_dir" -Name "icu" -ItemType "directory" -Force > $null 2>&1
|
||||
Get-File -Url $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
|
||||
}
|
||||
@@ -40,16 +40,12 @@ Function Repair-ICU() {
|
||||
}
|
||||
|
||||
Function Add-Http() {
|
||||
Add-Extension iconv >$null 2>&1
|
||||
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 )"
|
||||
}
|
||||
Add-ExtensionLog http "Installed and enabled"
|
||||
}
|
||||
@@ -11,33 +11,27 @@ get_http_version() {
|
||||
|
||||
# Function to enable http extension.
|
||||
enable_http() {
|
||||
enable_extension iconv extension
|
||||
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
|
||||
if (! [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension iconv && check_extension propro && check_extension raphf) ||
|
||||
( [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension iconv && check_extension raphf); then
|
||||
enable_extension http extension
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to install extensions.
|
||||
add_extension_helper() {
|
||||
if [ "$os" = "Linux" ]; then
|
||||
add_extension "$1" extension
|
||||
else
|
||||
add_brew_extension "$1" extension
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to install http dependencies.
|
||||
add_http_dependencies() {
|
||||
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_helper propro
|
||||
add_extension_helper raphf
|
||||
add_extension iconv extension
|
||||
add_extension propro extension
|
||||
add_extension raphf extension
|
||||
else
|
||||
add_extension_helper raphf
|
||||
add_extension iconv extension
|
||||
add_extension raphf extension
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -78,13 +72,11 @@ add_http_helper() {
|
||||
add_http_latest() {
|
||||
enable_http
|
||||
if ! check_extension http; then
|
||||
add_http_dependencies
|
||||
if [ "$os" = "Linux" ]; then
|
||||
if ! [[ "${version:?}" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
||||
install_packages "php$version-http"
|
||||
else
|
||||
add_http_helper "$(get_http_version)" "$os"
|
||||
fi
|
||||
add_http_dependencies
|
||||
package="php$version-http"
|
||||
add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
|
||||
(check_package "$package" && install_packages "$package") || add_http_helper "$(get_http_version)" "$os"
|
||||
else
|
||||
if ! [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
||||
add_brew_extension pecl_http extension
|
||||
@@ -99,7 +91,8 @@ add_http_version() {
|
||||
ext=$1
|
||||
enable_http
|
||||
if [ "x$(php -r "echo phpversion('http');")" != "x${ext##*-}" ]; then
|
||||
remove_extension http >/dev/null
|
||||
add_http_dependencies
|
||||
disable_extension_helper http >/dev/null
|
||||
add_http_helper pecl_http-"${ext##*-}" "$os"
|
||||
status="Installed and enabled"
|
||||
fi
|
||||
@@ -15,8 +15,9 @@ add_intl() {
|
||||
if [ "$icu" != "$supported_version" ]; then
|
||||
add_log "${cross:?}" "intl" "ICU $icu is not supported"
|
||||
else
|
||||
[ "${ts:?}" = 'zts' ] && suffix='-zts'
|
||||
install_icu "$icu" >/dev/null 2>&1
|
||||
get -q -n "${ext_dir:?}/intl.so" "https://github.com/shivammathur/icu-intl/releases/download/intl/php${version:?}-intl-$icu.so"
|
||||
get -q -n "${ext_dir:?}/intl.so" "https://github.com/shivammathur/icu-intl/releases/download/intl/php${version:?}-intl-$icu$suffix.so"
|
||||
enable_extension intl extension
|
||||
add_extension_log intl "Installed and enabled with ICU $icu"
|
||||
fi
|
||||
@@ -1,13 +1,14 @@
|
||||
# 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"
|
||||
printf "$env: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::"
|
||||
Write-Output "$env:END_GROUP"
|
||||
}
|
||||
|
||||
# Function to add ioncube extension.
|
||||
Function Add-Ioncube() {
|
||||
try {
|
||||
$status = 'Enabled'
|
||||
if (-not(Test-Path $ext_dir\php_ioncube.dll)) {
|
||||
$status = 'Installed and enabled'
|
||||
$arch_part = $arch
|
||||
@@ -19,7 +20,7 @@ Function Add-Ioncube() {
|
||||
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
|
||||
Get-File -Url "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
|
||||
}
|
||||
@@ -1,17 +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::"
|
||||
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 "${ext_dir:?}"/IONCUBE_LICENSE.txt
|
||||
echo "$END_GROUP"
|
||||
}
|
||||
|
||||
# Function to install ioncube.
|
||||
add_ioncube() {
|
||||
if [ ! -e "${ext_dir:?}/ioncube.so" ]; then
|
||||
status='Enabled'
|
||||
if ! shared_extension ioncube; 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"
|
||||
sudo mv /tmp/ioncube/ioncube_loader_"$os_name"_"${version:?}".so "${ext_dir:?}/ioncube.so"
|
||||
sudo cp /tmp/ioncube/LICENSE.txt "$ext_dir"/IONCUBE_LICENSE.txt
|
||||
fi
|
||||
echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
|
||||
add_extension_log "ioncube" "$status"
|
||||
@@ -0,0 +1,85 @@
|
||||
# Function to log license information.
|
||||
Function Add-LicenseLog() {
|
||||
printf "$env: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 "$env:END_GROUP"
|
||||
}
|
||||
|
||||
# Function to get instantclinet.
|
||||
Function Add-InstantClient() {
|
||||
if (-not(Test-Path $php_dir\oci.dll)) {
|
||||
$suffix = 'windows'
|
||||
if ($arch -eq 'x86') {
|
||||
$suffix = 'nt'
|
||||
}
|
||||
Get-File -Url 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 oci8 extension URL.
|
||||
Function Get-Oci8Url() {
|
||||
if($version -lt '8.0') {
|
||||
$ociVersion = '2.2.0'
|
||||
if ($version -eq '7.0') {
|
||||
$ociVersion = '2.1.8'
|
||||
} elseif ($version -lt '7.0') {
|
||||
$ociVersion = '2.0.12'
|
||||
}
|
||||
return Get-PeclArchiveUrl oci8 $ociVersion $installed
|
||||
} else {
|
||||
$ociUrl = '';
|
||||
Get-PeclPackageVersion oci8 -MinimumStability stable -MaximumStability stable | ForEach-Object {
|
||||
$ociUrl = Get-PeclArchiveUrl oci8 $_ $installed
|
||||
if($ociUrl) {
|
||||
return $ociUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Function to get OCI8 DLL.
|
||||
Function Get-Oci8DLL() {
|
||||
Get-ChildItem $ext_dir\php_oci8*.dll | ForEach-Object {
|
||||
if((Get-PhpExtension -Path $_).PhpVersion -eq $version) {
|
||||
return $_
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 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)) {
|
||||
$oci8DLL = Get-Oci8DLL
|
||||
if($oci8DLL) {
|
||||
Copy-Item -Path $oci8DLL -Destination $ext_dir\php_oci8.dll
|
||||
} else {
|
||||
$status = 'Installed and enabled'
|
||||
Get-File -Url (Get-Oci8Url) -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 )"
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
# 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 "$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::"
|
||||
echo "$END_GROUP"
|
||||
}
|
||||
|
||||
# Function to install instantclient and SDK.
|
||||
@@ -35,7 +35,7 @@ add_client() {
|
||||
|
||||
# Function to install oci8 and pdo_oci.
|
||||
add_oci_helper() {
|
||||
if ! [ -e "${ext_dir:?}/$ext.so" ]; then
|
||||
if ! shared_extension "$ext"; then
|
||||
status='Installed and enabled'
|
||||
read -r "${ext}_LINUX_LIBS" <<< "libaio-dev"
|
||||
read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config) --with-${ext/_/-}=instantclient,$oracle_client"
|
||||
@@ -43,6 +43,8 @@ add_oci_helper() {
|
||||
patch_phpize
|
||||
add_extension_from_source "$ext" https://github.com php php-src "$(php_src_tag)" extension get
|
||||
restore_phpize
|
||||
else
|
||||
enable_extension "$ext" extension
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -60,4 +62,4 @@ add_oci() {
|
||||
}
|
||||
|
||||
# shellcheck source=.
|
||||
. "${scripts:?}"/ext/patches/phpize.sh
|
||||
. "${scripts:?}"/extensions/patches/phpize.sh
|
||||
File renamed without changes.
@@ -3,5 +3,7 @@ patch_geos() {
|
||||
sed -i~ -e "s/, ce->name/, ZSTR_VAL(ce->name)/; s/ulong /zend_ulong /" geos.c
|
||||
fi
|
||||
get -q -n /tmp/php8.patch https://git.remirepo.net/cgit/rpms/php/php-geos.git/plain/0003-add-all-arginfo-and-fix-build-with-PHP-8.patch
|
||||
get -q -n /tmp/toString.patch https://git.remirepo.net/cgit/rpms/php/php-geos.git/plain/0006-fix-__toString-with-8.2.patch
|
||||
patch -p1 < /tmp/php8.patch 2>/dev/null || true
|
||||
patch -p1 < /tmp/toString.patch 2>/dev/null || true
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
Loaded 100 of 128 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user