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.
Files changed (80) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +433 -458
  3. package/lib/config.d.ts +3 -0
  4. package/lib/config.js +71 -71
  5. package/lib/config.js.map +1 -1
  6. package/lib/coverage.d.ts +4 -0
  7. package/lib/coverage.js +97 -87
  8. package/lib/coverage.js.map +1 -1
  9. package/lib/extensions.d.ts +4 -0
  10. package/lib/extensions.js +188 -200
  11. package/lib/extensions.js.map +1 -1
  12. package/lib/install.d.ts +2 -0
  13. package/lib/install.js +96 -81
  14. package/lib/install.js.map +1 -1
  15. package/lib/tools.d.ts +18 -0
  16. package/lib/tools.js +306 -386
  17. package/lib/tools.js.map +1 -1
  18. package/lib/utils.d.ts +15 -0
  19. package/lib/utils.js +205 -291
  20. package/lib/utils.js.map +1 -1
  21. package/package.json +66 -56
  22. package/src/config.ts +82 -82
  23. package/src/configs/brew_extensions +28 -0
  24. package/src/configs/php-versions.json +5 -5
  25. package/src/configs/phpunit.json +24 -24
  26. package/src/coverage.ts +146 -146
  27. package/src/extensions.ts +235 -233
  28. package/src/install.ts +104 -104
  29. package/src/scripts/darwin.sh +341 -339
  30. package/src/scripts/ext/gearman.sh +22 -22
  31. package/src/scripts/ext/phalcon.ps1 +55 -55
  32. package/src/scripts/ext/phalcon.sh +70 -70
  33. package/src/scripts/linux.sh +361 -361
  34. package/src/scripts/win32.ps1 +326 -333
  35. package/src/tools.ts +472 -469
  36. package/src/utils.ts +319 -316
  37. package/.eslintrc.json +0 -16
  38. package/.github/CODE_OF_CONDUCT.md +0 -76
  39. package/.github/CONTRIBUTING.md +0 -69
  40. package/.github/FUNDING.yml +0 -7
  41. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -23
  42. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  43. package/.github/PULL_REQUEST_TEMPLATE.md +0 -38
  44. package/.github/SECURITY.md +0 -29
  45. package/.github/workflows/main-workflow.yml +0 -56
  46. package/.github/workflows/node-workflow.yml +0 -47
  47. package/.idea/workspace.xml +0 -113
  48. package/.prettierrc.json +0 -12
  49. package/__tests__/config.test.ts +0 -52
  50. package/__tests__/coverage.test.ts +0 -110
  51. package/__tests__/extensions.test.ts +0 -120
  52. package/__tests__/install.test.ts +0 -181
  53. package/__tests__/tools.test.ts +0 -476
  54. package/__tests__/utils.test.ts +0 -213
  55. package/action.yml +0 -38
  56. package/dist/index.js +0 -2854
  57. package/examples/bedrock.yml +0 -32
  58. package/examples/cakephp-mysql.yml +0 -114
  59. package/examples/cakephp-postgres.yml +0 -112
  60. package/examples/cakephp.yml +0 -92
  61. package/examples/codeigniter.yml +0 -34
  62. package/examples/laravel-mysql.yml +0 -74
  63. package/examples/laravel-postgres.yml +0 -74
  64. package/examples/laravel.yml +0 -42
  65. package/examples/lumen-mysql.yml +0 -74
  66. package/examples/lumen-postgres.yml +0 -74
  67. package/examples/lumen.yml +0 -38
  68. package/examples/phalcon-mysql.yml +0 -74
  69. package/examples/phalcon-postgres.yml +0 -73
  70. package/examples/sage.yml +0 -57
  71. package/examples/slim-framework.yml +0 -34
  72. package/examples/symfony-mysql.yml +0 -56
  73. package/examples/symfony-postgres.yml +0 -54
  74. package/examples/symfony.yml +0 -39
  75. package/examples/yii2-mysql.yml +0 -73
  76. package/examples/yii2-postgres.yml +0 -71
  77. package/examples/zend-framework.yml +0 -36
  78. package/jest.config.js +0 -12
  79. package/lib/sapi.js +0 -64
  80. package/tsconfig.json +0 -18
package/lib/tools.js CHANGED
@@ -1,387 +1,307 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.addTools = exports.functionRecord = exports.getData = exports.addWPCLI = exports.addSymfony = exports.addPHPUnitTools = exports.addPhive = exports.addPhing = exports.addPECL = exports.addDevTools = exports.addDeployer = exports.addComposer = exports.addBlackfirePlayer = exports.addPackage = exports.addArchive = exports.getPharUrl = exports.getUrl = exports.filterList = exports.getRelease = exports.getVersion = exports.getLatestVersion = exports.getSemverVersion = void 0;
23
- const utils = __importStar(require("./utils"));
24
- async function getSemverVersion(data) {
25
- var _a;
26
- const search = data['version_prefix'] + data['version'];
27
- const url = `https://api.github.com/repos/${data['repository']}/git/matching-refs/tags%2F${search}.`;
28
- const token = await utils.readEnv('COMPOSER_TOKEN');
29
- const response = await utils.fetch(url, token);
30
- if (response.error || response.data === '[]') {
31
- data['error'] = (_a = response.error) !== null && _a !== void 0 ? _a : `No version found with prefix ${search}.`;
32
- return data['version'];
33
- }
34
- else {
35
- const refs = JSON.parse(response['data']).reverse();
36
- const ref = refs.find((i) => /.*\d+.\d+.\d+$/.test(i['ref']));
37
- const tag = (ref || refs[0])['ref'].split('/').pop();
38
- return tag.replace(/^v(\d)/, '$1');
39
- }
40
- }
41
- exports.getSemverVersion = getSemverVersion;
42
- async function getLatestVersion(data) {
43
- if (!data['version'] && data['fetch_latest'] === 'false') {
44
- return 'latest';
45
- }
46
- const resp = await utils.fetch(`${data['github']}/${data['repository']}/releases.atom`);
47
- const releases = [
48
- ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g)
49
- ].map(match => match[2]);
50
- return (releases
51
- .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
52
- .pop() || 'latest');
53
- }
54
- exports.getLatestVersion = getLatestVersion;
55
- async function getVersion(version, data) {
56
- const semver_regex = /^(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-]+)*))?$/;
57
- const composer_regex = /^composer:(stable|preview|snapshot|[1|2])$/;
58
- const constraint_regex = /[><=^~]+.*/;
59
- const major_minor_regex = /^\d+(\.\d+)?$/;
60
- data['version'] = version.replace(/v?(\d)/, '$1').replace(/\.x/, '');
61
- switch (true) {
62
- case composer_regex.test(data['release']):
63
- case semver_regex.test(data['version']):
64
- case constraint_regex.test(data['version']) && data['type'] === 'composer':
65
- return data['version'];
66
- case major_minor_regex.test(data['version']) && data['type'] === 'composer':
67
- data['release'] = `${data['tool']}:${data['version']}.*`;
68
- return `${data['version']}.*`;
69
- case data['repository'] && major_minor_regex.test(data['version']):
70
- return await getSemverVersion(data);
71
- default:
72
- return data['version'].replace(/[><=^~]*/, '');
73
- }
74
- }
75
- exports.getVersion = getVersion;
76
- async function getRelease(release, data) {
77
- release = release.includes('/') ? release.split('/')[1] : release;
78
- return release.includes(':')
79
- ? [data['tool'], release.split(':')[1]].join(':')
80
- : data['tool'];
81
- }
82
- exports.getRelease = getRelease;
83
- async function filterList(tools_list) {
84
- const regex_any = /^composer($|:.*)/;
85
- const regex_valid = /^composer:?($|preview$|snapshot$|v?\d+(\.\d+)?$|v?\d+\.\d+\.\d+[\w-]*$)/;
86
- const matches = tools_list.filter(tool => regex_valid.test(tool));
87
- let composer = 'composer';
88
- tools_list = tools_list.filter(tool => !regex_any.test(tool));
89
- switch (true) {
90
- case matches[0] == undefined:
91
- break;
92
- default:
93
- composer = matches[matches.length - 1].replace(/v(\d\S*)/, '$1');
94
- break;
95
- }
96
- tools_list.unshift(composer);
97
- return tools_list;
98
- }
99
- exports.filterList = filterList;
100
- async function getUrl(data) {
101
- if (data['version'] === 'latest') {
102
- return [
103
- data['domain'],
104
- data['repository'],
105
- data['prefix'],
106
- data['version'],
107
- data['verb'],
108
- data['tool'] + data['extension']
109
- ]
110
- .filter(Boolean)
111
- .join('/');
112
- }
113
- else {
114
- return [
115
- data['domain'],
116
- data['repository'],
117
- data['prefix'],
118
- data['verb'],
119
- data['version_prefix'] + data['version'],
120
- data['tool'] + data['extension']
121
- ]
122
- .filter(Boolean)
123
- .join('/');
124
- }
125
- }
126
- exports.getUrl = getUrl;
127
- async function getPharUrl(data) {
128
- if (data['version'] === 'latest') {
129
- return data['domain'] + '/' + data['tool'] + '.phar';
130
- }
131
- else {
132
- return (data['domain'] +
133
- '/' +
134
- data['tool'] +
135
- '-' +
136
- data['version_prefix'] +
137
- data['version'] +
138
- '.phar');
139
- }
140
- }
141
- exports.getPharUrl = getPharUrl;
142
- async function addArchive(data) {
143
- return ((await utils.getCommand(data['os_version'], 'tool')) +
144
- (await utils.joins(data['url'], data['tool'], data['version_parameter'])));
145
- }
146
- exports.addArchive = addArchive;
147
- async function addPackage(data) {
148
- const command = await utils.getCommand(data['os_version'], 'composertool');
149
- const parts = data['repository'].split('/');
150
- return command + parts[1] + ' ' + data['release'] + ' ' + parts[0] + '/';
151
- }
152
- exports.addPackage = addPackage;
153
- async function addBlackfirePlayer(data) {
154
- if (/5\.[5-6]|7\.0/.test(data['php_version']) &&
155
- data['version'] == 'latest') {
156
- data['version'] = '1.9.3';
157
- }
158
- data['url'] = await getPharUrl(data);
159
- return addArchive(data);
160
- }
161
- exports.addBlackfirePlayer = addBlackfirePlayer;
162
- async function addComposer(data) {
163
- const github = data['github'];
164
- const getcomposer = data['domain'];
165
- let cache_url = `${github}/shivammathur/composer-cache/releases/latest/download/composer-${data['version'].replace('latest', 'stable')}.phar`;
166
- let source_url = `${getcomposer}/composer.phar`;
167
- switch (true) {
168
- case /^snapshot$/.test(data['version']):
169
- break;
170
- case /^preview$|^[1-2]$/.test(data['version']):
171
- source_url = `${getcomposer}/composer-${data['version']}.phar`;
172
- break;
173
- case /^\d+\.\d+\.\d+[\w-]*$/.test(data['version']):
174
- cache_url = `${github}/${data['repository']}/releases/download/${data['version']}/composer.phar`;
175
- source_url = `${getcomposer}/composer-${data['version']}.phar`;
176
- break;
177
- default:
178
- source_url = `${getcomposer}/composer-stable.phar`;
179
- }
180
- const use_cache = (await utils.readEnv('NO_TOOLS_CACHE')) !== 'true';
181
- data['url'] = use_cache ? `${cache_url},${source_url}` : source_url;
182
- data['version_parameter'] = data['version'];
183
- return await addArchive(data);
184
- }
185
- exports.addComposer = addComposer;
186
- async function addDeployer(data) {
187
- if (data['version'] === 'latest') {
188
- data['url'] = data['domain'] + '/deployer.phar';
189
- }
190
- else {
191
- data['url'] =
192
- data['domain'] + '/releases/v' + data['version'] + '/deployer.phar';
193
- }
194
- return await addArchive(data);
195
- }
196
- exports.addDeployer = addDeployer;
197
- async function addDevTools(data) {
198
- switch (data['os_version']) {
199
- case 'linux':
200
- case 'darwin':
201
- return 'add_devtools ' + data['tool'];
202
- case 'win32':
203
- return await utils.addLog('$tick', data['tool'], data['tool'] + ' is not a windows tool', 'win32');
204
- default:
205
- return await utils.log('Platform ' + data['os_version'] + ' is not supported', data['os_version'], 'error');
206
- }
207
- }
208
- exports.addDevTools = addDevTools;
209
- async function addPECL(data) {
210
- return await utils.getCommand(data['os_version'], 'pecl');
211
- }
212
- exports.addPECL = addPECL;
213
- async function addPhing(data) {
214
- data['url'] =
215
- data['domain'] + '/get/phing-' + data['version'] + data['extension'];
216
- return await addArchive(data);
217
- }
218
- exports.addPhing = addPhing;
219
- async function addPhive(data) {
220
- switch (true) {
221
- case /5\.[3-5]/.test(data['php_version']):
222
- return await utils.addLog('$cross', 'phive', 'Phive is not supported on PHP ' + data['php_version'], data['os_version']);
223
- case /5\.6|7\.0/.test(data['php_version']):
224
- data['version'] = data['version'].replace('latest', '0.12.1');
225
- break;
226
- case /7\.1/.test(data['php_version']):
227
- data['version'] = data['version'].replace('latest', '0.13.5');
228
- break;
229
- case /7\.2/.test(data['php_version']):
230
- data['version'] = data['version'].replace('latest', '0.14.5');
231
- break;
232
- }
233
- if (data['version'] === 'latest') {
234
- data['domain'] = data['domain'] + '/releases';
235
- }
236
- else {
237
- data['domain'] = [
238
- data['github'],
239
- data['repository'],
240
- 'releases/download',
241
- data['version']
242
- ].join('/');
243
- }
244
- data['url'] = await getPharUrl(data);
245
- return await addArchive(data);
246
- }
247
- exports.addPhive = addPhive;
248
- async function addPHPUnitTools(data) {
249
- data['url'] = await getPharUrl(data);
250
- return await addArchive(data);
251
- }
252
- exports.addPHPUnitTools = addPHPUnitTools;
253
- async function addSymfony(data) {
254
- let filename;
255
- switch (data['os_version']) {
256
- case 'linux':
257
- case 'darwin':
258
- filename = 'symfony_' + data['os_version'] + '_amd64';
259
- break;
260
- case 'win32':
261
- filename = 'symfony_windows_amd64.exe';
262
- break;
263
- default:
264
- return await utils.log('Platform ' + data['os_version'] + ' is not supported', data['os_version'], 'error');
265
- }
266
- if (data['version'] === 'latest') {
267
- data['uri'] = ['releases/latest/download', filename].join('/');
268
- }
269
- else {
270
- data['uri'] = ['releases/download', 'v' + data['version'], filename].join('/');
271
- }
272
- data['url'] = [data['domain'], data['repository'], data['uri']].join('/');
273
- return await addArchive(data);
274
- }
275
- exports.addSymfony = addSymfony;
276
- async function addWPCLI(data) {
277
- if (data['version'] === 'latest') {
278
- data['uri'] = 'wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true';
279
- data['url'] = [data['domain'], data['uri']].join('/');
280
- }
281
- else {
282
- data['extension'] = '-' + data['version'] + data['extension'];
283
- data['url'] = await getUrl(data);
284
- }
285
- return await addArchive(data);
286
- }
287
- exports.addWPCLI = addWPCLI;
288
- async function getData(release, php_version, os_version) {
289
- var _a, _b, _c, _d;
290
- const json_file = await utils.readFile('tools.json', 'src/configs');
291
- const json_objects = JSON.parse(json_file);
292
- release = release.replace(/\s+/g, '');
293
- const parts = release.split(':');
294
- const tool = parts[0];
295
- const version = parts[1];
296
- let data;
297
- if (Object.keys(json_objects).includes(tool)) {
298
- data = json_objects[tool];
299
- data['tool'] = tool;
300
- }
301
- else {
302
- const key = Object.keys(json_objects).find((key) => {
303
- return json_objects[key]['alias'] == tool;
304
- });
305
- if (key) {
306
- data = json_objects[key];
307
- data['tool'] = key;
308
- }
309
- else {
310
- data = {
311
- tool: tool.split('/')[1],
312
- repository: tool,
313
- type: 'composer'
314
- };
315
- data = !tool.includes('/') ? { tool: tool } : data;
316
- }
317
- }
318
- data['github'] = 'https://github.com';
319
- (_a = data['domain']) !== null && _a !== void 0 ? _a : (data['domain'] = data['github']);
320
- (_b = data['extension']) !== null && _b !== void 0 ? _b : (data['extension'] = '.phar');
321
- data['os_version'] = os_version;
322
- data['php_version'] = php_version;
323
- data['prefix'] = data['github'] === data['domain'] ? 'releases' : '';
324
- data['verb'] = data['github'] === data['domain'] ? 'download' : '';
325
- (_c = data['fetch_latest']) !== null && _c !== void 0 ? _c : (data['fetch_latest'] = 'false');
326
- data['version_parameter'] = JSON.stringify(data['version_parameter']) || '';
327
- (_d = data['version_prefix']) !== null && _d !== void 0 ? _d : (data['version_prefix'] = '');
328
- data['release'] = await getRelease(release, data);
329
- data['version'] = version
330
- ? await getVersion(version, data)
331
- : await getLatestVersion(data);
332
- return data;
333
- }
334
- exports.getData = getData;
335
- exports.functionRecord = {
336
- composer: addComposer,
337
- deployer: addDeployer,
338
- dev_tools: addDevTools,
339
- phive: addPhive,
340
- blackfire_player: addBlackfirePlayer,
341
- pecl: addPECL,
342
- phing: addPhing,
343
- phpunit: addPHPUnitTools,
344
- phpcpd: addPHPUnitTools,
345
- symfony: addSymfony,
346
- wp_cli: addWPCLI
347
- };
348
- async function addTools(tools_csv, php_version, os_version) {
349
- let script = '\n';
350
- if (tools_csv === 'none') {
351
- return '';
352
- }
353
- else {
354
- script += await utils.stepLog('Setup Tools', os_version);
355
- }
356
- const tools_list = await filterList(await utils.CSVArray(tools_csv));
357
- await utils.asyncForEach(tools_list, async function (release) {
358
- const data = await getData(release, php_version, os_version);
359
- script += '\n';
360
- switch (true) {
361
- case data['error'] !== undefined:
362
- script += await utils.addLog('$cross', data['tool'], data['error'], data['os_version']);
363
- break;
364
- case 'phar' === data['type']:
365
- data['url'] = await getUrl(data);
366
- script += await addArchive(data);
367
- break;
368
- case 'composer' === data['type']:
369
- script += await addPackage(data);
370
- break;
371
- case 'custom-package' === data['type']:
372
- script += await utils.customPackage(data['tool'].split('-')[0], 'tools', data['version'], data['os_version']);
373
- break;
374
- case 'custom-function' === data['type']:
375
- script += await exports.functionRecord[data['function']](data);
376
- break;
377
- case /^none$/.test(data['tool']):
378
- break;
379
- default:
380
- script += await utils.addLog('$cross', data['tool'], 'Tool ' + data['tool'] + ' is not supported', data['os_version']);
381
- break;
382
- }
383
- });
384
- return script;
385
- }
386
- exports.addTools = addTools;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.addTools = exports.addPackage = exports.addDevTools = exports.addArchive = exports.getCleanedToolsList = exports.getComposerUrl = exports.addComposer = exports.getSymfonyUri = exports.getDeployerUrl = exports.getPharUrl = exports.addPhive = exports.getUri = exports.parseTool = exports.getToolVersion = exports.getCommand = void 0;
23
+ const utils = __importStar(require("./utils"));
24
+ async function getCommand(os_version, suffix) {
25
+ switch (os_version) {
26
+ case 'linux':
27
+ case 'darwin':
28
+ return 'add_' + suffix + ' ';
29
+ case 'win32':
30
+ return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
31
+ default:
32
+ return await utils.log('Platform ' + os_version + ' is not supported', os_version, 'error');
33
+ }
34
+ }
35
+ exports.getCommand = getCommand;
36
+ async function getToolVersion(version) {
37
+ const semver_regex = /^(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-]+)*))?$/;
38
+ const composer_regex = /^stable$|^preview$|^snapshot$|^[1|2]$/;
39
+ version = version.replace(/[><=^]*/, '').replace(/^v(\d)/, '$1');
40
+ switch (true) {
41
+ case composer_regex.test(version):
42
+ case semver_regex.test(version):
43
+ return version;
44
+ default:
45
+ return 'latest';
46
+ }
47
+ }
48
+ exports.getToolVersion = getToolVersion;
49
+ async function parseTool(release) {
50
+ const parts = release.split(':');
51
+ const tool = parts[0];
52
+ const version = parts[1];
53
+ switch (version) {
54
+ case undefined:
55
+ return {
56
+ name: tool,
57
+ version: 'latest'
58
+ };
59
+ default:
60
+ return {
61
+ name: tool,
62
+ version: await getToolVersion(parts[1])
63
+ };
64
+ }
65
+ }
66
+ exports.parseTool = parseTool;
67
+ async function getUri(tool, extension, version, prefix, version_prefix, verb) {
68
+ switch (version) {
69
+ case 'latest':
70
+ return [prefix, version, verb, tool + extension]
71
+ .filter(Boolean)
72
+ .join('/');
73
+ default:
74
+ return [prefix, verb, version_prefix + version, tool + extension]
75
+ .filter(Boolean)
76
+ .join('/');
77
+ }
78
+ }
79
+ exports.getUri = getUri;
80
+ async function addPhive(version, php_version, os_version) {
81
+ switch (true) {
82
+ case /5\.6|7\.0/.test(php_version):
83
+ version = version.replace('latest', '0.12.1');
84
+ break;
85
+ case /7\.1/.test(php_version):
86
+ version = version.replace('latest', '0.13.5');
87
+ break;
88
+ case /7\.2/.test(php_version):
89
+ version = version.replace('latest', '0.14.5');
90
+ break;
91
+ }
92
+ switch (version) {
93
+ case 'latest':
94
+ return ((await getCommand(os_version, 'tool')) +
95
+ 'https://phar.io/releases/phive.phar phive');
96
+ default:
97
+ return ((await getCommand(os_version, 'tool')) +
98
+ 'https://github.com/phar-io/phive/releases/download/' +
99
+ version +
100
+ '/phive-' +
101
+ version +
102
+ '.phar phive');
103
+ }
104
+ }
105
+ exports.addPhive = addPhive;
106
+ async function getPharUrl(domain, tool, prefix, version) {
107
+ switch (version) {
108
+ case 'latest':
109
+ return domain + '/' + tool + '.phar';
110
+ default:
111
+ return domain + '/' + tool + '-' + prefix + version + '.phar';
112
+ }
113
+ }
114
+ exports.getPharUrl = getPharUrl;
115
+ async function getDeployerUrl(version) {
116
+ const deployer = 'https://deployer.org';
117
+ switch (version) {
118
+ case 'latest':
119
+ return deployer + '/deployer.phar';
120
+ default:
121
+ return deployer + '/releases/v' + version + '/deployer.phar';
122
+ }
123
+ }
124
+ exports.getDeployerUrl = getDeployerUrl;
125
+ async function getSymfonyUri(version, os_version) {
126
+ let filename = '';
127
+ switch (os_version) {
128
+ case 'linux':
129
+ case 'darwin':
130
+ filename = 'symfony_' + os_version + '_amd64';
131
+ break;
132
+ case 'win32':
133
+ filename = 'symfony_windows_amd64.exe';
134
+ break;
135
+ default:
136
+ return await utils.log('Platform ' + os_version + ' is not supported', os_version, 'error');
137
+ }
138
+ switch (version) {
139
+ case 'latest':
140
+ return 'releases/latest/download/' + filename;
141
+ default:
142
+ return 'releases/download/v' + version + '/' + filename;
143
+ }
144
+ }
145
+ exports.getSymfonyUri = getSymfonyUri;
146
+ async function addComposer(tools_list) {
147
+ const regex_any = /^composer($|:.*)/;
148
+ const regex_valid = /^composer:?($|preview$|snapshot$|v?[1-2]$|v?\d+\.\d+\.\d+[\w-]*$)/;
149
+ const regex_composer1_tools = /hirak|prestissimo|narrowspark|composer-prefetcher/;
150
+ const matches = tools_list.filter(tool => regex_valid.test(tool));
151
+ let composer = 'composer';
152
+ tools_list = tools_list.filter(tool => !regex_any.test(tool));
153
+ switch (true) {
154
+ case regex_composer1_tools.test(tools_list.join(' ')):
155
+ composer = 'composer:1';
156
+ break;
157
+ case matches[0] == undefined:
158
+ break;
159
+ default:
160
+ composer = matches[matches.length - 1].replace(/v(\d\S*)/, '$1');
161
+ break;
162
+ }
163
+ tools_list.unshift(composer);
164
+ return tools_list;
165
+ }
166
+ exports.addComposer = addComposer;
167
+ async function getComposerUrl(version) {
168
+ let cache_url = `https://github.com/shivammathur/composer-cache/releases/latest/download/composer-${version.replace('latest', 'stable')}.phar`;
169
+ switch (true) {
170
+ case /^snapshot$/.test(version):
171
+ return `${cache_url},https://getcomposer.org/composer.phar`;
172
+ case /^preview$|^[1-2]$/.test(version):
173
+ return `${cache_url},https://getcomposer.org/composer-${version}.phar`;
174
+ case /^\d+\.\d+\.\d+[\w-]*$/.test(version):
175
+ cache_url = `https://github.com/composer/composer/releases/download/${version}/composer.phar`;
176
+ return `${cache_url},https://getcomposer.org/composer-${version}.phar`;
177
+ default:
178
+ return `${cache_url},https://getcomposer.org/composer-stable.phar`;
179
+ }
180
+ }
181
+ exports.getComposerUrl = getComposerUrl;
182
+ async function getCleanedToolsList(tools_csv) {
183
+ let tools_list = await utils.CSVArray(tools_csv);
184
+ tools_list = await addComposer(tools_list);
185
+ tools_list = tools_list
186
+ .map(function (extension) {
187
+ return extension
188
+ .trim()
189
+ .replace(/codeception\/|hirak\/|robmorgan\/|narrowspark\/automatic-/, '');
190
+ })
191
+ .filter(Boolean);
192
+ return [...new Set(tools_list)];
193
+ }
194
+ exports.getCleanedToolsList = getCleanedToolsList;
195
+ async function addArchive(tool, url, os_version) {
196
+ return (await getCommand(os_version, 'tool')) + url + ' ' + tool;
197
+ }
198
+ exports.addArchive = addArchive;
199
+ async function addDevTools(tool, os_version) {
200
+ switch (os_version) {
201
+ case 'linux':
202
+ return ('add_devtools' +
203
+ '\n' +
204
+ (await utils.addLog('$tick', tool, 'Added', 'linux')));
205
+ case 'darwin':
206
+ return await utils.addLog('$tick', tool, 'Added', 'darwin');
207
+ case 'win32':
208
+ return await utils.addLog('$cross', tool, tool + ' is not a windows tool', 'win32');
209
+ default:
210
+ return await utils.log('Platform ' + os_version + ' is not supported', os_version, 'error');
211
+ }
212
+ }
213
+ exports.addDevTools = addDevTools;
214
+ async function addPackage(tool, release, prefix, os_version) {
215
+ const tool_command = await getCommand(os_version, 'composertool');
216
+ return tool_command + tool + ' ' + release + ' ' + prefix;
217
+ }
218
+ exports.addPackage = addPackage;
219
+ async function addTools(tools_csv, php_version, os_version) {
220
+ let script = '\n' + (await utils.stepLog('Setup Tools', os_version));
221
+ const tools_list = await getCleanedToolsList(tools_csv);
222
+ await utils.asyncForEach(tools_list, async function (release) {
223
+ const tool_data = await parseTool(release);
224
+ const tool = tool_data.name;
225
+ const version = tool_data.version;
226
+ const github = 'https://github.com/';
227
+ let uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
228
+ script += '\n';
229
+ let url = '';
230
+ switch (tool) {
231
+ case 'cs2pr':
232
+ uri = await getUri(tool, '', version, 'releases', '', 'download');
233
+ url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
234
+ script += await addArchive(tool, url, os_version);
235
+ break;
236
+ case 'php-cs-fixer':
237
+ uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
238
+ url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
239
+ script += await addArchive(tool, url, os_version);
240
+ break;
241
+ case 'phpcs':
242
+ case 'phpcbf':
243
+ url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
244
+ script += await addArchive(tool, url, os_version);
245
+ break;
246
+ case 'phive':
247
+ script += await addPhive(version, php_version, os_version);
248
+ break;
249
+ case 'phpstan':
250
+ url = github + 'phpstan/phpstan/' + uri;
251
+ script += await addArchive(tool, url, os_version);
252
+ break;
253
+ case 'phpmd':
254
+ url = github + 'phpmd/phpmd/' + uri;
255
+ script += await addArchive(tool, url, os_version);
256
+ break;
257
+ case 'psalm':
258
+ url = github + 'vimeo/psalm/' + uri;
259
+ script += await addArchive(tool, url, os_version);
260
+ break;
261
+ case 'composer':
262
+ url = await getComposerUrl(version);
263
+ script += await addArchive('composer', url, os_version);
264
+ break;
265
+ case 'codeception':
266
+ script += await addPackage(tool, release, 'codeception/', os_version);
267
+ break;
268
+ case 'phpcpd':
269
+ case 'phpunit':
270
+ url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
271
+ script += await addArchive(tool, url, os_version);
272
+ break;
273
+ case 'deployer':
274
+ url = await getDeployerUrl(version);
275
+ script += await addArchive(tool, url, os_version);
276
+ break;
277
+ case 'phinx':
278
+ script += await addPackage(tool, release, 'robmorgan/', os_version);
279
+ break;
280
+ case 'prestissimo':
281
+ script += await addPackage(tool, release, 'hirak/', os_version);
282
+ break;
283
+ case 'composer-prefetcher':
284
+ script += await addPackage(tool, release, 'narrowspark/automatic-', os_version);
285
+ break;
286
+ case 'pecl':
287
+ script += await getCommand(os_version, 'pecl');
288
+ break;
289
+ case 'php-config':
290
+ case 'phpize':
291
+ script += await addDevTools(tool, os_version);
292
+ break;
293
+ case 'symfony':
294
+ case 'symfony-cli':
295
+ uri = await getSymfonyUri(version, os_version);
296
+ url = github + 'symfony/cli/' + uri;
297
+ script += await addArchive('symfony', url, os_version);
298
+ break;
299
+ default:
300
+ script += await utils.addLog('$cross', tool, 'Tool ' + tool + ' is not supported', os_version);
301
+ break;
302
+ }
303
+ });
304
+ return script;
305
+ }
306
+ exports.addTools = addTools;
387
307
  //# sourceMappingURL=tools.js.map