setup-php 1.11.2 → 1.11.6
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/LICENSE +21 -21
- package/README.md +433 -458
- package/lib/config.d.ts +3 -0
- package/lib/config.js +71 -71
- package/lib/config.js.map +1 -1
- package/lib/coverage.d.ts +4 -0
- package/lib/coverage.js +97 -87
- package/lib/coverage.js.map +1 -1
- package/lib/extensions.d.ts +4 -0
- package/lib/extensions.js +188 -200
- package/lib/extensions.js.map +1 -1
- package/lib/install.d.ts +2 -0
- package/lib/install.js +96 -81
- package/lib/install.js.map +1 -1
- package/lib/tools.d.ts +18 -0
- package/lib/tools.js +306 -386
- package/lib/tools.js.map +1 -1
- package/lib/utils.d.ts +15 -0
- package/lib/utils.js +205 -291
- package/lib/utils.js.map +1 -1
- package/package.json +66 -56
- package/src/config.ts +82 -82
- package/src/configs/brew_extensions +28 -0
- package/src/configs/php-versions.json +5 -5
- package/src/configs/phpunit.json +24 -24
- package/src/coverage.ts +146 -146
- package/src/extensions.ts +235 -233
- package/src/install.ts +104 -104
- package/src/scripts/darwin.sh +341 -339
- package/src/scripts/ext/gearman.sh +22 -22
- package/src/scripts/ext/phalcon.ps1 +55 -55
- package/src/scripts/ext/phalcon.sh +70 -70
- package/src/scripts/linux.sh +361 -361
- package/src/scripts/win32.ps1 +326 -333
- package/src/tools.ts +472 -469
- package/src/utils.ts +319 -316
- package/.eslintrc.json +0 -16
- package/.github/CODE_OF_CONDUCT.md +0 -76
- package/.github/CONTRIBUTING.md +0 -69
- package/.github/FUNDING.yml +0 -7
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -23
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -38
- package/.github/SECURITY.md +0 -29
- package/.github/workflows/main-workflow.yml +0 -56
- package/.github/workflows/node-workflow.yml +0 -47
- package/.idea/workspace.xml +0 -113
- package/.prettierrc.json +0 -12
- package/__tests__/config.test.ts +0 -52
- package/__tests__/coverage.test.ts +0 -110
- package/__tests__/extensions.test.ts +0 -120
- package/__tests__/install.test.ts +0 -181
- package/__tests__/tools.test.ts +0 -476
- package/__tests__/utils.test.ts +0 -213
- package/action.yml +0 -38
- package/dist/index.js +0 -2854
- package/examples/bedrock.yml +0 -32
- package/examples/cakephp-mysql.yml +0 -114
- package/examples/cakephp-postgres.yml +0 -112
- package/examples/cakephp.yml +0 -92
- package/examples/codeigniter.yml +0 -34
- package/examples/laravel-mysql.yml +0 -74
- package/examples/laravel-postgres.yml +0 -74
- package/examples/laravel.yml +0 -42
- package/examples/lumen-mysql.yml +0 -74
- package/examples/lumen-postgres.yml +0 -74
- package/examples/lumen.yml +0 -38
- package/examples/phalcon-mysql.yml +0 -74
- package/examples/phalcon-postgres.yml +0 -73
- package/examples/sage.yml +0 -57
- package/examples/slim-framework.yml +0 -34
- package/examples/symfony-mysql.yml +0 -56
- package/examples/symfony-postgres.yml +0 -54
- package/examples/symfony.yml +0 -39
- package/examples/yii2-mysql.yml +0 -73
- package/examples/yii2-postgres.yml +0 -71
- package/examples/zend-framework.yml +0 -36
- package/jest.config.js +0 -12
- package/lib/sapi.js +0 -64
- package/tsconfig.json +0 -18
package/src/tools.ts
CHANGED
|
@@ -1,469 +1,472 @@
|
|
|
1
|
-
import * as utils from './utils';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Function to get command to setup tools
|
|
5
|
-
*
|
|
6
|
-
* @param os_version
|
|
7
|
-
* @param suffix
|
|
8
|
-
*/
|
|
9
|
-
export async function getCommand(
|
|
10
|
-
os_version: string,
|
|
11
|
-
suffix: string
|
|
12
|
-
): Promise<string> {
|
|
13
|
-
switch (os_version) {
|
|
14
|
-
case 'linux':
|
|
15
|
-
case 'darwin':
|
|
16
|
-
return 'add_' + suffix + ' ';
|
|
17
|
-
case 'win32':
|
|
18
|
-
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
|
19
|
-
default:
|
|
20
|
-
return await utils.log(
|
|
21
|
-
'Platform ' + os_version + ' is not supported',
|
|
22
|
-
os_version,
|
|
23
|
-
'error'
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Function to get tool version
|
|
30
|
-
*
|
|
31
|
-
* @param version
|
|
32
|
-
*/
|
|
33
|
-
export async function getToolVersion(version: string): Promise<string> {
|
|
34
|
-
// semver_regex - https://semver.org/
|
|
35
|
-
const semver_regex =
|
|
36
|
-
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
37
|
-
const composer_regex = /^stable$|^preview$|^snapshot$|^[1|2]$/;
|
|
38
|
-
version = version.replace(/[><=^]*/, '').replace(/^v(\d)/, '$1');
|
|
39
|
-
switch (true) {
|
|
40
|
-
case composer_regex.test(version):
|
|
41
|
-
case semver_regex.test(version):
|
|
42
|
-
return version;
|
|
43
|
-
default:
|
|
44
|
-
return 'latest';
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Function to parse tool:version
|
|
50
|
-
*
|
|
51
|
-
* @param release
|
|
52
|
-
*/
|
|
53
|
-
export async function parseTool(
|
|
54
|
-
release: string
|
|
55
|
-
): Promise<{name: string; version: string}> {
|
|
56
|
-
const parts: string[] = release.split(':');
|
|
57
|
-
const tool: string = parts[0];
|
|
58
|
-
const version: string | undefined = parts[1];
|
|
59
|
-
switch (version) {
|
|
60
|
-
case undefined:
|
|
61
|
-
return {
|
|
62
|
-
name: tool,
|
|
63
|
-
version: 'latest'
|
|
64
|
-
};
|
|
65
|
-
default:
|
|
66
|
-
return {
|
|
67
|
-
name: tool,
|
|
68
|
-
version: await getToolVersion(parts[1])
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Function to get the url of tool with the given version
|
|
75
|
-
*
|
|
76
|
-
* @param tool
|
|
77
|
-
* @param extension
|
|
78
|
-
* @param version
|
|
79
|
-
* @param prefix
|
|
80
|
-
* @param version_prefix
|
|
81
|
-
* @param verb
|
|
82
|
-
*/
|
|
83
|
-
export async function getUri(
|
|
84
|
-
tool: string,
|
|
85
|
-
extension: string,
|
|
86
|
-
version: string,
|
|
87
|
-
prefix: string,
|
|
88
|
-
version_prefix: string,
|
|
89
|
-
verb: string
|
|
90
|
-
): Promise<string> {
|
|
91
|
-
switch (version) {
|
|
92
|
-
case 'latest':
|
|
93
|
-
return [prefix, version, verb, tool + extension]
|
|
94
|
-
.filter(Boolean)
|
|
95
|
-
.join('/');
|
|
96
|
-
default:
|
|
97
|
-
return [prefix, verb, version_prefix + version, tool + extension]
|
|
98
|
-
.filter(Boolean)
|
|
99
|
-
.join('/');
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Helper function to get script to setup phive
|
|
105
|
-
*
|
|
106
|
-
* @param version
|
|
107
|
-
* @param php_version
|
|
108
|
-
* @param os_version
|
|
109
|
-
*/
|
|
110
|
-
export async function addPhive(
|
|
111
|
-
version: string,
|
|
112
|
-
php_version: string,
|
|
113
|
-
os_version: string
|
|
114
|
-
): Promise<string> {
|
|
115
|
-
switch (true) {
|
|
116
|
-
case /5\.6|7\.0/.test(php_version):
|
|
117
|
-
version = version.replace('latest', '0.12.1');
|
|
118
|
-
break;
|
|
119
|
-
case /7\.1/.test(php_version):
|
|
120
|
-
version = version.replace('latest', '0.13.5');
|
|
121
|
-
break;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
'
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* @param
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
*
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
case '
|
|
195
|
-
filename = '
|
|
196
|
-
break;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
case
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
break;
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return `${cache_url},https://getcomposer.org/composer-${version}.phar`;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
*
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
'
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
* @param
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
const
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
'',
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
script += await
|
|
401
|
-
break;
|
|
402
|
-
case '
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
script += await
|
|
420
|
-
break;
|
|
421
|
-
case '
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
script += await
|
|
432
|
-
break;
|
|
433
|
-
case '
|
|
434
|
-
script += await addPackage(tool, release, '
|
|
435
|
-
break;
|
|
436
|
-
case '
|
|
437
|
-
script += await addPackage(
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
break;
|
|
447
|
-
case '
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
case '
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
script += await
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
}
|
|
1
|
+
import * as utils from './utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Function to get command to setup tools
|
|
5
|
+
*
|
|
6
|
+
* @param os_version
|
|
7
|
+
* @param suffix
|
|
8
|
+
*/
|
|
9
|
+
export async function getCommand(
|
|
10
|
+
os_version: string,
|
|
11
|
+
suffix: string
|
|
12
|
+
): Promise<string> {
|
|
13
|
+
switch (os_version) {
|
|
14
|
+
case 'linux':
|
|
15
|
+
case 'darwin':
|
|
16
|
+
return 'add_' + suffix + ' ';
|
|
17
|
+
case 'win32':
|
|
18
|
+
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
|
19
|
+
default:
|
|
20
|
+
return await utils.log(
|
|
21
|
+
'Platform ' + os_version + ' is not supported',
|
|
22
|
+
os_version,
|
|
23
|
+
'error'
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Function to get tool version
|
|
30
|
+
*
|
|
31
|
+
* @param version
|
|
32
|
+
*/
|
|
33
|
+
export async function getToolVersion(version: string): Promise<string> {
|
|
34
|
+
// semver_regex - https://semver.org/
|
|
35
|
+
const semver_regex =
|
|
36
|
+
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
37
|
+
const composer_regex = /^stable$|^preview$|^snapshot$|^[1|2]$/;
|
|
38
|
+
version = version.replace(/[><=^]*/, '').replace(/^v(\d)/, '$1');
|
|
39
|
+
switch (true) {
|
|
40
|
+
case composer_regex.test(version):
|
|
41
|
+
case semver_regex.test(version):
|
|
42
|
+
return version;
|
|
43
|
+
default:
|
|
44
|
+
return 'latest';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Function to parse tool:version
|
|
50
|
+
*
|
|
51
|
+
* @param release
|
|
52
|
+
*/
|
|
53
|
+
export async function parseTool(
|
|
54
|
+
release: string
|
|
55
|
+
): Promise<{name: string; version: string}> {
|
|
56
|
+
const parts: string[] = release.split(':');
|
|
57
|
+
const tool: string = parts[0];
|
|
58
|
+
const version: string | undefined = parts[1];
|
|
59
|
+
switch (version) {
|
|
60
|
+
case undefined:
|
|
61
|
+
return {
|
|
62
|
+
name: tool,
|
|
63
|
+
version: 'latest'
|
|
64
|
+
};
|
|
65
|
+
default:
|
|
66
|
+
return {
|
|
67
|
+
name: tool,
|
|
68
|
+
version: await getToolVersion(parts[1])
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Function to get the url of tool with the given version
|
|
75
|
+
*
|
|
76
|
+
* @param tool
|
|
77
|
+
* @param extension
|
|
78
|
+
* @param version
|
|
79
|
+
* @param prefix
|
|
80
|
+
* @param version_prefix
|
|
81
|
+
* @param verb
|
|
82
|
+
*/
|
|
83
|
+
export async function getUri(
|
|
84
|
+
tool: string,
|
|
85
|
+
extension: string,
|
|
86
|
+
version: string,
|
|
87
|
+
prefix: string,
|
|
88
|
+
version_prefix: string,
|
|
89
|
+
verb: string
|
|
90
|
+
): Promise<string> {
|
|
91
|
+
switch (version) {
|
|
92
|
+
case 'latest':
|
|
93
|
+
return [prefix, version, verb, tool + extension]
|
|
94
|
+
.filter(Boolean)
|
|
95
|
+
.join('/');
|
|
96
|
+
default:
|
|
97
|
+
return [prefix, verb, version_prefix + version, tool + extension]
|
|
98
|
+
.filter(Boolean)
|
|
99
|
+
.join('/');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Helper function to get script to setup phive
|
|
105
|
+
*
|
|
106
|
+
* @param version
|
|
107
|
+
* @param php_version
|
|
108
|
+
* @param os_version
|
|
109
|
+
*/
|
|
110
|
+
export async function addPhive(
|
|
111
|
+
version: string,
|
|
112
|
+
php_version: string,
|
|
113
|
+
os_version: string
|
|
114
|
+
): Promise<string> {
|
|
115
|
+
switch (true) {
|
|
116
|
+
case /5\.6|7\.0/.test(php_version):
|
|
117
|
+
version = version.replace('latest', '0.12.1');
|
|
118
|
+
break;
|
|
119
|
+
case /7\.1/.test(php_version):
|
|
120
|
+
version = version.replace('latest', '0.13.5');
|
|
121
|
+
break;
|
|
122
|
+
case /7\.2/.test(php_version):
|
|
123
|
+
version = version.replace('latest', '0.14.5');
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
switch (version) {
|
|
127
|
+
case 'latest':
|
|
128
|
+
return (
|
|
129
|
+
(await getCommand(os_version, 'tool')) +
|
|
130
|
+
'https://phar.io/releases/phive.phar phive'
|
|
131
|
+
);
|
|
132
|
+
default:
|
|
133
|
+
return (
|
|
134
|
+
(await getCommand(os_version, 'tool')) +
|
|
135
|
+
'https://github.com/phar-io/phive/releases/download/' +
|
|
136
|
+
version +
|
|
137
|
+
'/phive-' +
|
|
138
|
+
version +
|
|
139
|
+
'.phar phive'
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Function to get the phar url in domain/tool-version.phar format
|
|
146
|
+
*
|
|
147
|
+
* @param domain
|
|
148
|
+
* @param tool
|
|
149
|
+
* @param prefix
|
|
150
|
+
* @param version
|
|
151
|
+
*/
|
|
152
|
+
export async function getPharUrl(
|
|
153
|
+
domain: string,
|
|
154
|
+
tool: string,
|
|
155
|
+
prefix: string,
|
|
156
|
+
version: string
|
|
157
|
+
): Promise<string> {
|
|
158
|
+
switch (version) {
|
|
159
|
+
case 'latest':
|
|
160
|
+
return domain + '/' + tool + '.phar';
|
|
161
|
+
default:
|
|
162
|
+
return domain + '/' + tool + '-' + prefix + version + '.phar';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Function to get the Deployer url
|
|
168
|
+
*
|
|
169
|
+
* @param version
|
|
170
|
+
*/
|
|
171
|
+
export async function getDeployerUrl(version: string): Promise<string> {
|
|
172
|
+
const deployer = 'https://deployer.org';
|
|
173
|
+
switch (version) {
|
|
174
|
+
case 'latest':
|
|
175
|
+
return deployer + '/deployer.phar';
|
|
176
|
+
default:
|
|
177
|
+
return deployer + '/releases/v' + version + '/deployer.phar';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Function to get the Deployer url
|
|
183
|
+
*
|
|
184
|
+
* @param version
|
|
185
|
+
* @param os_version
|
|
186
|
+
*/
|
|
187
|
+
export async function getSymfonyUri(
|
|
188
|
+
version: string,
|
|
189
|
+
os_version: string
|
|
190
|
+
): Promise<string> {
|
|
191
|
+
let filename = '';
|
|
192
|
+
switch (os_version) {
|
|
193
|
+
case 'linux':
|
|
194
|
+
case 'darwin':
|
|
195
|
+
filename = 'symfony_' + os_version + '_amd64';
|
|
196
|
+
break;
|
|
197
|
+
case 'win32':
|
|
198
|
+
filename = 'symfony_windows_amd64.exe';
|
|
199
|
+
break;
|
|
200
|
+
default:
|
|
201
|
+
return await utils.log(
|
|
202
|
+
'Platform ' + os_version + ' is not supported',
|
|
203
|
+
os_version,
|
|
204
|
+
'error'
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
switch (version) {
|
|
208
|
+
case 'latest':
|
|
209
|
+
return 'releases/latest/download/' + filename;
|
|
210
|
+
default:
|
|
211
|
+
return 'releases/download/v' + version + '/' + filename;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Function to add/move composer in the tools list
|
|
217
|
+
*
|
|
218
|
+
* @param tools_list
|
|
219
|
+
*/
|
|
220
|
+
export async function addComposer(tools_list: string[]): Promise<string[]> {
|
|
221
|
+
const regex_any = /^composer($|:.*)/;
|
|
222
|
+
const regex_valid =
|
|
223
|
+
/^composer:?($|preview$|snapshot$|v?[1-2]$|v?\d+\.\d+\.\d+[\w-]*$)/;
|
|
224
|
+
const regex_composer1_tools =
|
|
225
|
+
/hirak|prestissimo|narrowspark|composer-prefetcher/;
|
|
226
|
+
const matches: string[] = tools_list.filter(tool => regex_valid.test(tool));
|
|
227
|
+
let composer = 'composer';
|
|
228
|
+
tools_list = tools_list.filter(tool => !regex_any.test(tool));
|
|
229
|
+
switch (true) {
|
|
230
|
+
case regex_composer1_tools.test(tools_list.join(' ')):
|
|
231
|
+
composer = 'composer:1';
|
|
232
|
+
break;
|
|
233
|
+
case matches[0] == undefined:
|
|
234
|
+
break;
|
|
235
|
+
default:
|
|
236
|
+
composer = matches[matches.length - 1].replace(/v(\d\S*)/, '$1');
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
tools_list.unshift(composer);
|
|
240
|
+
return tools_list;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Function to get composer URL for a given version
|
|
245
|
+
*
|
|
246
|
+
* @param version
|
|
247
|
+
*/
|
|
248
|
+
export async function getComposerUrl(version: string): Promise<string> {
|
|
249
|
+
let cache_url = `https://github.com/shivammathur/composer-cache/releases/latest/download/composer-${version.replace(
|
|
250
|
+
'latest',
|
|
251
|
+
'stable'
|
|
252
|
+
)}.phar`;
|
|
253
|
+
switch (true) {
|
|
254
|
+
case /^snapshot$/.test(version):
|
|
255
|
+
return `${cache_url},https://getcomposer.org/composer.phar`;
|
|
256
|
+
case /^preview$|^[1-2]$/.test(version):
|
|
257
|
+
return `${cache_url},https://getcomposer.org/composer-${version}.phar`;
|
|
258
|
+
case /^\d+\.\d+\.\d+[\w-]*$/.test(version):
|
|
259
|
+
cache_url = `https://github.com/composer/composer/releases/download/${version}/composer.phar`;
|
|
260
|
+
return `${cache_url},https://getcomposer.org/composer-${version}.phar`;
|
|
261
|
+
default:
|
|
262
|
+
return `${cache_url},https://getcomposer.org/composer-stable.phar`;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Function to get Tools list after cleanup
|
|
268
|
+
*
|
|
269
|
+
* @param tools_csv
|
|
270
|
+
*/
|
|
271
|
+
export async function getCleanedToolsList(
|
|
272
|
+
tools_csv: string
|
|
273
|
+
): Promise<string[]> {
|
|
274
|
+
let tools_list: string[] = await utils.CSVArray(tools_csv);
|
|
275
|
+
tools_list = await addComposer(tools_list);
|
|
276
|
+
tools_list = tools_list
|
|
277
|
+
.map(function (extension: string) {
|
|
278
|
+
return extension
|
|
279
|
+
.trim()
|
|
280
|
+
.replace(
|
|
281
|
+
/codeception\/|hirak\/|robmorgan\/|narrowspark\/automatic-/,
|
|
282
|
+
''
|
|
283
|
+
);
|
|
284
|
+
})
|
|
285
|
+
.filter(Boolean);
|
|
286
|
+
return [...new Set(tools_list)];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Helper function to get script to setup a tool using a phar url
|
|
291
|
+
*
|
|
292
|
+
* @param tool
|
|
293
|
+
* @param url
|
|
294
|
+
* @param os_version
|
|
295
|
+
*/
|
|
296
|
+
export async function addArchive(
|
|
297
|
+
tool: string,
|
|
298
|
+
url: string,
|
|
299
|
+
os_version: string
|
|
300
|
+
): Promise<string> {
|
|
301
|
+
return (await getCommand(os_version, 'tool')) + url + ' ' + tool;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Function to get the script to setup php-config and phpize
|
|
306
|
+
*
|
|
307
|
+
* @param tool
|
|
308
|
+
* @param os_version
|
|
309
|
+
*/
|
|
310
|
+
export async function addDevTools(
|
|
311
|
+
tool: string,
|
|
312
|
+
os_version: string
|
|
313
|
+
): Promise<string> {
|
|
314
|
+
switch (os_version) {
|
|
315
|
+
case 'linux':
|
|
316
|
+
return (
|
|
317
|
+
'add_devtools' +
|
|
318
|
+
'\n' +
|
|
319
|
+
(await utils.addLog('$tick', tool, 'Added', 'linux'))
|
|
320
|
+
);
|
|
321
|
+
case 'darwin':
|
|
322
|
+
return await utils.addLog('$tick', tool, 'Added', 'darwin');
|
|
323
|
+
case 'win32':
|
|
324
|
+
return await utils.addLog(
|
|
325
|
+
'$cross',
|
|
326
|
+
tool,
|
|
327
|
+
tool + ' is not a windows tool',
|
|
328
|
+
'win32'
|
|
329
|
+
);
|
|
330
|
+
default:
|
|
331
|
+
return await utils.log(
|
|
332
|
+
'Platform ' + os_version + ' is not supported',
|
|
333
|
+
os_version,
|
|
334
|
+
'error'
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Helper function to get script to setup a tool using composer
|
|
341
|
+
*
|
|
342
|
+
* @param tool
|
|
343
|
+
* @param release
|
|
344
|
+
* @param prefix
|
|
345
|
+
* @param os_version
|
|
346
|
+
*/
|
|
347
|
+
export async function addPackage(
|
|
348
|
+
tool: string,
|
|
349
|
+
release: string,
|
|
350
|
+
prefix: string,
|
|
351
|
+
os_version: string
|
|
352
|
+
): Promise<string> {
|
|
353
|
+
const tool_command = await getCommand(os_version, 'composertool');
|
|
354
|
+
return tool_command + tool + ' ' + release + ' ' + prefix;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Setup tools
|
|
359
|
+
*
|
|
360
|
+
* @param tools_csv
|
|
361
|
+
* @param php_version
|
|
362
|
+
* @param os_version
|
|
363
|
+
*/
|
|
364
|
+
export async function addTools(
|
|
365
|
+
tools_csv: string,
|
|
366
|
+
php_version: string,
|
|
367
|
+
os_version: string
|
|
368
|
+
): Promise<string> {
|
|
369
|
+
let script = '\n' + (await utils.stepLog('Setup Tools', os_version));
|
|
370
|
+
const tools_list: Array<string> = await getCleanedToolsList(tools_csv);
|
|
371
|
+
await utils.asyncForEach(tools_list, async function (release: string) {
|
|
372
|
+
const tool_data: {name: string; version: string} = await parseTool(release);
|
|
373
|
+
const tool: string = tool_data.name;
|
|
374
|
+
const version: string = tool_data.version;
|
|
375
|
+
const github = 'https://github.com/';
|
|
376
|
+
let uri: string = await getUri(
|
|
377
|
+
tool,
|
|
378
|
+
'.phar',
|
|
379
|
+
version,
|
|
380
|
+
'releases',
|
|
381
|
+
'',
|
|
382
|
+
'download'
|
|
383
|
+
);
|
|
384
|
+
script += '\n';
|
|
385
|
+
let url = '';
|
|
386
|
+
switch (tool) {
|
|
387
|
+
case 'cs2pr':
|
|
388
|
+
uri = await getUri(tool, '', version, 'releases', '', 'download');
|
|
389
|
+
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
|
|
390
|
+
script += await addArchive(tool, url, os_version);
|
|
391
|
+
break;
|
|
392
|
+
case 'php-cs-fixer':
|
|
393
|
+
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
|
|
394
|
+
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
|
|
395
|
+
script += await addArchive(tool, url, os_version);
|
|
396
|
+
break;
|
|
397
|
+
case 'phpcs':
|
|
398
|
+
case 'phpcbf':
|
|
399
|
+
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
|
|
400
|
+
script += await addArchive(tool, url, os_version);
|
|
401
|
+
break;
|
|
402
|
+
case 'phive':
|
|
403
|
+
script += await addPhive(version, php_version, os_version);
|
|
404
|
+
break;
|
|
405
|
+
case 'phpstan':
|
|
406
|
+
url = github + 'phpstan/phpstan/' + uri;
|
|
407
|
+
script += await addArchive(tool, url, os_version);
|
|
408
|
+
break;
|
|
409
|
+
case 'phpmd':
|
|
410
|
+
url = github + 'phpmd/phpmd/' + uri;
|
|
411
|
+
script += await addArchive(tool, url, os_version);
|
|
412
|
+
break;
|
|
413
|
+
case 'psalm':
|
|
414
|
+
url = github + 'vimeo/psalm/' + uri;
|
|
415
|
+
script += await addArchive(tool, url, os_version);
|
|
416
|
+
break;
|
|
417
|
+
case 'composer':
|
|
418
|
+
url = await getComposerUrl(version);
|
|
419
|
+
script += await addArchive('composer', url, os_version);
|
|
420
|
+
break;
|
|
421
|
+
case 'codeception':
|
|
422
|
+
script += await addPackage(tool, release, 'codeception/', os_version);
|
|
423
|
+
break;
|
|
424
|
+
case 'phpcpd':
|
|
425
|
+
case 'phpunit':
|
|
426
|
+
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
|
|
427
|
+
script += await addArchive(tool, url, os_version);
|
|
428
|
+
break;
|
|
429
|
+
case 'deployer':
|
|
430
|
+
url = await getDeployerUrl(version);
|
|
431
|
+
script += await addArchive(tool, url, os_version);
|
|
432
|
+
break;
|
|
433
|
+
case 'phinx':
|
|
434
|
+
script += await addPackage(tool, release, 'robmorgan/', os_version);
|
|
435
|
+
break;
|
|
436
|
+
case 'prestissimo':
|
|
437
|
+
script += await addPackage(tool, release, 'hirak/', os_version);
|
|
438
|
+
break;
|
|
439
|
+
case 'composer-prefetcher':
|
|
440
|
+
script += await addPackage(
|
|
441
|
+
tool,
|
|
442
|
+
release,
|
|
443
|
+
'narrowspark/automatic-',
|
|
444
|
+
os_version
|
|
445
|
+
);
|
|
446
|
+
break;
|
|
447
|
+
case 'pecl':
|
|
448
|
+
script += await getCommand(os_version, 'pecl');
|
|
449
|
+
break;
|
|
450
|
+
case 'php-config':
|
|
451
|
+
case 'phpize':
|
|
452
|
+
script += await addDevTools(tool, os_version);
|
|
453
|
+
break;
|
|
454
|
+
case 'symfony':
|
|
455
|
+
case 'symfony-cli':
|
|
456
|
+
uri = await getSymfonyUri(version, os_version);
|
|
457
|
+
url = github + 'symfony/cli/' + uri;
|
|
458
|
+
script += await addArchive('symfony', url, os_version);
|
|
459
|
+
break;
|
|
460
|
+
default:
|
|
461
|
+
script += await utils.addLog(
|
|
462
|
+
'$cross',
|
|
463
|
+
tool,
|
|
464
|
+
'Tool ' + tool + ' is not supported',
|
|
465
|
+
os_version
|
|
466
|
+
);
|
|
467
|
+
break;
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
return script;
|
|
472
|
+
}
|