Add support for composer packages using tools input

This commit is contained in:
Shivam Mathur
2021-04-17 02:56:47 +05:30
parent 3c6827c2c3
commit 23393c46d7
3 changed files with 112 additions and 151 deletions

View File

@ -32,12 +32,17 @@ export async function parseTool(
const parts: string[] = release.split(':');
const tool: string = parts[0];
const version: string | undefined = parts[1];
switch (version) {
case undefined:
switch (true) {
case version === undefined:
return {
name: tool,
version: 'latest'
};
case /^[\w.-]+\/[\w.-]+$/.test(tool):
return {
name: tool,
version: version
};
default:
return {
name: tool,
@ -283,29 +288,6 @@ export async function getComposerUrl(version: string): Promise<string> {
}
}
/**
* Function to get Tools list after cleanup
*
* @param tools_csv
*/
export async function getCleanedToolsList(
tools_csv: string
): Promise<string[]> {
let tools_list: string[] = await utils.CSVArray(tools_csv);
tools_list = await addComposer(tools_list);
tools_list = tools_list
.map(function (extension: string) {
return extension
.trim()
.replace(
/-agent|behat\/|codeception\/|hirak\/|icanhazstring\/|laravel\/|narrowspark\/automatic-|overtrue\/|phpspec\/|robmorgan\/|symfony\//,
''
);
})
.filter(Boolean);
return [...new Set(tools_list)];
}
/**
* Helper function to get script to setup a tool using a phar url
*
@ -387,7 +369,7 @@ export async function addTools(
os_version: string
): Promise<string> {
let script = '\n' + (await utils.stepLog('Setup Tools', os_version));
const tools_list: Array<string> = await getCleanedToolsList(tools_csv);
const tools_list = await addComposer(await utils.CSVArray(tools_csv));
await utils.asyncForEach(tools_list, async function (release: string) {
const tool_data: {name: string; version: string} = await parseTool(release);
const tool: string = tool_data.name;
@ -403,124 +385,123 @@ export async function addTools(
);
script += '\n';
let url = '';
switch (tool) {
case 'blackfire':
case 'grpc_php_plugin':
case 'protoc':
switch (true) {
case /^blackfire(-agent)?$/.test(tool):
script += await utils.customPackage(
'blackfire',
'tools',
version,
os_version
);
break;
case /^grpc_php_plugin$|^protoc$/.test(tool):
script += await utils.customPackage(tool, 'tools', version, os_version);
break;
case 'behat':
case 'codeception':
case 'phpspec':
case /^behat$|^codeception$|^phpspec$/.test(tool):
script += await addPackage(tool, release, tool + '/', os_version);
break;
case 'blackfire-player':
case /^blackfire-player$/.test(tool):
url = await getBlackfirePlayerUrl(version, php_version);
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'composer':
case /^composer$/.test(tool):
url = await getComposerUrl(version);
script += await addArchive('composer', url, os_version, version);
break;
case 'composer-normalize':
case /^composer-normalize$/.test(tool):
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'ergebnis/composer-normalize/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'composer-prefetcher':
case /^composer-prefetcher$/.test(tool):
script += await addPackage(
tool,
'automatic-' + tool,
release,
'narrowspark/automatic-',
'narrowspark/',
os_version
);
break;
case 'composer-require-checker':
case /^composer-require-checker$/.test(tool):
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'maglnet/ComposerRequireChecker/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'composer-unused':
case /^composer-unused$/.test(tool):
script += await addPackage(tool, release, 'icanhazstring/', os_version);
break;
case 'cs2pr':
case /^cs2pr$/.test(tool):
uri = await getUri(tool, '', version, 'releases', '', 'download');
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'deployer':
case /^deployer$/.test(tool):
url = await getDeployerUrl(version);
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'flex':
case /^flex$/.test(tool):
script += await addPackage(tool, release, 'symfony/', os_version);
break;
case 'infection':
case /^infection$/.test(tool):
url = github + 'infection/infection/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'pecl':
case /^pecl/.test(tool):
script += await utils.getCommand(os_version, 'pecl');
break;
case 'phan':
case /^phan$/.test(tool):
url = github + 'phan/phan/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
break;
case 'phing':
case /^phing$/.test(tool):
url = 'https://www.phing.info/get/phing-' + version + '.phar';
script += await addArchive(tool, url, os_version, '"-v"');
break;
case 'phinx':
case /^phinx$/.test(tool):
script += await addPackage(tool, release, 'robmorgan/', os_version);
break;
case 'phive':
case /^phive$/.test(tool):
script += await addPhive(version, php_version, os_version);
break;
case 'php-config':
case 'phpize':
case /^php(-config|ize)$/.test(tool):
script += await addDevTools(tool, os_version);
break;
case 'php-cs-fixer':
case /^php-cs-fixer$/.test(tool):
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'phpcbf':
case 'phpcs':
case /^php(cbf|cs)$/.test(tool):
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
break;
case 'phpcpd':
case 'phpunit':
case /^php(cpd|unit)$/.test(tool):
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
script += await addArchive(tool, url, os_version, '"--version"');
break;
case 'phplint':
case /^phplint$/.test(tool):
script += await addPackage(tool, release, 'overtrue/', os_version);
break;
case 'phpmd':
case /^phpmd$/.test(tool):
url = github + 'phpmd/phpmd/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
break;
case 'phpstan':
case /^phpstan$/.test(tool):
url = github + 'phpstan/phpstan/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
break;
case 'prestissimo':
case /^prestissimo$/.test(tool):
script += await addPackage(tool, release, 'hirak/', os_version);
break;
case 'psalm':
case /^psalm$/.test(tool):
url = github + 'vimeo/psalm/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
break;
case 'symfony':
case 'symfony-cli':
case /^symfony(-cli)?$/.test(tool):
uri = await getSymfonyUri(version, os_version);
url = github + 'symfony/cli/' + uri;
script += await addArchive('symfony', url, os_version, 'version');
break;
case 'vapor-cli':
case 'vapor':
case /^vapor(-cli)?$/.test(tool):
script += await addPackage(
'vapor-cli',
release,
@ -528,11 +509,18 @@ export async function addTools(
os_version
);
break;
case 'wp':
case 'wp-cli':
case /^wp(-cli)?$/.test(tool):
url = github + (await getWpCliUrl(version));
script += await addArchive('wp-cli', url, os_version, '"--version"');
break;
case /^[\w.-]+\/[\w.-]+$/.test(tool):
script += await addPackage(
tool.split('/')[1],
release.split('/')[1].replace(/\s+/, ''),
tool.split('/')[0] + '/',
os_version
);
break;
default:
script += await utils.addLog(
'$cross',