2019-09-20 09:41:20 +07:00
|
|
|
import * as utils from './utils';
|
|
|
|
|
2019-10-12 00:39:05 +07:00
|
|
|
/**
|
|
|
|
* Install and enable extensions
|
|
|
|
*
|
|
|
|
* @param extension_csv
|
|
|
|
* @param version
|
|
|
|
* @param os_version
|
|
|
|
* @param log_prefix
|
|
|
|
*/
|
2019-09-20 09:41:20 +07:00
|
|
|
export async function addExtension(
|
2019-09-26 04:03:39 +07:00
|
|
|
extension_csv: string,
|
2019-09-20 09:41:20 +07:00
|
|
|
version: string,
|
2019-10-04 21:04:05 +07:00
|
|
|
os_version: string,
|
|
|
|
log_prefix = 'Add Extension'
|
2019-09-20 09:41:20 +07:00
|
|
|
): Promise<string> {
|
2019-09-26 04:03:39 +07:00
|
|
|
switch (os_version) {
|
|
|
|
case 'win32':
|
2019-10-04 21:04:05 +07:00
|
|
|
return await addExtensionWindows(extension_csv, version, log_prefix);
|
2019-09-26 04:03:39 +07:00
|
|
|
case 'darwin':
|
2019-10-04 21:04:05 +07:00
|
|
|
return await addExtensionDarwin(extension_csv, version, log_prefix);
|
2019-09-26 04:03:39 +07:00
|
|
|
case 'linux':
|
2019-10-04 21:04:05 +07:00
|
|
|
return await addExtensionLinux(extension_csv, version, log_prefix);
|
2019-09-26 04:03:39 +07:00
|
|
|
default:
|
|
|
|
return await utils.log(
|
|
|
|
'Platform ' + os_version + ' is not supported',
|
|
|
|
os_version,
|
2019-10-04 21:04:05 +07:00
|
|
|
'error',
|
|
|
|
log_prefix
|
2019-09-26 04:03:39 +07:00
|
|
|
);
|
2019-09-20 09:41:20 +07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Install and enable extensions for darwin
|
|
|
|
*
|
|
|
|
* @param extension_csv
|
2019-09-26 04:03:39 +07:00
|
|
|
* @param version
|
2019-09-20 09:41:20 +07:00
|
|
|
*/
|
|
|
|
export async function addExtensionDarwin(
|
2019-09-26 04:03:39 +07:00
|
|
|
extension_csv: string,
|
2019-10-04 21:04:05 +07:00
|
|
|
version: string,
|
|
|
|
log_prefix: string
|
2019-09-20 09:41:20 +07:00
|
|
|
): Promise<string> {
|
|
|
|
let extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
|
|
let script: string = '\n';
|
|
|
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
2019-09-26 04:03:39 +07:00
|
|
|
extension = extension.toLowerCase();
|
2019-09-20 09:41:20 +07:00
|
|
|
// add script to enable extension is already installed along with php
|
2019-10-11 06:11:25 +07:00
|
|
|
let install_command: string = '';
|
|
|
|
switch (version + extension) {
|
|
|
|
case '7.4xdebug':
|
|
|
|
install_command =
|
|
|
|
'sh ./xdebug_darwin.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
|
|
|
break;
|
|
|
|
case '7.4pcov':
|
|
|
|
install_command =
|
|
|
|
'sh ./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
|
|
|
break;
|
|
|
|
case '5.6xdebug':
|
|
|
|
install_command = 'sudo pecl install xdebug-2.5.5 >/dev/null 2>&1';
|
2019-09-26 04:03:39 +07:00
|
|
|
break;
|
|
|
|
default:
|
2019-10-11 06:11:25 +07:00
|
|
|
install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
|
2019-09-26 04:03:39 +07:00
|
|
|
break;
|
2019-09-20 09:41:20 +07:00
|
|
|
}
|
2019-10-11 06:11:25 +07:00
|
|
|
script +=
|
|
|
|
'add_extension ' +
|
|
|
|
extension +
|
|
|
|
' "' +
|
|
|
|
install_command +
|
|
|
|
'" ' +
|
|
|
|
(await utils.getExtensionPrefix(extension)) +
|
|
|
|
' "' +
|
|
|
|
log_prefix +
|
|
|
|
'"\n';
|
2019-09-20 09:41:20 +07:00
|
|
|
});
|
|
|
|
return script;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Install and enable extensions for windows
|
|
|
|
*
|
|
|
|
* @param extension_csv
|
|
|
|
* @param version
|
|
|
|
*/
|
|
|
|
export async function addExtensionWindows(
|
|
|
|
extension_csv: string,
|
2019-10-04 21:04:05 +07:00
|
|
|
version: string,
|
|
|
|
log_prefix: string
|
2019-09-20 09:41:20 +07:00
|
|
|
): Promise<string> {
|
|
|
|
let extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
|
|
let script: string = '\n';
|
|
|
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
2019-09-26 04:03:39 +07:00
|
|
|
extension = extension.toLowerCase();
|
2019-09-20 09:41:20 +07:00
|
|
|
// add script to enable extension is already installed along with php
|
2019-09-26 04:03:39 +07:00
|
|
|
|
2019-10-11 06:11:25 +07:00
|
|
|
let install_command: string = '';
|
|
|
|
switch (version + extension) {
|
|
|
|
case '7.4xdebug':
|
|
|
|
const extension_url: string =
|
|
|
|
'https://xdebug.org/files/php_xdebug-2.8.0beta2-7.4-vc15.dll';
|
|
|
|
install_command =
|
|
|
|
'Invoke-WebRequest -Uri ' +
|
|
|
|
extension_url +
|
|
|
|
' -OutFile C:\\tools\\php\\ext\\php_xdebug.dll\n';
|
|
|
|
install_command += 'Enable-PhpExtension xdebug';
|
2019-09-26 04:03:39 +07:00
|
|
|
break;
|
2019-10-11 06:11:25 +07:00
|
|
|
case '7.2xdebug':
|
2019-09-26 04:03:39 +07:00
|
|
|
default:
|
2019-10-11 06:11:25 +07:00
|
|
|
install_command = 'Install-PhpExtension ' + extension;
|
2019-09-26 04:03:39 +07:00
|
|
|
break;
|
2019-09-20 09:41:20 +07:00
|
|
|
}
|
2019-10-11 06:11:25 +07:00
|
|
|
script +=
|
|
|
|
'Add-Extension ' +
|
|
|
|
extension +
|
|
|
|
' "' +
|
|
|
|
install_command +
|
|
|
|
'" ' +
|
|
|
|
(await utils.getExtensionPrefix(extension)) +
|
|
|
|
' "' +
|
|
|
|
log_prefix +
|
|
|
|
'"\n';
|
2019-09-20 09:41:20 +07:00
|
|
|
});
|
|
|
|
return script;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Install and enable extensions for linux
|
|
|
|
*
|
|
|
|
* @param extension_csv
|
|
|
|
* @param version
|
|
|
|
*/
|
|
|
|
export async function addExtensionLinux(
|
|
|
|
extension_csv: string,
|
2019-10-04 21:04:05 +07:00
|
|
|
version: string,
|
|
|
|
log_prefix: string
|
2019-09-20 09:41:20 +07:00
|
|
|
): Promise<string> {
|
|
|
|
let extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
|
|
let script: string = '\n';
|
|
|
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
2019-09-26 04:03:39 +07:00
|
|
|
extension = extension.toLowerCase();
|
2019-09-20 09:41:20 +07:00
|
|
|
// add script to enable extension is already installed along with php
|
2019-09-28 21:39:05 +07:00
|
|
|
|
|
|
|
let install_command: string = '';
|
|
|
|
switch (version + extension) {
|
|
|
|
case '7.4xdebug':
|
|
|
|
install_command =
|
|
|
|
'./xdebug.sh >/dev/null 2>&1 && echo "zend_extension=xdebug.so" >> $ini_file';
|
|
|
|
break;
|
|
|
|
case '7.4pcov':
|
|
|
|
install_command =
|
|
|
|
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
|
|
|
|
break;
|
2019-10-13 11:18:29 +07:00
|
|
|
case '7.2phalcon3':
|
|
|
|
case '7.3phalcon3':
|
|
|
|
install_command = './phalcon.sh master ' + version + ' >/dev/null 2>&1';
|
|
|
|
break;
|
|
|
|
case '7.2phalcon4':
|
|
|
|
case '7.3phalcon4':
|
|
|
|
install_command = './phalcon.sh 4.0.x ' + version + ' >/dev/null 2>&1';
|
|
|
|
break;
|
2019-09-28 21:39:05 +07:00
|
|
|
default:
|
|
|
|
install_command =
|
|
|
|
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
|
|
|
|
version +
|
|
|
|
'-' +
|
|
|
|
extension +
|
|
|
|
' >/dev/null 2>&1';
|
|
|
|
break;
|
|
|
|
}
|
2019-09-20 09:41:20 +07:00
|
|
|
script +=
|
2019-10-11 06:11:25 +07:00
|
|
|
'add_extension ' +
|
2019-09-20 09:41:20 +07:00
|
|
|
extension +
|
2019-10-11 06:11:25 +07:00
|
|
|
' "' +
|
2019-09-28 21:39:05 +07:00
|
|
|
install_command +
|
2019-10-11 06:11:25 +07:00
|
|
|
'" ' +
|
|
|
|
(await utils.getExtensionPrefix(extension)) +
|
|
|
|
' "' +
|
|
|
|
log_prefix +
|
|
|
|
'"\n';
|
2019-09-20 09:41:20 +07:00
|
|
|
});
|
|
|
|
return script;
|
|
|
|
}
|