setup-php 2.16.0 → 2.17.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 +154 -141
- package/lib/config.d.ts +3 -0
- package/lib/config.js +72 -0
- package/lib/config.js.map +1 -0
- package/lib/coverage.d.ts +5 -0
- package/lib/coverage.js +98 -0
- package/lib/coverage.js.map +1 -0
- package/lib/extensions.d.ts +4 -0
- package/lib/extensions.js +215 -0
- package/lib/extensions.js.map +1 -0
- package/lib/fetch.d.ts +1 -0
- package/lib/fetch.js +63 -0
- package/lib/fetch.js.map +1 -0
- package/lib/install.d.ts +2 -0
- package/lib/install.js +76 -0
- package/lib/install.js.map +1 -0
- package/lib/tools.d.ts +23 -0
- package/lib/tools.js +368 -0
- package/lib/tools.js.map +1 -0
- package/lib/utils.d.ts +21 -0
- package/lib/utils.js +262 -0
- package/lib/utils.js.map +1 -0
- package/package.json +18 -17
- 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 +23 -19
- package/src/fetch.ts +54 -0
- package/src/install.ts +27 -40
- package/src/scripts/darwin.sh +58 -30
- package/src/scripts/extensions/add_extensions.ps1 +194 -0
- package/src/scripts/extensions/add_extensions.sh +184 -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 +0 -0
- package/src/scripts/{ext → extensions}/http.sh +4 -15
- 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 +23 -22
- package/src/scripts/extensions/sqlsrv.sh +15 -0
- package/src/scripts/linux.sh +63 -33
- 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 +14 -0
- package/src/scripts/tools/symfony.sh +13 -0
- package/src/scripts/unix.sh +186 -0
- package/src/scripts/win32.ps1 +126 -340
- package/src/tools.ts +56 -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):
|
|
@@ -142,7 +143,7 @@ export async function addExtensionWindows(
|
|
|
142
143
|
case /^(7\.[1-4]|8\.0)(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
|
-
filename: string,
|
|
18
|
-
version: string,
|
|
19
|
-
os_version: string
|
|
20
|
-
): Promise<string> {
|
|
16
|
+
export async function getScript(os: string): Promise<string> {
|
|
21
17
|
const url = 'https://setup-php.com/sponsor';
|
|
22
|
-
|
|
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(`Sponsor setup-php`,
|
|
41
|
-
script += '\n' + (await utils.addLog('$tick', 'setup-php', url,
|
|
43
|
+
script += '\n' + (await utils.stepLog(`Sponsor setup-php`, os));
|
|
44
|
+
script += '\n' + (await utils.addLog('$tick', 'setup-php', 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
31
|
sudo rm -rf "$scan_dir"/*"$extension"*
|
|
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.
|
|
@@ -61,7 +64,7 @@ add_brew_tap() {
|
|
|
61
64
|
add_brew_extension() {
|
|
62
65
|
formula=$1
|
|
63
66
|
prefix=$2
|
|
64
|
-
extension=$(grep "$formula=" "$
|
|
67
|
+
extension=$(grep "$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
|
65
68
|
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
66
69
|
enable_extension "$extension" "$prefix"
|
|
67
70
|
if check_extension "$extension"; then
|
|
@@ -78,22 +81,17 @@ add_brew_extension() {
|
|
|
78
81
|
fi
|
|
79
82
|
}
|
|
80
83
|
|
|
81
|
-
#
|
|
82
|
-
|
|
84
|
+
# Helper function to add an extension.
|
|
85
|
+
add_extension_helper() {
|
|
83
86
|
local extension=$1
|
|
84
87
|
prefix=$2
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
add_log "${tick:?}" "$extension" "Enabled"
|
|
88
|
+
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
|
89
|
+
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
|
88
90
|
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"
|
|
91
|
+
pecl_install "$extension" >/dev/null 2>&1 &&
|
|
92
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
|
96
93
|
fi
|
|
94
|
+
add_extension_log "$extension" "Installed and enabled"
|
|
97
95
|
}
|
|
98
96
|
|
|
99
97
|
# Function to handle request to add phpize and php-config.
|
|
@@ -104,6 +102,7 @@ add_devtools() {
|
|
|
104
102
|
|
|
105
103
|
# Function to handle request to add PECL.
|
|
106
104
|
add_pecl() {
|
|
105
|
+
enable_extension xml extension >/dev/null 2>&1
|
|
107
106
|
configure_pecl >/dev/null 2>&1
|
|
108
107
|
pear_version=$(get_tool_version "pecl" "version")
|
|
109
108
|
add_log "${tick:?}" "PECL" "Found PECL $pear_version"
|
|
@@ -168,7 +167,7 @@ fix_dependencies() {
|
|
|
168
167
|
get_brewed_php() {
|
|
169
168
|
php_cellar="$brew_prefix"/Cellar/php
|
|
170
169
|
if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
|
171
|
-
|
|
170
|
+
php_semver | cut -c 1-3
|
|
172
171
|
else
|
|
173
172
|
echo 'false';
|
|
174
173
|
fi
|
|
@@ -196,9 +195,31 @@ php_extra_version() {
|
|
|
196
195
|
fi
|
|
197
196
|
}
|
|
198
197
|
|
|
198
|
+
# Function to set php.ini
|
|
199
|
+
add_php_config() {
|
|
200
|
+
if ! [ -e "$ini_dir"/php.ini-development ]; then
|
|
201
|
+
sudo cp "$ini_dir"/php.ini "$ini_dir"/php.ini-development
|
|
202
|
+
fi
|
|
203
|
+
if [[ "$ini" = "production" || "$ini" = "development" ]]; then
|
|
204
|
+
sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini
|
|
205
|
+
elif [ "$ini" = "none" ]; then
|
|
206
|
+
echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
|
|
207
|
+
fi
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
# Function to get scan directory.
|
|
211
|
+
get_scan_dir() {
|
|
212
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
213
|
+
php --ini | grep additional | sed -e "s|.*: s*||"
|
|
214
|
+
else
|
|
215
|
+
echo "$ini_dir"/conf.d
|
|
216
|
+
fi
|
|
217
|
+
}
|
|
218
|
+
|
|
199
219
|
# Function to Setup PHP.
|
|
200
220
|
setup_php() {
|
|
201
221
|
step_log "Setup PHP"
|
|
222
|
+
php_config="$(command -v php-config 2>/dev/null)"
|
|
202
223
|
existing_version=$(get_brewed_php)
|
|
203
224
|
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
204
225
|
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
|
@@ -213,45 +234,52 @@ setup_php() {
|
|
|
213
234
|
status="Found"
|
|
214
235
|
fix_dependencies >/dev/null 2>&1
|
|
215
236
|
fi
|
|
216
|
-
|
|
237
|
+
php_config="$(command -v php-config)"
|
|
238
|
+
ext_dir="$(grep 'extension_dir=' "$php_config" | cut -d "'" -f 2)"
|
|
239
|
+
ini_dir="$(php_ini_path)"
|
|
240
|
+
scan_dir="$(get_scan_dir)"
|
|
241
|
+
ini_file="$ini_dir"/php.ini
|
|
242
|
+
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
217
243
|
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
|
244
|
+
semver="$(php_semver)"
|
|
245
|
+
extra_version="$(php_extra_version)"
|
|
218
246
|
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)
|
|
247
|
+
set_output "php-version" "$semver"
|
|
224
248
|
if [ "${semver%.*}" != "$version" ]; then
|
|
225
249
|
add_log "${cross:?}" "PHP" "Could not setup PHP $version"
|
|
226
250
|
exit 1
|
|
227
251
|
fi
|
|
228
252
|
|
|
229
|
-
sudo cp "$
|
|
230
|
-
echo "::set-output name=php-version::$semver"
|
|
253
|
+
sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
|
231
254
|
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
|
232
255
|
}
|
|
233
256
|
|
|
234
257
|
# Variables
|
|
235
|
-
version=$1
|
|
236
|
-
|
|
258
|
+
version=${1:-'8.1'}
|
|
259
|
+
ini=${2:-'production'}
|
|
260
|
+
src=${0%/*}/..
|
|
237
261
|
php_formula=shivammathur/php/php@"$version"
|
|
238
|
-
|
|
239
|
-
|
|
262
|
+
brew_path="$(command -v brew)"
|
|
263
|
+
brew_path_dir="$(dirname "$brew_path")"
|
|
264
|
+
brew_prefix="$brew_path_dir"/..
|
|
265
|
+
brew_repo="$brew_path_dir/$(dirname "$(readlink "$brew_path")")"/..
|
|
240
266
|
tap_dir="$brew_repo"/Library/Taps
|
|
241
267
|
core_repo="$tap_dir"/homebrew/homebrew-core
|
|
242
|
-
scripts="$
|
|
268
|
+
scripts="$src"/scripts
|
|
243
269
|
ext_tap=shivammathur/homebrew-extensions
|
|
244
270
|
php_tap=shivammathur/homebrew-php
|
|
245
271
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
246
272
|
export HOMEBREW_DEVELOPER=1
|
|
247
|
-
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
248
273
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
|
274
|
+
export HOMEBREW_NO_ENV_HINTS=1
|
|
275
|
+
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
249
276
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
250
277
|
|
|
251
278
|
# shellcheck source=.
|
|
252
|
-
. "${scripts:?}"/
|
|
279
|
+
. "${scripts:?}"/unix.sh
|
|
253
280
|
. "${scripts:?}"/tools/add_tools.sh
|
|
254
|
-
. "${scripts:?}"/
|
|
281
|
+
. "${scripts:?}"/extensions/source.sh
|
|
282
|
+
. "${scripts:?}"/extensions/add_extensions.sh
|
|
255
283
|
read_env
|
|
256
284
|
self_hosted_setup
|
|
257
285
|
setup_php
|