2019-12-27 08:26:49 +07:00
|
|
|
import * as utils from './utils';
|
|
|
|
|
|
|
|
export async function getToolCommand(os_version: string): Promise<string> {
|
|
|
|
switch (os_version) {
|
|
|
|
case 'linux':
|
|
|
|
case 'darwin':
|
|
|
|
return 'add_tool ';
|
|
|
|
case 'win32':
|
|
|
|
return 'Add-Tool ';
|
|
|
|
default:
|
|
|
|
return await utils.log(
|
|
|
|
'Platform ' + os_version + ' is not supported',
|
|
|
|
os_version,
|
|
|
|
'error'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function getPECLCommand(os_version: string): Promise<string> {
|
|
|
|
switch (os_version) {
|
|
|
|
case 'linux':
|
|
|
|
case 'darwin':
|
|
|
|
return 'add_pecl ';
|
|
|
|
case 'win32':
|
|
|
|
return 'Add-PECL ';
|
|
|
|
default:
|
|
|
|
return await utils.log(
|
|
|
|
'Platform ' + os_version + ' is not supported',
|
|
|
|
os_version,
|
|
|
|
'error'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-31 05:56:18 +07:00
|
|
|
export async function linkTool(
|
|
|
|
tool: string,
|
|
|
|
os_version: string
|
|
|
|
): Promise<string> {
|
|
|
|
switch (os_version) {
|
|
|
|
case 'linux':
|
|
|
|
case 'darwin':
|
|
|
|
return (
|
|
|
|
'sudo ln -s "$(composer -q global config home)"/vendor/bin/' +
|
|
|
|
tool +
|
|
|
|
' /usr/local/bin/' +
|
|
|
|
tool
|
|
|
|
);
|
|
|
|
case 'win32':
|
|
|
|
return (
|
|
|
|
'$composer_dir = composer -q global config home | % {$_ -replace "/", "\\"}' +
|
|
|
|
'\n' +
|
|
|
|
'Add-Content -Path $PsHome\\profile.ps1 -Value "New-Alias ' +
|
|
|
|
tool +
|
|
|
|
' $composer_dir\\vendor\\bin\\' +
|
|
|
|
tool +
|
|
|
|
'.bat"'
|
|
|
|
);
|
|
|
|
default:
|
|
|
|
return await utils.log(
|
|
|
|
'Platform ' + os_version + ' is not supported',
|
|
|
|
os_version,
|
|
|
|
'error'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-27 08:26:49 +07:00
|
|
|
/**
|
|
|
|
* Setup tools
|
|
|
|
*
|
|
|
|
* @param tool_csv
|
|
|
|
* @param os_version
|
|
|
|
*/
|
|
|
|
export async function addTools(
|
|
|
|
tools_csv: string,
|
|
|
|
os_version: string
|
|
|
|
): Promise<string> {
|
2019-12-28 02:12:00 +07:00
|
|
|
let script = '\n' + (await utils.stepLog('Setup Tools', os_version));
|
2019-12-27 08:26:49 +07:00
|
|
|
let tools: Array<string> = await utils.CSVArray(tools_csv);
|
|
|
|
tools = tools.filter(tool => tool !== 'composer');
|
|
|
|
tools.unshift('composer');
|
|
|
|
await utils.asyncForEach(tools, async function(tool: string) {
|
|
|
|
script += '\n';
|
|
|
|
switch (tool) {
|
|
|
|
case 'php-cs-fixer':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar' +
|
|
|
|
' ' +
|
|
|
|
'php-cs-fixer';
|
|
|
|
break;
|
|
|
|
case 'phpcs':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpcs';
|
|
|
|
break;
|
|
|
|
case 'phpcbf':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpcbf';
|
|
|
|
break;
|
|
|
|
case 'phpcpd':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/sebastianbergmann/phpcpd/releases/latest/download/phpcpd.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpcpd';
|
|
|
|
break;
|
|
|
|
case 'phpstan':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpstan';
|
|
|
|
break;
|
|
|
|
case 'phpmd':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpmd';
|
|
|
|
break;
|
2019-12-28 02:12:00 +07:00
|
|
|
case 'psalm':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar' +
|
|
|
|
' ' +
|
|
|
|
'psalm';
|
|
|
|
break;
|
|
|
|
case 'phinx':
|
|
|
|
script +=
|
|
|
|
'composer global require robmorgan/phinx' +
|
2019-12-31 05:56:18 +07:00
|
|
|
(await utils.suppressOutput(os_version)) +
|
|
|
|
'\n' +
|
|
|
|
(await linkTool('phinx', os_version)) +
|
|
|
|
'\n' +
|
|
|
|
(await utils.addLog('$tick', 'phinx', 'Added', os_version));
|
2019-12-28 02:12:00 +07:00
|
|
|
break;
|
2019-12-27 08:26:49 +07:00
|
|
|
case 'composer':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
2019-12-28 02:12:00 +07:00
|
|
|
'https://github.com/composer/composer/releases/latest/download/composer.phar' +
|
2019-12-27 08:26:49 +07:00
|
|
|
' ' +
|
|
|
|
'composer';
|
|
|
|
break;
|
|
|
|
case 'codeception':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://codeception.com/codecept.phar' +
|
|
|
|
' ' +
|
|
|
|
'codeception';
|
|
|
|
break;
|
|
|
|
case 'phpunit':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://phar.phpunit.de/phpunit.phar' +
|
|
|
|
' ' +
|
|
|
|
'phpunit';
|
|
|
|
break;
|
|
|
|
case 'deployer':
|
|
|
|
script +=
|
|
|
|
(await getToolCommand(os_version)) +
|
|
|
|
'https://deployer.org/deployer.phar' +
|
|
|
|
' ' +
|
|
|
|
'deployer';
|
|
|
|
break;
|
|
|
|
case 'prestissimo':
|
|
|
|
script +=
|
|
|
|
'composer global require hirak/prestissimo' +
|
2019-12-31 05:56:18 +07:00
|
|
|
(await utils.suppressOutput(os_version)) +
|
|
|
|
'\n' +
|
|
|
|
(await utils.addLog(
|
|
|
|
'$tick',
|
|
|
|
'hirak/prestissimo',
|
|
|
|
'Added',
|
|
|
|
os_version
|
|
|
|
));
|
2019-12-27 08:26:49 +07:00
|
|
|
break;
|
2020-01-04 13:22:15 +07:00
|
|
|
case 'composer-prefetcher':
|
|
|
|
script +=
|
|
|
|
'composer global require narrowspark/automatic-composer-prefetcher' +
|
|
|
|
(await utils.suppressOutput(os_version)) +
|
|
|
|
'\n' +
|
|
|
|
(await utils.addLog(
|
|
|
|
'$tick',
|
|
|
|
'narrowspark/automatic-composer-prefetcher',
|
|
|
|
'Added',
|
|
|
|
os_version
|
|
|
|
));
|
|
|
|
break;
|
2019-12-27 08:26:49 +07:00
|
|
|
case 'pecl':
|
|
|
|
script += await getPECLCommand(os_version);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
script += await utils.log(
|
|
|
|
'Tool ' + tool + ' is not supported',
|
|
|
|
os_version,
|
|
|
|
'error'
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
return script;
|
|
|
|
}
|