setup-php 2.16.0 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -141
- package/lib/config.d.ts +3 -0
- package/lib/config.js +76 -0
- package/lib/config.js.map +1 -0
- package/lib/coverage.d.ts +5 -0
- package/lib/coverage.js +102 -0
- package/lib/coverage.js.map +1 -0
- package/lib/extensions.d.ts +4 -0
- package/lib/extensions.js +219 -0
- package/lib/extensions.js.map +1 -0
- package/lib/fetch.d.ts +1 -0
- package/lib/fetch.js +67 -0
- package/lib/fetch.js.map +1 -0
- package/lib/install.d.ts +2 -0
- package/lib/install.js +80 -0
- package/lib/install.js.map +1 -0
- package/lib/tools.d.ts +23 -0
- package/lib/tools.js +378 -0
- package/lib/tools.js.map +1 -0
- package/lib/utils.d.ts +21 -0
- package/lib/utils.js +266 -0
- package/lib/utils.js.map +1 -0
- package/package.json +21 -20
- package/src/config.ts +8 -8
- package/src/configs/brew_extensions +1 -0
- package/src/configs/composer.env +2 -0
- package/src/configs/ini/jit.ini +3 -0
- package/src/configs/ini/php.ini +2 -0
- package/src/configs/ini/xdebug.ini +1 -0
- package/src/configs/os_releases.csv +2 -0
- package/src/configs/php_packages +12 -0
- package/src/configs/tools.json +48 -26
- package/src/configs/tools_schema.json +11 -0
- package/src/coverage.ts +24 -49
- package/src/extensions.ts +28 -24
- package/src/fetch.ts +54 -0
- package/src/install.ts +28 -41
- package/src/scripts/darwin.sh +81 -33
- package/src/scripts/extensions/add_extensions.ps1 +194 -0
- package/src/scripts/extensions/add_extensions.sh +198 -0
- package/src/scripts/{ext → extensions}/blackfire.ps1 +0 -0
- package/src/scripts/{ext → extensions}/blackfire.sh +0 -0
- package/src/scripts/{ext → extensions}/couchbase.sh +0 -0
- package/src/scripts/{ext → extensions}/cubrid.sh +3 -3
- package/src/scripts/{ext → extensions}/extension_map.php +36 -13
- package/src/scripts/{ext → extensions}/firebird.ps1 +0 -0
- package/src/scripts/{ext → extensions}/firebird.sh +0 -0
- package/src/scripts/{ext → extensions}/gearman.sh +0 -0
- package/src/scripts/{ext → extensions}/geos.sh +0 -0
- package/src/scripts/{ext → extensions}/http.ps1 +1 -0
- package/src/scripts/{ext → extensions}/http.sh +13 -20
- package/src/scripts/{ext → extensions}/intl.sh +0 -0
- package/src/scripts/{ext → extensions}/ioncube.ps1 +2 -2
- package/src/scripts/{ext → extensions}/ioncube.sh +2 -2
- package/src/scripts/{ext → extensions}/oci.ps1 +39 -14
- package/src/scripts/{ext → extensions}/oci.sh +3 -3
- package/src/scripts/{ext → extensions}/patches/firebird.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/geos.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/http.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/pdo_oci.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/phpize.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/protobuf.sh +0 -0
- package/src/scripts/{ext → extensions}/phalcon.ps1 +0 -0
- package/src/scripts/{ext → extensions}/phalcon.sh +4 -5
- package/src/scripts/{ext → extensions}/source.sh +36 -22
- package/src/scripts/extensions/sqlsrv.sh +15 -0
- package/src/scripts/linux.sh +76 -36
- package/src/scripts/tools/add_tools.ps1 +220 -10
- package/src/scripts/tools/add_tools.sh +164 -17
- package/src/scripts/tools/grpc_php_plugin.ps1 +4 -4
- package/src/scripts/tools/grpc_php_plugin.sh +3 -3
- package/src/scripts/tools/ppa.sh +12 -9
- package/src/scripts/tools/protoc.ps1 +2 -2
- package/src/scripts/tools/protoc.sh +2 -2
- package/src/scripts/tools/symfony.ps1 +18 -0
- package/src/scripts/tools/symfony.sh +18 -0
- package/src/scripts/unix.sh +186 -0
- package/src/scripts/win32.ps1 +137 -336
- package/src/tools.ts +62 -82
- package/src/utils.ts +57 -145
- package/src/scripts/common.sh +0 -366
package/src/coverage.ts
CHANGED
|
@@ -20,13 +20,13 @@ export async function checkXdebugError(
|
|
|
20
20
|
*
|
|
21
21
|
* @param extension
|
|
22
22
|
* @param version
|
|
23
|
-
* @param
|
|
23
|
+
* @param os
|
|
24
24
|
* @param pipe
|
|
25
25
|
*/
|
|
26
26
|
export async function addCoverageXdebug(
|
|
27
27
|
extension: string,
|
|
28
28
|
version: string,
|
|
29
|
-
|
|
29
|
+
os: string,
|
|
30
30
|
pipe: string
|
|
31
31
|
): Promise<string> {
|
|
32
32
|
let script = '\n';
|
|
@@ -34,20 +34,14 @@ export async function addCoverageXdebug(
|
|
|
34
34
|
let status = '$cross';
|
|
35
35
|
if (!message) {
|
|
36
36
|
script +=
|
|
37
|
-
(await extensions.addExtension(
|
|
38
|
-
':pcov:false',
|
|
39
|
-
version,
|
|
40
|
-
os_version,
|
|
41
|
-
true
|
|
42
|
-
)) + pipe;
|
|
37
|
+
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
|
43
38
|
extension = extension == 'xdebug3' ? 'xdebug' : extension;
|
|
44
39
|
script +=
|
|
45
|
-
(await extensions.addExtension(extension, version,
|
|
46
|
-
pipe;
|
|
40
|
+
(await extensions.addExtension(extension, version, os, true)) + pipe;
|
|
47
41
|
message = 'Xdebug enabled as coverage driver';
|
|
48
42
|
status = '$tick';
|
|
49
43
|
}
|
|
50
|
-
script += await utils.addLog(status, extension, message,
|
|
44
|
+
script += await utils.addLog(status, extension, message, os);
|
|
51
45
|
return script;
|
|
52
46
|
}
|
|
53
47
|
|
|
@@ -55,36 +49,30 @@ export async function addCoverageXdebug(
|
|
|
55
49
|
* Function to setup PCOV
|
|
56
50
|
*
|
|
57
51
|
* @param version
|
|
58
|
-
* @param
|
|
52
|
+
* @param os
|
|
59
53
|
* @param pipe
|
|
60
54
|
*/
|
|
61
55
|
export async function addCoveragePCOV(
|
|
62
56
|
version: string,
|
|
63
|
-
|
|
57
|
+
os: string,
|
|
64
58
|
pipe: string
|
|
65
59
|
): Promise<string> {
|
|
66
60
|
let script = '\n';
|
|
67
61
|
switch (true) {
|
|
68
62
|
default:
|
|
69
63
|
script +=
|
|
70
|
-
(await extensions.addExtension(
|
|
71
|
-
':xdebug:false',
|
|
72
|
-
version,
|
|
73
|
-
os_version,
|
|
74
|
-
true
|
|
75
|
-
)) + pipe;
|
|
76
|
-
script +=
|
|
77
|
-
(await extensions.addExtension('pcov', version, os_version, true)) +
|
|
64
|
+
(await extensions.addExtension(':xdebug:false', version, os, true)) +
|
|
78
65
|
pipe;
|
|
79
66
|
script +=
|
|
80
|
-
(await
|
|
67
|
+
(await extensions.addExtension('pcov', version, os, true)) + pipe;
|
|
68
|
+
script += (await config.addINIValues('pcov.enabled=1', os, true)) + '\n';
|
|
81
69
|
|
|
82
70
|
// success
|
|
83
71
|
script += await utils.addLog(
|
|
84
72
|
'$tick',
|
|
85
73
|
'coverage: pcov',
|
|
86
74
|
'PCOV enabled as coverage driver',
|
|
87
|
-
|
|
75
|
+
os
|
|
88
76
|
);
|
|
89
77
|
// version is not supported
|
|
90
78
|
break;
|
|
@@ -94,7 +82,7 @@ export async function addCoveragePCOV(
|
|
|
94
82
|
'$cross',
|
|
95
83
|
'pcov',
|
|
96
84
|
'PHP 7.1 or newer is required',
|
|
97
|
-
|
|
85
|
+
os
|
|
98
86
|
);
|
|
99
87
|
break;
|
|
100
88
|
}
|
|
@@ -106,31 +94,20 @@ export async function addCoveragePCOV(
|
|
|
106
94
|
* Function to disable Xdebug and PCOV
|
|
107
95
|
*
|
|
108
96
|
* @param version
|
|
109
|
-
* @param
|
|
97
|
+
* @param os
|
|
110
98
|
* @param pipe
|
|
111
99
|
*/
|
|
112
100
|
export async function disableCoverage(
|
|
113
101
|
version: string,
|
|
114
|
-
|
|
102
|
+
os: string,
|
|
115
103
|
pipe: string
|
|
116
104
|
): Promise<string> {
|
|
117
105
|
let script = '\n';
|
|
118
106
|
script +=
|
|
119
|
-
(await extensions.addExtension(':pcov:false', version,
|
|
120
|
-
pipe;
|
|
107
|
+
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
|
121
108
|
script +=
|
|
122
|
-
(await extensions.addExtension(
|
|
123
|
-
|
|
124
|
-
version,
|
|
125
|
-
os_version,
|
|
126
|
-
true
|
|
127
|
-
)) + pipe;
|
|
128
|
-
script += await utils.addLog(
|
|
129
|
-
'$tick',
|
|
130
|
-
'none',
|
|
131
|
-
'Disabled Xdebug and PCOV',
|
|
132
|
-
os_version
|
|
133
|
-
);
|
|
109
|
+
(await extensions.addExtension(':xdebug:false', version, os, true)) + pipe;
|
|
110
|
+
script += await utils.addLog('$tick', 'none', 'Disabled Xdebug and PCOV', os);
|
|
134
111
|
|
|
135
112
|
return script;
|
|
136
113
|
}
|
|
@@ -140,29 +117,27 @@ export async function disableCoverage(
|
|
|
140
117
|
*
|
|
141
118
|
* @param coverage_driver
|
|
142
119
|
* @param version
|
|
143
|
-
* @param
|
|
120
|
+
* @param os
|
|
144
121
|
*/
|
|
145
122
|
export async function addCoverage(
|
|
146
123
|
coverage_driver: string,
|
|
147
124
|
version: string,
|
|
148
|
-
|
|
125
|
+
os: string
|
|
149
126
|
): Promise<string> {
|
|
150
127
|
coverage_driver = coverage_driver.toLowerCase();
|
|
151
|
-
const script: string =
|
|
152
|
-
|
|
153
|
-
const pipe: string = (await utils.suppressOutput(os_version)) + '\n';
|
|
128
|
+
const script: string = '\n' + (await utils.stepLog('Setup Coverage', os));
|
|
129
|
+
const pipe: string = (await utils.suppressOutput(os)) + '\n';
|
|
154
130
|
switch (coverage_driver) {
|
|
155
131
|
case 'pcov':
|
|
156
|
-
return script + (await addCoveragePCOV(version,
|
|
132
|
+
return script + (await addCoveragePCOV(version, os, pipe));
|
|
157
133
|
case 'xdebug':
|
|
158
134
|
case 'xdebug2':
|
|
159
135
|
case 'xdebug3':
|
|
160
136
|
return (
|
|
161
|
-
script +
|
|
162
|
-
(await addCoverageXdebug(coverage_driver, version, os_version, pipe))
|
|
137
|
+
script + (await addCoverageXdebug(coverage_driver, version, os, pipe))
|
|
163
138
|
);
|
|
164
139
|
case 'none':
|
|
165
|
-
return script + (await disableCoverage(version,
|
|
140
|
+
return script + (await disableCoverage(version, os, pipe));
|
|
166
141
|
default:
|
|
167
142
|
return '';
|
|
168
143
|
}
|
package/src/extensions.ts
CHANGED
|
@@ -31,12 +31,12 @@ export async function addExtensionDarwin(
|
|
|
31
31
|
case /.+-.+\/.+@.+/.test(extension):
|
|
32
32
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
33
33
|
return;
|
|
34
|
-
// match 5.3blackfire...8.
|
|
35
|
-
// match 5.3blackfire-(semver)...8.
|
|
34
|
+
// match 5.3blackfire...8.1blackfire
|
|
35
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
36
36
|
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
37
37
|
// match 5.3ioncube...7.4ioncube
|
|
38
38
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
39
|
-
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
39
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
40
40
|
version_extension
|
|
41
41
|
):
|
|
42
42
|
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
@@ -44,9 +44,10 @@ export async function addExtensionDarwin(
|
|
|
44
44
|
):
|
|
45
45
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
46
46
|
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
|
47
|
+
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
|
47
48
|
add_script += await utils.customPackage(
|
|
48
49
|
ext_name,
|
|
49
|
-
'
|
|
50
|
+
'extensions',
|
|
50
51
|
extension,
|
|
51
52
|
'darwin'
|
|
52
53
|
);
|
|
@@ -73,11 +74,11 @@ export async function addExtensionDarwin(
|
|
|
73
74
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
74
75
|
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
|
75
76
|
return;
|
|
76
|
-
// match 5.6 and newer - amqp, apcu, expect, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
|
77
|
+
// match 5.6 and newer - amqp, apcu, expect, gnupg, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
|
77
78
|
// match 7.1 and newer - pcov
|
|
78
79
|
// match 5.6 to 7.4 - propro
|
|
79
80
|
// match 7.0 and newer - vips, xlswriter
|
|
80
|
-
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|mailparse|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
|
+
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
82
|
version_extension
|
|
82
83
|
):
|
|
83
84
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
|
@@ -127,22 +128,22 @@ export async function addExtensionWindows(
|
|
|
127
128
|
case /^none$/.test(ext_name):
|
|
128
129
|
add_script += '\nDisable-AllShared';
|
|
129
130
|
break;
|
|
130
|
-
// match 5.3blackfire...8.
|
|
131
|
-
// match 5.3blackfire-(semver)...8.
|
|
131
|
+
// match 5.3blackfire...8.1blackfire
|
|
132
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
132
133
|
// match pdo_oci and oci8
|
|
133
134
|
// match 5.3ioncube...7.4ioncube
|
|
134
135
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
135
|
-
// match 7.1pecl_http...8.
|
|
136
|
-
case /^(5\.[3-6]|7\.[0-4]|8\.
|
|
136
|
+
// match 7.1pecl_http...8.1pecl_http and 7.1http...8.1http
|
|
137
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.1)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
137
138
|
version_extension
|
|
138
139
|
):
|
|
139
140
|
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
|
140
141
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
141
142
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
142
|
-
case /^(7\.[1-4]|8\.
|
|
143
|
+
case /^(7\.[1-4]|8\.1)(pecl_)?http/.test(version_extension):
|
|
143
144
|
add_script += await utils.customPackage(
|
|
144
145
|
ext_name,
|
|
145
|
-
'
|
|
146
|
+
'extensions',
|
|
146
147
|
extension,
|
|
147
148
|
'win32'
|
|
148
149
|
);
|
|
@@ -231,7 +232,9 @@ export async function addExtensionLinux(
|
|
|
231
232
|
let remove_script = '';
|
|
232
233
|
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
233
234
|
const version_extension: string = version + extension;
|
|
234
|
-
const [ext_name, ext_version]: string[] = extension
|
|
235
|
+
const [ext_name, ext_version]: string[] = extension
|
|
236
|
+
.split(/-(.+)/)
|
|
237
|
+
.filter(Boolean);
|
|
235
238
|
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
236
239
|
|
|
237
240
|
switch (true) {
|
|
@@ -247,13 +250,13 @@ export async function addExtensionLinux(
|
|
|
247
250
|
case /.+-.+\/.+@.+/.test(extension):
|
|
248
251
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
249
252
|
return;
|
|
250
|
-
// match 5.3blackfire...8.
|
|
251
|
-
// match 5.3blackfire-(semver)...8.
|
|
253
|
+
// match 5.3blackfire...8.1blackfire
|
|
254
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
252
255
|
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
|
253
256
|
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
254
257
|
// match 5.3ioncube...7.4ioncube
|
|
255
258
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
256
|
-
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
259
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
257
260
|
version_extension
|
|
258
261
|
):
|
|
259
262
|
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
|
@@ -265,9 +268,10 @@ export async function addExtensionLinux(
|
|
|
265
268
|
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
|
266
269
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
267
270
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
271
|
+
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
|
268
272
|
add_script += await utils.customPackage(
|
|
269
273
|
ext_name,
|
|
270
|
-
'
|
|
274
|
+
'extensions',
|
|
271
275
|
extension,
|
|
272
276
|
'linux'
|
|
273
277
|
);
|
|
@@ -325,20 +329,20 @@ export async function addExtensionLinux(
|
|
|
325
329
|
*
|
|
326
330
|
* @param extension_csv
|
|
327
331
|
* @param version
|
|
328
|
-
* @param
|
|
332
|
+
* @param os
|
|
329
333
|
* @param no_step
|
|
330
334
|
*/
|
|
331
335
|
export async function addExtension(
|
|
332
336
|
extension_csv: string,
|
|
333
337
|
version: string,
|
|
334
|
-
|
|
338
|
+
os: string,
|
|
335
339
|
no_step = false
|
|
336
340
|
): Promise<string> {
|
|
337
|
-
const log: string = await utils.stepLog('Setup Extensions',
|
|
341
|
+
const log: string = await utils.stepLog('Setup Extensions', os);
|
|
338
342
|
let script = '\n';
|
|
339
343
|
switch (no_step) {
|
|
340
344
|
case true:
|
|
341
|
-
script += log + (await utils.suppressOutput(
|
|
345
|
+
script += log + (await utils.suppressOutput(os));
|
|
342
346
|
break;
|
|
343
347
|
case false:
|
|
344
348
|
default:
|
|
@@ -346,7 +350,7 @@ export async function addExtension(
|
|
|
346
350
|
break;
|
|
347
351
|
}
|
|
348
352
|
|
|
349
|
-
switch (
|
|
353
|
+
switch (os) {
|
|
350
354
|
case 'win32':
|
|
351
355
|
return script + (await addExtensionWindows(extension_csv, version));
|
|
352
356
|
case 'darwin':
|
|
@@ -355,8 +359,8 @@ export async function addExtension(
|
|
|
355
359
|
return script + (await addExtensionLinux(extension_csv, version));
|
|
356
360
|
default:
|
|
357
361
|
return await utils.log(
|
|
358
|
-
'Platform ' +
|
|
359
|
-
|
|
362
|
+
'Platform ' + os + ' is not supported',
|
|
363
|
+
os,
|
|
360
364
|
'error'
|
|
361
365
|
);
|
|
362
366
|
}
|
package/src/fetch.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {IncomingMessage, OutgoingHttpHeaders} from 'http';
|
|
2
|
+
import * as https from 'https';
|
|
3
|
+
import * as url from 'url';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Function to fetch an URL
|
|
7
|
+
*
|
|
8
|
+
* @param input_url
|
|
9
|
+
* @param auth_token
|
|
10
|
+
*/
|
|
11
|
+
export async function fetch(
|
|
12
|
+
input_url: string,
|
|
13
|
+
auth_token?: string,
|
|
14
|
+
redirect_count = 5
|
|
15
|
+
): Promise<Record<string, string>> {
|
|
16
|
+
const fetch_promise: Promise<Record<string, string>> = new Promise(
|
|
17
|
+
resolve => {
|
|
18
|
+
const url_object: url.UrlObject = new url.URL(input_url);
|
|
19
|
+
const headers: OutgoingHttpHeaders = {
|
|
20
|
+
'User-Agent': `Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`
|
|
21
|
+
};
|
|
22
|
+
if (auth_token) {
|
|
23
|
+
headers.authorization = 'Bearer ' + auth_token;
|
|
24
|
+
}
|
|
25
|
+
const options: https.RequestOptions = {
|
|
26
|
+
hostname: url_object.hostname,
|
|
27
|
+
path: url_object.pathname,
|
|
28
|
+
headers: headers
|
|
29
|
+
};
|
|
30
|
+
const req = https.get(options, (res: IncomingMessage) => {
|
|
31
|
+
if (res.statusCode === 200) {
|
|
32
|
+
let body = '';
|
|
33
|
+
res.setEncoding('utf8');
|
|
34
|
+
res.on('data', chunk => (body += chunk));
|
|
35
|
+
res.on('end', () => resolve({data: `${body}`}));
|
|
36
|
+
} else if (
|
|
37
|
+
[301, 302, 303, 307, 308].includes(res.statusCode as number)
|
|
38
|
+
) {
|
|
39
|
+
if (redirect_count > 0 && res.headers.location) {
|
|
40
|
+
fetch(res.headers.location, auth_token, redirect_count--).then(
|
|
41
|
+
resolve
|
|
42
|
+
);
|
|
43
|
+
} else {
|
|
44
|
+
resolve({error: `${res.statusCode}: Redirect error`});
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
resolve({error: `${res.statusCode}: ${res.statusMessage}`});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
req.end();
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
return await fetch_promise;
|
|
54
|
+
}
|
package/src/install.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
1
3
|
import {exec} from '@actions/exec';
|
|
2
4
|
import * as core from '@actions/core';
|
|
3
5
|
import * as config from './config';
|
|
@@ -9,66 +11,51 @@ import * as utils from './utils';
|
|
|
9
11
|
/**
|
|
10
12
|
* Build the script
|
|
11
13
|
*
|
|
12
|
-
* @param
|
|
13
|
-
* @param version
|
|
14
|
-
* @param os_version
|
|
14
|
+
* @param os
|
|
15
15
|
*/
|
|
16
|
-
export async function getScript(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const url = 'https://setup-php.com/sponsor';
|
|
22
|
-
// taking inputs
|
|
16
|
+
export async function getScript(os: string): Promise<string> {
|
|
17
|
+
const url = 'https://setup-php.com/support-ukraine';
|
|
18
|
+
const filename = os + (await utils.scriptExtension(os));
|
|
19
|
+
const script_path = path.join(__dirname, '../src/scripts', filename);
|
|
20
|
+
const run_path = script_path.replace(os, 'run');
|
|
23
21
|
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
|
|
24
22
|
const extension_csv: string = await utils.getInput('extensions', false);
|
|
25
23
|
const ini_values_csv: string = await utils.getInput('ini-values', false);
|
|
26
24
|
const coverage_driver: string = await utils.getInput('coverage', false);
|
|
27
25
|
const tools_csv: string = await utils.getInput('tools', false);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
const version: string = await utils.parseVersion(
|
|
27
|
+
await utils.getInput('php-version', true)
|
|
28
|
+
);
|
|
29
|
+
const ini_file: string = await utils.parseIniFile(
|
|
30
|
+
await utils.getInput('ini-file', false)
|
|
31
|
+
);
|
|
32
|
+
let script = await utils.joins('.', script_path, version, ini_file);
|
|
31
33
|
if (extension_csv) {
|
|
32
|
-
script += await extensions.addExtension(extension_csv, version,
|
|
34
|
+
script += await extensions.addExtension(extension_csv, version, os);
|
|
33
35
|
}
|
|
36
|
+
script += await tools.addTools(tools_csv, version, os);
|
|
34
37
|
if (coverage_driver) {
|
|
35
|
-
script += await coverage.addCoverage(coverage_driver, version,
|
|
38
|
+
script += await coverage.addCoverage(coverage_driver, version, os);
|
|
36
39
|
}
|
|
37
40
|
if (ini_values_csv) {
|
|
38
|
-
script += await config.addINIValues(ini_values_csv,
|
|
41
|
+
script += await config.addINIValues(ini_values_csv, os);
|
|
39
42
|
}
|
|
40
|
-
script += '\n' + (await utils.stepLog(
|
|
41
|
-
script += '\n' + (await utils.addLog('$tick', '
|
|
43
|
+
script += '\n' + (await utils.stepLog(`#StandWithUkraine`, os));
|
|
44
|
+
script += '\n' + (await utils.addLog('$tick', 'read-more', url, os));
|
|
45
|
+
|
|
46
|
+
fs.writeFileSync(run_path, script, {mode: 0o755});
|
|
42
47
|
|
|
43
|
-
return
|
|
48
|
+
return run_path;
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
/**
|
|
47
52
|
* Run the script
|
|
48
53
|
*/
|
|
49
54
|
export async function run(): Promise<void> {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const version: string = await utils.parseVersion(
|
|
58
|
-
await utils.getInput('php-version', true)
|
|
59
|
-
);
|
|
60
|
-
if (version) {
|
|
61
|
-
const os_version: string = process.platform;
|
|
62
|
-
const tool = await utils.scriptTool(os_version);
|
|
63
|
-
const script = os_version + (await utils.scriptExtension(os_version));
|
|
64
|
-
const location = await getScript(script, version, os_version);
|
|
65
|
-
await exec(await utils.joins(tool, location, version, __dirname));
|
|
66
|
-
} else {
|
|
67
|
-
core.setFailed('Unable to get the PHP version');
|
|
68
|
-
}
|
|
69
|
-
} catch (error) {
|
|
70
|
-
core.setFailed((error as Error).message);
|
|
71
|
-
}
|
|
55
|
+
const os: string = process.platform;
|
|
56
|
+
const tool = await utils.scriptTool(os);
|
|
57
|
+
const run_path = await getScript(os);
|
|
58
|
+
await exec(tool + run_path);
|
|
72
59
|
}
|
|
73
60
|
|
|
74
61
|
// call the run function
|
package/src/scripts/darwin.sh
CHANGED
|
@@ -23,11 +23,14 @@ disable_dependency_extensions() {
|
|
|
23
23
|
disable_extension_helper() {
|
|
24
24
|
local extension=$1
|
|
25
25
|
local disable_dependents=${2:-false}
|
|
26
|
+
get_extension_map
|
|
26
27
|
if [ "$disable_dependents" = "true" ]; then
|
|
27
28
|
disable_extension_dependents "$extension"
|
|
28
29
|
fi
|
|
29
30
|
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
|
30
|
-
sudo rm -rf "$scan_dir"/*"$extension"*
|
|
31
|
+
sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions
|
|
32
|
+
mkdir -p /tmp/extdisabled/"$version"
|
|
33
|
+
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
# Function to fetch a brew tap.
|
|
@@ -57,12 +60,32 @@ add_brew_tap() {
|
|
|
57
60
|
fi
|
|
58
61
|
}
|
|
59
62
|
|
|
63
|
+
# Function to get extension name from brew formula.
|
|
64
|
+
get_extension_from_formula() {
|
|
65
|
+
local formula=$1
|
|
66
|
+
local extension
|
|
67
|
+
extension=$(grep "$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
|
68
|
+
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
69
|
+
echo "$extension"
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Function to copy extension binaries to the extension directory.
|
|
73
|
+
copy_brew_extensions() {
|
|
74
|
+
local formula=$1
|
|
75
|
+
formula_file="$tap_dir/$ext_tap/Formula/$formula@$version.rb"
|
|
76
|
+
deps="$(grep -Eo 'depends_on "shivammathur[^"]+' "$formula_file" | cut -d '/' -f 3 | tr '\n' ' ')"
|
|
77
|
+
IFS=' ' read -r -a deps <<< "$formula@$version $deps"
|
|
78
|
+
for dependency in "${deps[@]}"; do
|
|
79
|
+
extension_file="$brew_prefix/opt/$dependency/$(get_extension_from_formula "${dependency%@*}").so"
|
|
80
|
+
[ -e "$extension_file" ] && sudo cp "$extension_file" "$ext_dir"
|
|
81
|
+
done
|
|
82
|
+
}
|
|
83
|
+
|
|
60
84
|
# Function to install a php extension from shivammathur/extensions tap.
|
|
61
85
|
add_brew_extension() {
|
|
62
86
|
formula=$1
|
|
63
87
|
prefix=$2
|
|
64
|
-
extension
|
|
65
|
-
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
88
|
+
extension="$(get_extension_from_formula "$formula")"
|
|
66
89
|
enable_extension "$extension" "$prefix"
|
|
67
90
|
if check_extension "$extension"; then
|
|
68
91
|
add_log "${tick:?}" "$extension" "Enabled"
|
|
@@ -73,27 +96,22 @@ add_brew_extension() {
|
|
|
73
96
|
update_dependencies >/dev/null 2>&1
|
|
74
97
|
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
|
75
98
|
brew install -f "$formula@$version" >/dev/null 2>&1
|
|
76
|
-
|
|
99
|
+
copy_brew_extensions "$formula"
|
|
77
100
|
add_extension_log "$extension" "Installed and enabled"
|
|
78
101
|
fi
|
|
79
102
|
}
|
|
80
103
|
|
|
81
|
-
#
|
|
82
|
-
|
|
104
|
+
# Helper function to add an extension.
|
|
105
|
+
add_extension_helper() {
|
|
83
106
|
local extension=$1
|
|
84
107
|
prefix=$2
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
add_log "${tick:?}" "$extension" "Enabled"
|
|
108
|
+
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
|
109
|
+
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
|
88
110
|
else
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
else
|
|
92
|
-
pecl_install "$extension" >/dev/null 2>&1 &&
|
|
93
|
-
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
|
94
|
-
fi
|
|
95
|
-
add_extension_log "$extension" "Installed and enabled"
|
|
111
|
+
pecl_install "$extension" >/dev/null 2>&1 &&
|
|
112
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
|
96
113
|
fi
|
|
114
|
+
add_extension_log "$extension" "Installed and enabled"
|
|
97
115
|
}
|
|
98
116
|
|
|
99
117
|
# Function to handle request to add phpize and php-config.
|
|
@@ -104,6 +122,7 @@ add_devtools() {
|
|
|
104
122
|
|
|
105
123
|
# Function to handle request to add PECL.
|
|
106
124
|
add_pecl() {
|
|
125
|
+
enable_extension xml extension >/dev/null 2>&1
|
|
107
126
|
configure_pecl >/dev/null 2>&1
|
|
108
127
|
pear_version=$(get_tool_version "pecl" "version")
|
|
109
128
|
add_log "${tick:?}" "PECL" "Found PECL $pear_version"
|
|
@@ -168,7 +187,7 @@ fix_dependencies() {
|
|
|
168
187
|
get_brewed_php() {
|
|
169
188
|
php_cellar="$brew_prefix"/Cellar/php
|
|
170
189
|
if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
|
171
|
-
|
|
190
|
+
php_semver | cut -c 1-3
|
|
172
191
|
else
|
|
173
192
|
echo 'false';
|
|
174
193
|
fi
|
|
@@ -196,9 +215,31 @@ php_extra_version() {
|
|
|
196
215
|
fi
|
|
197
216
|
}
|
|
198
217
|
|
|
218
|
+
# Function to set php.ini
|
|
219
|
+
add_php_config() {
|
|
220
|
+
if ! [ -e "$ini_dir"/php.ini-development ]; then
|
|
221
|
+
sudo cp "$ini_dir"/php.ini "$ini_dir"/php.ini-development
|
|
222
|
+
fi
|
|
223
|
+
if [[ "$ini" = "production" || "$ini" = "development" ]]; then
|
|
224
|
+
sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini
|
|
225
|
+
elif [ "$ini" = "none" ]; then
|
|
226
|
+
echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
|
|
227
|
+
fi
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
# Function to get scan directory.
|
|
231
|
+
get_scan_dir() {
|
|
232
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
233
|
+
php --ini | grep additional | sed -e "s|.*: s*||"
|
|
234
|
+
else
|
|
235
|
+
echo "$ini_dir"/conf.d
|
|
236
|
+
fi
|
|
237
|
+
}
|
|
238
|
+
|
|
199
239
|
# Function to Setup PHP.
|
|
200
240
|
setup_php() {
|
|
201
241
|
step_log "Setup PHP"
|
|
242
|
+
php_config="$(command -v php-config 2>/dev/null)"
|
|
202
243
|
existing_version=$(get_brewed_php)
|
|
203
244
|
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
204
245
|
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
|
@@ -213,45 +254,52 @@ setup_php() {
|
|
|
213
254
|
status="Found"
|
|
214
255
|
fix_dependencies >/dev/null 2>&1
|
|
215
256
|
fi
|
|
216
|
-
|
|
257
|
+
php_config="$(command -v php-config)"
|
|
258
|
+
ext_dir="$(grep 'extension_dir=' "$php_config" | cut -d "'" -f 2)"
|
|
259
|
+
ini_dir="$(php_ini_path)"
|
|
260
|
+
scan_dir="$(get_scan_dir)"
|
|
261
|
+
ini_file="$ini_dir"/php.ini
|
|
262
|
+
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
217
263
|
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
|
264
|
+
semver="$(php_semver)"
|
|
265
|
+
extra_version="$(php_extra_version)"
|
|
218
266
|
configure_php
|
|
219
|
-
|
|
220
|
-
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
|
221
|
-
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
222
|
-
semver=$(php_semver)
|
|
223
|
-
extra_version=$(php_extra_version)
|
|
267
|
+
set_output "php-version" "$semver"
|
|
224
268
|
if [ "${semver%.*}" != "$version" ]; then
|
|
225
269
|
add_log "${cross:?}" "PHP" "Could not setup PHP $version"
|
|
226
270
|
exit 1
|
|
227
271
|
fi
|
|
228
272
|
|
|
229
|
-
sudo cp "$
|
|
230
|
-
echo "::set-output name=php-version::$semver"
|
|
273
|
+
sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
|
231
274
|
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
|
232
275
|
}
|
|
233
276
|
|
|
234
277
|
# Variables
|
|
235
|
-
version=$1
|
|
236
|
-
|
|
278
|
+
version=${1:-'8.1'}
|
|
279
|
+
ini=${2:-'production'}
|
|
280
|
+
src=${0%/*}/..
|
|
237
281
|
php_formula=shivammathur/php/php@"$version"
|
|
238
|
-
|
|
239
|
-
|
|
282
|
+
brew_path="$(command -v brew)"
|
|
283
|
+
brew_path_dir="$(dirname "$brew_path")"
|
|
284
|
+
brew_prefix="$brew_path_dir"/..
|
|
285
|
+
brew_repo="$brew_path_dir/$(dirname "$(readlink "$brew_path")")"/..
|
|
240
286
|
tap_dir="$brew_repo"/Library/Taps
|
|
241
287
|
core_repo="$tap_dir"/homebrew/homebrew-core
|
|
242
|
-
scripts="$
|
|
288
|
+
scripts="$src"/scripts
|
|
243
289
|
ext_tap=shivammathur/homebrew-extensions
|
|
244
290
|
php_tap=shivammathur/homebrew-php
|
|
245
291
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
246
292
|
export HOMEBREW_DEVELOPER=1
|
|
247
|
-
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
248
293
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
|
294
|
+
export HOMEBREW_NO_ENV_HINTS=1
|
|
295
|
+
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
249
296
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
250
297
|
|
|
251
298
|
# shellcheck source=.
|
|
252
|
-
. "${scripts:?}"/
|
|
299
|
+
. "${scripts:?}"/unix.sh
|
|
253
300
|
. "${scripts:?}"/tools/add_tools.sh
|
|
254
|
-
. "${scripts:?}"/
|
|
301
|
+
. "${scripts:?}"/extensions/source.sh
|
|
302
|
+
. "${scripts:?}"/extensions/add_extensions.sh
|
|
255
303
|
read_env
|
|
256
304
|
self_hosted_setup
|
|
257
305
|
setup_php
|