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/tools.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import * as fetch from './fetch';
|
|
1
4
|
import * as utils from './utils';
|
|
2
5
|
|
|
3
6
|
type RS = Record<string, string>;
|
|
@@ -19,7 +22,7 @@ export async function getSemverVersion(data: RS): Promise<string> {
|
|
|
19
22
|
const search: string = data['version_prefix'] + data['version'];
|
|
20
23
|
const url = `https://api.github.com/repos/${data['repository']}/git/matching-refs/tags%2F${search}.`;
|
|
21
24
|
const token: string = await utils.readEnv('COMPOSER_TOKEN');
|
|
22
|
-
const response: RS = await
|
|
25
|
+
const response: RS = await fetch.fetch(url, token);
|
|
23
26
|
if (response.error || response.data === '[]') {
|
|
24
27
|
data['error'] = response.error ?? `No version found with prefix ${search}.`;
|
|
25
28
|
return data['version'];
|
|
@@ -40,20 +43,23 @@ export async function getLatestVersion(data: RS): Promise<string> {
|
|
|
40
43
|
if (!data['version'] && data['fetch_latest'] === 'false') {
|
|
41
44
|
return 'latest';
|
|
42
45
|
}
|
|
43
|
-
const resp: Record<string, string> = await
|
|
46
|
+
const resp: Record<string, string> = await fetch.fetch(
|
|
44
47
|
`${data['github']}/${data['repository']}/releases.atom`
|
|
45
48
|
);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
if (resp['data']) {
|
|
50
|
+
const releases: string[] = [
|
|
51
|
+
...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g)
|
|
52
|
+
].map(match => match[2]);
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
return (
|
|
55
|
+
releases
|
|
56
|
+
.sort((a: string, b: string) =>
|
|
57
|
+
a.localeCompare(b, undefined, {numeric: true})
|
|
58
|
+
)
|
|
59
|
+
.pop() || 'latest'
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
return 'latest';
|
|
57
63
|
}
|
|
58
64
|
|
|
59
65
|
/**
|
|
@@ -180,7 +186,7 @@ export async function getPharUrl(data: RS): Promise<string> {
|
|
|
180
186
|
*/
|
|
181
187
|
export async function addArchive(data: RS): Promise<string> {
|
|
182
188
|
return (
|
|
183
|
-
(await utils.getCommand(data['
|
|
189
|
+
(await utils.getCommand(data['os'], 'tool')) +
|
|
184
190
|
(await utils.joins(data['url'], data['tool'], data['version_parameter']))
|
|
185
191
|
);
|
|
186
192
|
}
|
|
@@ -191,9 +197,15 @@ export async function addArchive(data: RS): Promise<string> {
|
|
|
191
197
|
* @param data
|
|
192
198
|
*/
|
|
193
199
|
export async function addPackage(data: RS): Promise<string> {
|
|
194
|
-
const command = await utils.getCommand(data['
|
|
200
|
+
const command = await utils.getCommand(data['os'], 'composertool');
|
|
195
201
|
const parts: string[] = data['repository'].split('/');
|
|
196
|
-
|
|
202
|
+
const args: string = await utils.joins(
|
|
203
|
+
parts[1],
|
|
204
|
+
data['release'],
|
|
205
|
+
parts[0] + '/',
|
|
206
|
+
data['scope']
|
|
207
|
+
);
|
|
208
|
+
return command + args;
|
|
197
209
|
}
|
|
198
210
|
|
|
199
211
|
/**
|
|
@@ -220,9 +232,9 @@ export async function addBlackfirePlayer(data: RS): Promise<string> {
|
|
|
220
232
|
export async function addComposer(data: RS): Promise<string> {
|
|
221
233
|
const github = data['github'];
|
|
222
234
|
const getcomposer = data['domain'];
|
|
223
|
-
let cache_url = `${github}/shivammathur/composer-cache/releases/latest/download/composer-${
|
|
224
|
-
'
|
|
225
|
-
].replace('latest', 'stable')}.phar`;
|
|
235
|
+
let cache_url = `${github}/shivammathur/composer-cache/releases/latest/download/composer-${
|
|
236
|
+
data['php_version']
|
|
237
|
+
}-${data['version'].replace('latest', 'stable')}.phar`;
|
|
226
238
|
let source_url = `${getcomposer}/composer.phar`;
|
|
227
239
|
switch (true) {
|
|
228
240
|
case /^snapshot$/.test(data['version']):
|
|
@@ -264,7 +276,7 @@ export async function addDeployer(data: RS): Promise<string> {
|
|
|
264
276
|
* @param data
|
|
265
277
|
*/
|
|
266
278
|
export async function addDevTools(data: RS): Promise<string> {
|
|
267
|
-
switch (data['
|
|
279
|
+
switch (data['os']) {
|
|
268
280
|
case 'linux':
|
|
269
281
|
case 'darwin':
|
|
270
282
|
return 'add_devtools ' + data['tool'];
|
|
@@ -277,8 +289,8 @@ export async function addDevTools(data: RS): Promise<string> {
|
|
|
277
289
|
);
|
|
278
290
|
default:
|
|
279
291
|
return await utils.log(
|
|
280
|
-
'Platform ' + data['
|
|
281
|
-
data['
|
|
292
|
+
'Platform ' + data['os'] + ' is not supported',
|
|
293
|
+
data['os'],
|
|
282
294
|
'error'
|
|
283
295
|
);
|
|
284
296
|
}
|
|
@@ -290,7 +302,7 @@ export async function addDevTools(data: RS): Promise<string> {
|
|
|
290
302
|
* @param data
|
|
291
303
|
*/
|
|
292
304
|
export async function addPECL(data: RS): Promise<string> {
|
|
293
|
-
return await utils.getCommand(data['
|
|
305
|
+
return await utils.getCommand(data['os'], 'pecl');
|
|
294
306
|
}
|
|
295
307
|
|
|
296
308
|
/**
|
|
@@ -316,29 +328,23 @@ export async function addPhive(data: RS): Promise<string> {
|
|
|
316
328
|
'$cross',
|
|
317
329
|
'phive',
|
|
318
330
|
'Phive is not supported on PHP ' + data['php_version'],
|
|
319
|
-
data['
|
|
331
|
+
data['os']
|
|
320
332
|
);
|
|
321
333
|
case /5\.6|7\.0/.test(data['php_version']):
|
|
322
|
-
data['version'] =
|
|
334
|
+
data['version'] = '0.12.1';
|
|
323
335
|
break;
|
|
324
336
|
case /7\.1/.test(data['php_version']):
|
|
325
|
-
data['version'] =
|
|
337
|
+
data['version'] = '0.13.5';
|
|
326
338
|
break;
|
|
327
339
|
case /7\.2/.test(data['php_version']):
|
|
328
|
-
data['version'] =
|
|
340
|
+
data['version'] = '0.14.5';
|
|
341
|
+
break;
|
|
342
|
+
case /^latest$/.test(data['version']):
|
|
343
|
+
data['version'] = await getLatestVersion(data);
|
|
329
344
|
break;
|
|
330
345
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
} else {
|
|
334
|
-
data['domain'] = [
|
|
335
|
-
data['github'],
|
|
336
|
-
data['repository'],
|
|
337
|
-
'releases/download',
|
|
338
|
-
data['version']
|
|
339
|
-
].join('/');
|
|
340
|
-
}
|
|
341
|
-
data['url'] = await getPharUrl(data);
|
|
346
|
+
data['extension'] = '-' + data['version'] + data['extension'];
|
|
347
|
+
data['url'] = await getUrl(data);
|
|
342
348
|
return await addArchive(data);
|
|
343
349
|
}
|
|
344
350
|
|
|
@@ -352,39 +358,6 @@ export async function addPHPUnitTools(data: RS): Promise<string> {
|
|
|
352
358
|
return await addArchive(data);
|
|
353
359
|
}
|
|
354
360
|
|
|
355
|
-
/**
|
|
356
|
-
* Function to add Symfony
|
|
357
|
-
*
|
|
358
|
-
* @param data
|
|
359
|
-
*/
|
|
360
|
-
export async function addSymfony(data: RS): Promise<string> {
|
|
361
|
-
let filename: string;
|
|
362
|
-
switch (data['os_version']) {
|
|
363
|
-
case 'linux':
|
|
364
|
-
case 'darwin':
|
|
365
|
-
filename = 'symfony_' + data['os_version'] + '_amd64';
|
|
366
|
-
break;
|
|
367
|
-
case 'win32':
|
|
368
|
-
filename = 'symfony_windows_amd64.exe';
|
|
369
|
-
break;
|
|
370
|
-
default:
|
|
371
|
-
return await utils.log(
|
|
372
|
-
'Platform ' + data['os_version'] + ' is not supported',
|
|
373
|
-
data['os_version'],
|
|
374
|
-
'error'
|
|
375
|
-
);
|
|
376
|
-
}
|
|
377
|
-
if (data['version'] === 'latest') {
|
|
378
|
-
data['uri'] = ['releases/latest/download', filename].join('/');
|
|
379
|
-
} else {
|
|
380
|
-
data['uri'] = ['releases/download', 'v' + data['version'], filename].join(
|
|
381
|
-
'/'
|
|
382
|
-
);
|
|
383
|
-
}
|
|
384
|
-
data['url'] = [data['domain'], data['repository'], data['uri']].join('/');
|
|
385
|
-
return await addArchive(data);
|
|
386
|
-
}
|
|
387
|
-
|
|
388
361
|
/**
|
|
389
362
|
* Function to add WP-CLI
|
|
390
363
|
*
|
|
@@ -406,14 +379,15 @@ export async function addWPCLI(data: RS): Promise<string> {
|
|
|
406
379
|
*
|
|
407
380
|
* @param release
|
|
408
381
|
* @param php_version
|
|
409
|
-
* @param
|
|
382
|
+
* @param os
|
|
410
383
|
*/
|
|
411
384
|
export async function getData(
|
|
412
385
|
release: string,
|
|
413
386
|
php_version: string,
|
|
414
|
-
|
|
387
|
+
os: string
|
|
415
388
|
): Promise<RS> {
|
|
416
|
-
const
|
|
389
|
+
const json_file_path = path.join(__dirname, '../src/configs/tools.json');
|
|
390
|
+
const json_file: string = fs.readFileSync(json_file_path, 'utf8');
|
|
417
391
|
const json_objects: RSRS = JSON.parse(json_file);
|
|
418
392
|
release = release.replace(/\s+/g, '');
|
|
419
393
|
const parts: string[] = release.split(':');
|
|
@@ -444,11 +418,12 @@ export async function getData(
|
|
|
444
418
|
data['github'] = 'https://github.com';
|
|
445
419
|
data['domain'] ??= data['github'];
|
|
446
420
|
data['extension'] ??= '.phar';
|
|
447
|
-
data['
|
|
421
|
+
data['os'] = os;
|
|
448
422
|
data['php_version'] = php_version;
|
|
449
423
|
data['prefix'] = data['github'] === data['domain'] ? 'releases' : '';
|
|
450
424
|
data['verb'] = data['github'] === data['domain'] ? 'download' : '';
|
|
451
425
|
data['fetch_latest'] ??= 'false';
|
|
426
|
+
data['scope'] ??= 'global';
|
|
452
427
|
data['version_parameter'] = JSON.stringify(data['version_parameter']) || '';
|
|
453
428
|
data['version_prefix'] ??= '';
|
|
454
429
|
data['release'] = await getRelease(release, data);
|
|
@@ -468,7 +443,6 @@ export const functionRecord: Record<string, (data: RS) => Promise<string>> = {
|
|
|
468
443
|
phing: addPhing,
|
|
469
444
|
phpunit: addPHPUnitTools,
|
|
470
445
|
phpcpd: addPHPUnitTools,
|
|
471
|
-
symfony: addSymfony,
|
|
472
446
|
wp_cli: addWPCLI
|
|
473
447
|
};
|
|
474
448
|
|
|
@@ -477,22 +451,22 @@ export const functionRecord: Record<string, (data: RS) => Promise<string>> = {
|
|
|
477
451
|
*
|
|
478
452
|
* @param tools_csv
|
|
479
453
|
* @param php_version
|
|
480
|
-
* @param
|
|
454
|
+
* @param os
|
|
481
455
|
*/
|
|
482
456
|
export async function addTools(
|
|
483
457
|
tools_csv: string,
|
|
484
458
|
php_version: string,
|
|
485
|
-
|
|
459
|
+
os: string
|
|
486
460
|
): Promise<string> {
|
|
487
461
|
let script = '\n';
|
|
488
462
|
if (tools_csv === 'none') {
|
|
489
463
|
return '';
|
|
490
464
|
} else {
|
|
491
|
-
script += await utils.stepLog('Setup Tools',
|
|
465
|
+
script += await utils.stepLog('Setup Tools', os);
|
|
492
466
|
}
|
|
493
467
|
const tools_list = await filterList(await utils.CSVArray(tools_csv));
|
|
494
468
|
await utils.asyncForEach(tools_list, async function (release: string) {
|
|
495
|
-
const data: RS = await getData(release, php_version,
|
|
469
|
+
const data: RS = await getData(release, php_version, os);
|
|
496
470
|
script += '\n';
|
|
497
471
|
switch (true) {
|
|
498
472
|
case data['error'] !== undefined:
|
|
@@ -500,7 +474,7 @@ export async function addTools(
|
|
|
500
474
|
'$cross',
|
|
501
475
|
data['tool'],
|
|
502
476
|
data['error'],
|
|
503
|
-
data['
|
|
477
|
+
data['os']
|
|
504
478
|
);
|
|
505
479
|
break;
|
|
506
480
|
case 'phar' === data['type']:
|
|
@@ -515,7 +489,7 @@ export async function addTools(
|
|
|
515
489
|
data['tool'].split('-')[0],
|
|
516
490
|
'tools',
|
|
517
491
|
data['version'],
|
|
518
|
-
data['
|
|
492
|
+
data['os']
|
|
519
493
|
);
|
|
520
494
|
break;
|
|
521
495
|
case 'custom-function' === data['type']:
|
|
@@ -528,7 +502,7 @@ export async function addTools(
|
|
|
528
502
|
'$cross',
|
|
529
503
|
data['tool'],
|
|
530
504
|
'Tool ' + data['tool'] + ' is not supported',
|
|
531
|
-
data['
|
|
505
|
+
data['os']
|
|
532
506
|
);
|
|
533
507
|
break;
|
|
534
508
|
}
|
package/src/utils.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {IncomingMessage, OutgoingHttpHeaders} from 'http';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
import * as https from 'https';
|
|
4
1
|
import * as path from 'path';
|
|
5
|
-
import * as url from 'url';
|
|
6
2
|
import * as core from '@actions/core';
|
|
3
|
+
import * as fetch from './fetch';
|
|
7
4
|
|
|
8
5
|
/**
|
|
9
6
|
* Function to read environment variable and return a string value.
|
|
@@ -47,46 +44,6 @@ export async function getInput(
|
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
/**
|
|
51
|
-
* Function to fetch an URL
|
|
52
|
-
*
|
|
53
|
-
* @param input_url
|
|
54
|
-
* @param auth_token
|
|
55
|
-
*/
|
|
56
|
-
export async function fetch(
|
|
57
|
-
input_url: string,
|
|
58
|
-
auth_token?: string
|
|
59
|
-
): Promise<Record<string, string>> {
|
|
60
|
-
const fetch_promise: Promise<Record<string, string>> = new Promise(
|
|
61
|
-
resolve => {
|
|
62
|
-
const url_object: url.UrlObject = new url.URL(input_url);
|
|
63
|
-
const headers: OutgoingHttpHeaders = {
|
|
64
|
-
'User-Agent': `Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`
|
|
65
|
-
};
|
|
66
|
-
if (auth_token) {
|
|
67
|
-
headers.authorization = 'Bearer ' + auth_token;
|
|
68
|
-
}
|
|
69
|
-
const options: https.RequestOptions = {
|
|
70
|
-
hostname: url_object.hostname,
|
|
71
|
-
path: url_object.pathname,
|
|
72
|
-
headers: headers
|
|
73
|
-
};
|
|
74
|
-
const req = https.get(options, (res: IncomingMessage) => {
|
|
75
|
-
if (res.statusCode != 200) {
|
|
76
|
-
resolve({error: `${res.statusCode}: ${res.statusMessage}`});
|
|
77
|
-
} else {
|
|
78
|
-
let body = '';
|
|
79
|
-
res.setEncoding('utf8');
|
|
80
|
-
res.on('data', chunk => (body += chunk));
|
|
81
|
-
res.on('end', () => resolve({data: `${body}`}));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
req.end();
|
|
85
|
-
}
|
|
86
|
-
);
|
|
87
|
-
return await fetch_promise;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
47
|
/** Function to get manifest URL
|
|
91
48
|
*
|
|
92
49
|
*/
|
|
@@ -103,7 +60,7 @@ export async function parseVersion(version: string): Promise<string> {
|
|
|
103
60
|
const manifest = await getManifestURL();
|
|
104
61
|
switch (true) {
|
|
105
62
|
case /^(latest|nightly|\d+\.x)$/.test(version):
|
|
106
|
-
return JSON.parse((await fetch(manifest))['data'])[version];
|
|
63
|
+
return JSON.parse((await fetch.fetch(manifest))['data'])[version];
|
|
107
64
|
default:
|
|
108
65
|
switch (true) {
|
|
109
66
|
case version.length > 1:
|
|
@@ -114,6 +71,22 @@ export async function parseVersion(version: string): Promise<string> {
|
|
|
114
71
|
}
|
|
115
72
|
}
|
|
116
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Function to parse ini file.
|
|
76
|
+
*
|
|
77
|
+
* @param ini_file
|
|
78
|
+
*/
|
|
79
|
+
export async function parseIniFile(ini_file: string): Promise<string> {
|
|
80
|
+
switch (true) {
|
|
81
|
+
case /^(production|development|none)$/.test(ini_file):
|
|
82
|
+
return ini_file;
|
|
83
|
+
case /php\.ini-(production|development)$/.test(ini_file):
|
|
84
|
+
return ini_file.split('-')[1];
|
|
85
|
+
default:
|
|
86
|
+
return 'production';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
117
90
|
/**
|
|
118
91
|
* Async foreach loop
|
|
119
92
|
*
|
|
@@ -155,15 +128,15 @@ export async function color(type: string): Promise<string> {
|
|
|
155
128
|
* Log to console
|
|
156
129
|
*
|
|
157
130
|
* @param message
|
|
158
|
-
* @param
|
|
131
|
+
* @param os
|
|
159
132
|
* @param log_type
|
|
160
133
|
*/
|
|
161
134
|
export async function log(
|
|
162
135
|
message: string,
|
|
163
|
-
|
|
136
|
+
os: string,
|
|
164
137
|
log_type: string
|
|
165
138
|
): Promise<string> {
|
|
166
|
-
switch (
|
|
139
|
+
switch (os) {
|
|
167
140
|
case 'win32':
|
|
168
141
|
return (
|
|
169
142
|
'printf "\\033[' +
|
|
@@ -186,24 +159,17 @@ export async function log(
|
|
|
186
159
|
* Function to log a step
|
|
187
160
|
*
|
|
188
161
|
* @param message
|
|
189
|
-
* @param
|
|
162
|
+
* @param os
|
|
190
163
|
*/
|
|
191
|
-
export async function stepLog(
|
|
192
|
-
|
|
193
|
-
os_version: string
|
|
194
|
-
): Promise<string> {
|
|
195
|
-
switch (os_version) {
|
|
164
|
+
export async function stepLog(message: string, os: string): Promise<string> {
|
|
165
|
+
switch (os) {
|
|
196
166
|
case 'win32':
|
|
197
167
|
return 'Step-Log "' + message + '"';
|
|
198
168
|
case 'linux':
|
|
199
169
|
case 'darwin':
|
|
200
170
|
return 'step_log "' + message + '"';
|
|
201
171
|
default:
|
|
202
|
-
return await log(
|
|
203
|
-
'Platform ' + os_version + ' is not supported',
|
|
204
|
-
os_version,
|
|
205
|
-
'error'
|
|
206
|
-
);
|
|
172
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
207
173
|
}
|
|
208
174
|
}
|
|
209
175
|
|
|
@@ -212,61 +178,25 @@ export async function stepLog(
|
|
|
212
178
|
* @param mark
|
|
213
179
|
* @param subject
|
|
214
180
|
* @param message
|
|
215
|
-
* @param
|
|
181
|
+
* @param os
|
|
216
182
|
*/
|
|
217
183
|
export async function addLog(
|
|
218
184
|
mark: string,
|
|
219
185
|
subject: string,
|
|
220
186
|
message: string,
|
|
221
|
-
|
|
187
|
+
os: string
|
|
222
188
|
): Promise<string> {
|
|
223
|
-
switch (
|
|
189
|
+
switch (os) {
|
|
224
190
|
case 'win32':
|
|
225
191
|
return 'Add-Log "' + mark + '" "' + subject + '" "' + message + '"';
|
|
226
192
|
case 'linux':
|
|
227
193
|
case 'darwin':
|
|
228
194
|
return 'add_log "' + mark + '" "' + subject + '" "' + message + '"';
|
|
229
195
|
default:
|
|
230
|
-
return await log(
|
|
231
|
-
'Platform ' + os_version + ' is not supported',
|
|
232
|
-
os_version,
|
|
233
|
-
'error'
|
|
234
|
-
);
|
|
196
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
235
197
|
}
|
|
236
198
|
}
|
|
237
199
|
|
|
238
|
-
/**
|
|
239
|
-
* Read the scripts
|
|
240
|
-
*
|
|
241
|
-
* @param filename
|
|
242
|
-
* @param directory
|
|
243
|
-
*/
|
|
244
|
-
export async function readFile(
|
|
245
|
-
filename: string,
|
|
246
|
-
directory: string
|
|
247
|
-
): Promise<string> {
|
|
248
|
-
return fs.readFileSync(
|
|
249
|
-
path.join(__dirname, '../' + directory, filename),
|
|
250
|
-
'utf8'
|
|
251
|
-
);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Write final script which runs
|
|
256
|
-
*
|
|
257
|
-
* @param filename
|
|
258
|
-
* @param script
|
|
259
|
-
*/
|
|
260
|
-
export async function writeScript(
|
|
261
|
-
filename: string,
|
|
262
|
-
script: string
|
|
263
|
-
): Promise<string> {
|
|
264
|
-
const runner_dir: string = await getInput('RUNNER_TOOL_CACHE', false);
|
|
265
|
-
const script_path: string = path.join(runner_dir, filename);
|
|
266
|
-
fs.writeFileSync(script_path, script, {mode: 0o755});
|
|
267
|
-
return script_path;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
200
|
/**
|
|
271
201
|
* Function to break extension csv into an array
|
|
272
202
|
*
|
|
@@ -292,7 +222,7 @@ export async function extensionArray(
|
|
|
292
222
|
return extension
|
|
293
223
|
.trim()
|
|
294
224
|
.toLowerCase()
|
|
295
|
-
.replace(/^(:)?(php[-_]|none|zend )
|
|
225
|
+
.replace(/^(:)?(php[-_]|none|zend )|(-[^-]*)-/, '$1$3');
|
|
296
226
|
})
|
|
297
227
|
].filter(Boolean);
|
|
298
228
|
}
|
|
@@ -339,21 +269,17 @@ export async function getExtensionPrefix(extension: string): Promise<string> {
|
|
|
339
269
|
/**
|
|
340
270
|
* Function to get the suffix to suppress console output
|
|
341
271
|
*
|
|
342
|
-
* @param
|
|
272
|
+
* @param os
|
|
343
273
|
*/
|
|
344
|
-
export async function suppressOutput(
|
|
345
|
-
switch (
|
|
274
|
+
export async function suppressOutput(os: string): Promise<string> {
|
|
275
|
+
switch (os) {
|
|
346
276
|
case 'win32':
|
|
347
277
|
return ' >$null 2>&1';
|
|
348
278
|
case 'linux':
|
|
349
279
|
case 'darwin':
|
|
350
280
|
return ' >/dev/null 2>&1';
|
|
351
281
|
default:
|
|
352
|
-
return await log(
|
|
353
|
-
'Platform ' + os_version + ' is not supported',
|
|
354
|
-
os_version,
|
|
355
|
-
'error'
|
|
356
|
-
);
|
|
282
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
357
283
|
}
|
|
358
284
|
}
|
|
359
285
|
|
|
@@ -362,12 +288,12 @@ export async function suppressOutput(os_version: string): Promise<string> {
|
|
|
362
288
|
*
|
|
363
289
|
* @param extension
|
|
364
290
|
* @param version
|
|
365
|
-
* @param
|
|
291
|
+
* @param os
|
|
366
292
|
*/
|
|
367
293
|
export async function getUnsupportedLog(
|
|
368
294
|
extension: string,
|
|
369
295
|
version: string,
|
|
370
|
-
|
|
296
|
+
os: string
|
|
371
297
|
): Promise<string> {
|
|
372
298
|
return (
|
|
373
299
|
'\n' +
|
|
@@ -375,7 +301,7 @@ export async function getUnsupportedLog(
|
|
|
375
301
|
'$cross',
|
|
376
302
|
extension,
|
|
377
303
|
[extension, 'is not supported on PHP', version].join(' '),
|
|
378
|
-
|
|
304
|
+
os
|
|
379
305
|
)) +
|
|
380
306
|
'\n'
|
|
381
307
|
);
|
|
@@ -384,25 +310,18 @@ export async function getUnsupportedLog(
|
|
|
384
310
|
/**
|
|
385
311
|
* Function to get command to setup tools
|
|
386
312
|
*
|
|
387
|
-
* @param
|
|
313
|
+
* @param os
|
|
388
314
|
* @param suffix
|
|
389
315
|
*/
|
|
390
|
-
export async function getCommand(
|
|
391
|
-
|
|
392
|
-
suffix: string
|
|
393
|
-
): Promise<string> {
|
|
394
|
-
switch (os_version) {
|
|
316
|
+
export async function getCommand(os: string, suffix: string): Promise<string> {
|
|
317
|
+
switch (os) {
|
|
395
318
|
case 'linux':
|
|
396
319
|
case 'darwin':
|
|
397
320
|
return 'add_' + suffix + ' ';
|
|
398
321
|
case 'win32':
|
|
399
322
|
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
|
400
323
|
default:
|
|
401
|
-
return await log(
|
|
402
|
-
'Platform ' + os_version + ' is not supported',
|
|
403
|
-
os_version,
|
|
404
|
-
'error'
|
|
405
|
-
);
|
|
324
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
406
325
|
}
|
|
407
326
|
}
|
|
408
327
|
|
|
@@ -418,42 +337,34 @@ export async function joins(...str: string[]): Promise<string> {
|
|
|
418
337
|
/**
|
|
419
338
|
* Function to get script extensions
|
|
420
339
|
*
|
|
421
|
-
* @param
|
|
340
|
+
* @param os
|
|
422
341
|
*/
|
|
423
|
-
export async function scriptExtension(
|
|
424
|
-
switch (
|
|
342
|
+
export async function scriptExtension(os: string): Promise<string> {
|
|
343
|
+
switch (os) {
|
|
425
344
|
case 'win32':
|
|
426
345
|
return '.ps1';
|
|
427
346
|
case 'linux':
|
|
428
347
|
case 'darwin':
|
|
429
348
|
return '.sh';
|
|
430
349
|
default:
|
|
431
|
-
return await log(
|
|
432
|
-
'Platform ' + os_version + ' is not supported',
|
|
433
|
-
os_version,
|
|
434
|
-
'error'
|
|
435
|
-
);
|
|
350
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
436
351
|
}
|
|
437
352
|
}
|
|
438
353
|
|
|
439
354
|
/**
|
|
440
355
|
* Function to get script tool
|
|
441
356
|
*
|
|
442
|
-
* @param
|
|
357
|
+
* @param os
|
|
443
358
|
*/
|
|
444
|
-
export async function scriptTool(
|
|
445
|
-
switch (
|
|
359
|
+
export async function scriptTool(os: string): Promise<string> {
|
|
360
|
+
switch (os) {
|
|
446
361
|
case 'win32':
|
|
447
|
-
return 'pwsh';
|
|
362
|
+
return 'pwsh ';
|
|
448
363
|
case 'linux':
|
|
449
364
|
case 'darwin':
|
|
450
|
-
return 'bash';
|
|
365
|
+
return 'bash ';
|
|
451
366
|
default:
|
|
452
|
-
return await log(
|
|
453
|
-
'Platform ' + os_version + ' is not supported',
|
|
454
|
-
os_version,
|
|
455
|
-
'error'
|
|
456
|
-
);
|
|
367
|
+
return await log('Platform ' + os + ' is not supported', os, 'error');
|
|
457
368
|
}
|
|
458
369
|
}
|
|
459
370
|
|
|
@@ -463,21 +374,21 @@ export async function scriptTool(os_version: string): Promise<string> {
|
|
|
463
374
|
* @param pkg
|
|
464
375
|
* @param type
|
|
465
376
|
* @param version
|
|
466
|
-
* @param
|
|
377
|
+
* @param os
|
|
467
378
|
*/
|
|
468
379
|
export async function customPackage(
|
|
469
380
|
pkg: string,
|
|
470
381
|
type: string,
|
|
471
382
|
version: string,
|
|
472
|
-
|
|
383
|
+
os: string
|
|
473
384
|
): Promise<string> {
|
|
474
385
|
const pkg_name: string = pkg.replace(/\d+|(pdo|pecl)[_-]/, '');
|
|
475
|
-
const script_extension: string = await scriptExtension(
|
|
386
|
+
const script_extension: string = await scriptExtension(os);
|
|
476
387
|
const script: string = path.join(
|
|
477
388
|
__dirname,
|
|
478
389
|
'../src/scripts/' + type + '/' + pkg_name + script_extension
|
|
479
390
|
);
|
|
480
|
-
const command: string = await getCommand(
|
|
391
|
+
const command: string = await getCommand(os, pkg_name);
|
|
481
392
|
return '\n. ' + script + '\n' + command + version;
|
|
482
393
|
}
|
|
483
394
|
|
|
@@ -492,7 +403,8 @@ export async function parseExtensionSource(
|
|
|
492
403
|
prefix: string
|
|
493
404
|
): Promise<string> {
|
|
494
405
|
// Groups: extension, domain url, org, repo, release
|
|
495
|
-
const regex =
|
|
406
|
+
const regex =
|
|
407
|
+
/(\w+)-(\w+:\/\/.{1,253}(?:[.:][^:/\s]{2,63})+\/)?([\w.-]+)\/([\w.-]+)@(.+)/;
|
|
496
408
|
const matches = regex.exec(extension) as RegExpExecArray;
|
|
497
409
|
matches[2] = matches[2] ? matches[2].slice(0, -1) : 'https://github.com';
|
|
498
410
|
return await joins(
|