Improve Logs and tests

This commit is contained in:
Shivam Mathur
2019-10-17 01:41:13 +05:30
parent 62beed29e3
commit a6aaa1db78
20 changed files with 615 additions and 360 deletions

View File

@ -6,19 +6,35 @@ import * as utils from './utils';
* @param ini_values_csv
* @param os_version
*/
export async function addINIValues(ini_values_csv: string, os_version: string) {
export async function addINIValues(
ini_values_csv: string,
os_version: string,
no_step = false
): Promise<string> {
let script: string = '\n';
switch (no_step) {
case true:
script +=
(await utils.stepLog('Add php.ini values', os_version)) +
(await utils.suppressOutput(os_version)) +
'\n';
break;
case false:
default:
script += (await utils.stepLog('Add php.ini values', os_version)) + '\n';
break;
}
switch (os_version) {
case 'win32':
return await addINIValuesWindows(ini_values_csv);
return script + (await addINIValuesWindows(ini_values_csv));
case 'darwin':
case 'linux':
return await addINIValuesUnix(ini_values_csv);
return script + (await addINIValuesUnix(ini_values_csv));
default:
return await utils.log(
'Platform ' + os_version + ' is not supported',
os_version,
'error',
'Add Config'
'error'
);
}
}
@ -32,7 +48,12 @@ export async function addINIValuesUnix(
ini_values_csv: string
): Promise<string> {
let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
let script: string = '\n';
await utils.asyncForEach(ini_values, async function(line: string) {
script +=
(await utils.addLog('$tick', line, 'Added to php.ini', 'linux')) + '\n';
});
return 'echo "' + ini_values.join('\n') + '" >> $ini_file' + script;
}
/**
@ -44,7 +65,15 @@ export async function addINIValuesWindows(
ini_values_csv: string
): Promise<string> {
let ini_values: Array<string> = await utils.INIArray(ini_values_csv);
let script: string = '\n';
await utils.asyncForEach(ini_values, async function(line: string) {
script +=
(await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
});
return (
'Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n'
'Add-Content C:\\tools\\php\\php.ini "' +
ini_values.join('\n') +
'"' +
script
);
}

View File

@ -15,13 +15,15 @@ export async function addCoverage(
os_version: string
): Promise<string> {
coverage_driver.toLowerCase();
let script: string =
'\n' + (await utils.stepLog('Setup Coverage', os_version));
switch (coverage_driver) {
case 'pcov':
return addCoveragePCOV(version, os_version);
return script + (await addCoveragePCOV(version, os_version));
case 'xdebug':
return addCoverageXdebug(version, os_version);
return script + (await addCoverageXdebug(version, os_version));
case 'none':
return disableCoverage(version, os_version);
return script + (await disableCoverage(version, os_version));
default:
return '';
}
@ -34,21 +36,17 @@ export async function addCoverage(
* @param os_version
*/
export async function addCoverageXdebug(version: string, os_version: string) {
let script: string = '\n';
script += await extensions.addExtension(
'xdebug',
version,
os_version,
'Set Coverage Driver'
return (
(await extensions.addExtension('xdebug', version, os_version, true)) +
(await utils.suppressOutput(os_version)) +
'\n' +
(await utils.addLog(
'$tick',
'xdebug',
'Xdebug enabled as coverage driver',
os_version
))
);
script += await utils.log(
'Xdebug enabled as coverage driver',
os_version,
'success',
'Set Coverage Driver'
);
return script;
}
/**
@ -61,13 +59,12 @@ export async function addCoveragePCOV(version: string, os_version: string) {
let script: string = '\n';
switch (version) {
default:
script += await extensions.addExtension(
'pcov',
version,
os_version,
'Set Coverage Driver'
);
script += await config.addINIValues('pcov.enabled=1', os_version);
script +=
(await extensions.addExtension('pcov', version, os_version, true)) +
(await utils.suppressOutput(os_version)) +
'\n';
script +=
(await config.addINIValues('pcov.enabled=1', os_version, true)) + '\n';
// add command to disable xdebug and enable pcov
switch (os_version) {
@ -90,21 +87,21 @@ export async function addCoveragePCOV(version: string, os_version: string) {
}
// success
script += await utils.log(
script += await utils.addLog(
'$tick',
'coverage: pcov',
'PCOV enabled as coverage driver',
os_version,
'success',
'Set Coverage Driver'
os_version
);
// version is not supported
break;
case '5.6':
case '7.0':
script += await utils.log(
'PCOV requires PHP 7.1 or newer',
os_version,
'warning',
'Set Coverage Driver'
script += await utils.addLog(
'$cross',
'pcov',
'PHP 7.1 or newer is required',
os_version
);
break;
}
@ -148,11 +145,11 @@ export async function disableCoverage(version: string, os_version: string) {
'if(php -m | findstr -i pcov) { Disable-PhpExtension pcov C:\\tools\\php }\n';
break;
}
script += await utils.log(
script += await utils.addLog(
'$tick',
'none',
'Disabled Xdebug and PCOV',
os_version,
'success',
'Set Coverage Driver'
os_version
);
return script;

View File

@ -12,21 +12,33 @@ export async function addExtension(
extension_csv: string,
version: string,
os_version: string,
log_prefix = 'Add Extension'
no_step = false
): Promise<string> {
let script: string = '\n';
switch (no_step) {
case true:
script +=
(await utils.stepLog('Setup Extensions', os_version)) +
(await utils.suppressOutput(os_version));
break;
case false:
default:
script += await utils.stepLog('Setup Extensions', os_version);
break;
}
switch (os_version) {
case 'win32':
return await addExtensionWindows(extension_csv, version, log_prefix);
return script + (await addExtensionWindows(extension_csv, version));
case 'darwin':
return await addExtensionDarwin(extension_csv, version, log_prefix);
return script + (await addExtensionDarwin(extension_csv, version));
case 'linux':
return await addExtensionLinux(extension_csv, version, log_prefix);
return script + (await addExtensionLinux(extension_csv, version));
default:
return await utils.log(
'Platform ' + os_version + ' is not supported',
os_version,
'error',
log_prefix
'error'
);
}
}
@ -39,8 +51,7 @@ export async function addExtension(
*/
export async function addExtensionDarwin(
extension_csv: string,
version: string,
log_prefix: string
version: string
): Promise<string> {
let extensions: Array<string> = await utils.extensionArray(extension_csv);
let script: string = '\n';
@ -65,15 +76,12 @@ export async function addExtensionDarwin(
break;
}
script +=
'add_extension ' +
'\nadd_extension ' +
extension +
' "' +
install_command +
'" ' +
(await utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
(await utils.getExtensionPrefix(extension));
});
return script;
}
@ -86,8 +94,7 @@ export async function addExtensionDarwin(
*/
export async function addExtensionWindows(
extension_csv: string,
version: string,
log_prefix: string
version: string
): Promise<string> {
let extensions: Array<string> = await utils.extensionArray(extension_csv);
let script: string = '\n';
@ -112,15 +119,12 @@ export async function addExtensionWindows(
break;
}
script +=
'Add-Extension ' +
'\nAdd-Extension ' +
extension +
' "' +
install_command +
'" ' +
(await utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
(await utils.getExtensionPrefix(extension));
});
return script;
}
@ -133,8 +137,7 @@ export async function addExtensionWindows(
*/
export async function addExtensionLinux(
extension_csv: string,
version: string,
log_prefix: string
version: string
): Promise<string> {
let extensions: Array<string> = await utils.extensionArray(extension_csv);
let script: string = '\n';
@ -170,15 +173,12 @@ export async function addExtensionLinux(
break;
}
script +=
'add_extension ' +
'\nadd_extension ' +
extension +
' "' +
install_command +
'" ' +
(await utils.getExtensionPrefix(extension)) +
' "' +
log_prefix +
'"\n';
(await utils.getExtensionPrefix(extension));
});
return script;
}

View File

@ -5,76 +5,52 @@ import * as extensions from './extensions';
import * as config from './config';
import * as coverage from './coverage';
/**
* Build the script
*
* @param filename
* @param version
* @param os_version
*/
async function build(filename: string, version: string, os_version: string) {
// taking inputs
let extension_csv: string = await utils.getInput('extension-csv', false);
let ini_values_csv: string = await utils.getInput('ini-values-csv', false);
let coverage_driver: string = await utils.getInput('coverage', false);
let script: string = await utils.readScript(filename, version, os_version);
if (extension_csv) {
script += await extensions.addExtension(extension_csv, version, os_version);
}
if (ini_values_csv) {
script += await config.addINIValues(ini_values_csv, os_version);
}
if (coverage_driver) {
script += await coverage.addCoverage(coverage_driver, version, os_version);
}
await utils.writeScript(filename, version, script);
}
/**
* Run the script
*/
async function run() {
try {
// taking inputs
let version: string = await utils.getInput('php-version', true);
let extension_csv: string = await utils.getInput('extension-csv', false);
let ini_values_csv: string = await utils.getInput('ini-values-csv', false);
let coverage_driver: string = await utils.getInput('coverage', false);
let os_version: string = process.platform;
let version: string = await utils.getInput('php-version', true);
// check the os version and run the respective script
if (os_version == 'darwin') {
let darwin: string = await utils.readScript(
'darwin.sh',
version,
os_version
);
darwin += await extensions.addExtension(
extension_csv,
version,
os_version
);
darwin += await config.addINIValues(ini_values_csv, os_version);
darwin += await coverage.addCoverage(
coverage_driver,
version,
os_version
);
await utils.writeScript('darwin.sh', version, darwin);
await build('darwin.sh', version, os_version);
await exec('sh ./' + version + 'darwin.sh ' + version);
} else if (os_version == 'win32') {
let windows: string = await utils.readScript(
'win32.ps1',
version,
os_version
);
windows += await extensions.addExtension(
extension_csv,
version,
os_version
);
windows += await config.addINIValues(ini_values_csv, os_version);
windows += await coverage.addCoverage(
coverage_driver,
version,
os_version
);
await utils.writeScript('win32.ps1', version, windows);
await build('win32.ps1', version, os_version);
await exec('powershell .\\' + version + 'win32.ps1 -version ' + version);
} else if (os_version == 'linux') {
let linux: string = await utils.readScript(
'linux.sh',
version,
os_version
);
linux += await extensions.addExtension(
extension_csv,
version,
os_version
);
linux += await config.addINIValues(ini_values_csv, os_version);
linux += await coverage.addCoverage(coverage_driver, version, os_version);
await utils.writeScript('linux.sh', version, linux);
await build('linux.sh', version, os_version);
await exec('./' + version + 'linux.sh ' + version);
}
} catch (err) {
core.setFailed(err.message);
} catch (error) {
core.setFailed(error.message);
}
}

View File

@ -1,5 +1,28 @@
tick="✓"
cross="✗"
step_log() {
message=$1
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
}
add_log() {
mark=$1
subject=$2
message=$3
if [ "$mark" = "$tick" ]; then
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
else
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
fi
}
version='7.4.0RC3'
brew install pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl >/dev/null 2>&1
step_log "Setup dependencies"
for package in pkg-config autoconf bison re2c openssl@1.1 krb5 enchant libffi freetype intltool icu4c libiconv t1lib gd libzip gmp tidyp libxml2 libxslt postgresql curl;
do
brew install "$package" >/dev/null 2>&1
add_log "$tick" "$package" "Installed"
done
brew link icu4c gettext --force >/dev/null 2>&1
for package in gettext gmp krb5 icu4c bison openssl@1.1 libxml2 libffi libxslt libiconv pkgconfig enchant krb5 readline libedit freetype;
@ -36,6 +59,8 @@ echo 'export EXTRA_LIBS="/usr/local/opt/readline/lib/libhistory.dylib
/usr/local/opt/icu4c/lib/libicuuc.dylib"'
} >> ~/.bash_profile
config_file=$(pwd)/config.yaml
step_log "Setup PHPBrew"
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew >/dev/null 2>&1
chmod +x ./phpbrew
sudo mv phpbrew /usr/local/bin/phpbrew
@ -47,37 +72,43 @@ sudo chmod -R 777 /opt/phpbrew
export PHPBREW_ROOT=/opt/phpbrew
export PHPBREW_HOME=/opt/phpbrew
echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
add_log "$tick" "PHPBrew" "Installed"
source ~/.bash_profile >/dev/null 2>&1
source ~/.bashrc >/dev/null 2>&1
step_log "Setup PHP and Composer"
phpbrew install -j 6 $version +dev >/dev/null 2>&1
phpbrew switch $version
sudo ln -sf /opt/phpbrew/php/php-$version/bin/* /usr/local/bin/
sudo ln -sf /opt/phpbrew/php/php-$version/etc/php.ini /etc/php.ini
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
ext_dir=$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||")
pecl config-set php_ini "$ini_file"
pecl config-set php_ini "$ini_file" >/dev/null 2>&1
sudo chmod 777 "$ini_file"
brew install composer
brew install composer >/dev/null 2>&1
add_extension()
{
add_log "$tick" "PHP" "Installed PHP$version"
add_log "$tick" "Composer" "Installed"
add_extension() {
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
echo "$prefix=$extension" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
add_log "$tick" "$extension" "Enabled"
elif ! php -m | grep -i -q "$extension"; then
exists=$(curl -sL https://pecl.php.net/json.php?package="$extension" -w "%{http_code}" -o /dev/null)
if [ "$exists" = "200" ]; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not install $extension on PHP$version\033[0m";
(
eval "$install_command" && \
add_log "$tick" "$extension" "Installed and enabled"
) || add_log "$cross" "$extension" "Could not install $extension on PHP$version"
else
if ! php -m | grep -i -q "$extension"; then
echo "\033[31;1m$log_prefix: Could not find $extension for PHP$version on PECL\033[0m";
add_log "$cross" "$extension" "Could not find $extension for PHP$version on PECL"
fi
fi
fi

View File

@ -1,37 +1,57 @@
tick="✓"
cross="✗"
step_log() {
message=$1
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
}
add_log() {
mark=$1
subject=$2
message=$3
if [ "$mark" = "$tick" ]; then
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
else
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
fi
}
version=$1
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
if [ "$1" = "5.6" ] || [ "$1" = "7.0" ]; then
brew tap exolnet/homebrew-deprecated >/dev/null 2>&1
fi
step_log "Setup PHP and Composer"
brew install php@"$1" composer >/dev/null 2>&1
brew link --force --overwrite php@"$1" >/dev/null 2>&1
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
echo "date.timezone=UTC" >> "$ini_file"
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
sudo chmod 777 "$ini_file"
mkdir -p "$(pecl config-get ext_dir)"
composer global require hirak/prestissimo >/dev/null 2>&1
php -v
composer -V
add_log "$tick" "PHP" "Installed PHP$version"
add_log "$tick" "Composer" "Installed"
add_extension()
{
add_extension() {
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
echo "$prefix=$extension" >>"$ini_file" && add_log $tick "$extension" "Enabled"
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
add_log "$tick" "$extension" "Enabled"
elif ! php -m | grep -i -q "$extension"; then
exists=$(curl -sL https://pecl.php.net/json.php?package="$extension" -w "%{http_code}" -o /dev/null)
if [ "$exists" = "200" ]; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not install $extension on PHP$version\033[0m";
(
eval "$install_command" && \
add_log "$tick" "$extension" "Installed and enabled"
) || add_log "$cross" "$extension" "Could not install $extension on PHP$version"
else
if ! php -m | grep -i -q "$extension"; then
echo "\033[31;1m$log_prefix: Could not find $extension for PHP$version on PECL\033[0m";
add_log "$cross" "$extension" "Could not find $extension for PHP$version on PECL"
fi
fi
fi

View File

@ -1,5 +1,25 @@
tick="✓"
cross="✗"
step_log() {
message=$1
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
}
add_log() {
mark=$1
subject=$2
message=$3
if [ "$mark" = "$tick" ]; then
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
else
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
fi
}
existing_version=$(php-config --version | cut -c 1-3)
version=$1
status="Switched to PHP$version"
step_log "Setup PHP and Composer"
if [ "$existing_version" != "$1" ]; then
if [ ! -e "/usr/bin/php$1" ]; then
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/php -y >/dev/null 2>&1
@ -9,13 +29,22 @@ if [ "$existing_version" != "$1" ]; then
else
sudo DEBIAN_FRONTEND=noninteractive apt install -y php"$1" php"$1"-dev curl php"$1"-curl >/dev/null 2>&1
fi
status="Installed PHP$version"
fi
for tool in php phar phar.phar php-cgi php-config phpize; do
if [ -e "/usr/bin/$tool$1" ]; then
sudo update-alternatives --set $tool /usr/bin/"$tool$1" &
sudo update-alternatives --set $tool /usr/bin/"$tool$1" >/dev/null 2>&1 &
fi
done
fi
fi
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
sudo chmod 777 "$ini_file"
sudo mkdir -p /run/php
add_log "$tick" "PHP" "$status"
if [ ! -e "/usr/bin/composer" ]; then
curl -s -L https://getcomposer.org/installer > composer-setup.php
@ -27,28 +56,22 @@ if [ ! -e "/usr/bin/composer" ]; then
fi
rm composer-setup.php
fi
composer global require hirak/prestissimo >/dev/null 2>&1
ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
sudo chmod 777 "$ini_file"
sudo mkdir -p /run/php
php -v
composer -V
add_log "$tick" "Composer" "Installed"
add_extension()
{
extension=$1
install_command=$2
prefix=$3
log_prefix=$4
if ! php -m | grep -i -q "$extension" && [ -e "$ext_dir/$extension.so" ]; then
echo "$prefix=$extension" >> "$ini_file" && echo "\033[32;1m$log_prefix: Enabled $extension\033[0m";
echo "$prefix=$extension" >> "$ini_file" && add_log "$tick" "$extension" "Enabled"
elif php -m | grep -i -q "$extension"; then
echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
add_log "$tick" "$extension" "Enabled"
elif ! php -m | grep -i -q "$extension"; then
eval "$install_command" && \
echo "\033[32;1m$log_prefix: Installed and enabled $extension\033[0m" || \
echo "\033[31;1m$log_prefix: Could not find php$version-$extension on APT repository\033[0m";
(
eval "$install_command" && \
add_log "$tick" "$extension" "Installed and enabled"
) || add_log "$cross" "$extension" "Could not find php$version-$extension"
fi
}
}

View File

@ -2,58 +2,69 @@ param (
[Parameter(Mandatory=$true)][string]$version = "7.3"
)
$tick = ([char]8730)
$cross = ([char]10007)
Function Step-Log($message) {
printf "\n\033[90;1m==> \033[0m\033[37;1m%s \033[0m" $message
}
Function Add-Log($mark, $subject, $message) {
$code = if($mark -eq $cross) {"31"} else {"32"}
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m" $code $mark $subject $message
}
if($version -eq '7.4') {
$version = '7.4RC'
}
Write-Host "Installing PhpManager" -ForegroundColor Blue
Step-Log "Setup PhpManager"
Install-Module -Name PhpManager -Force -Scope CurrentUser
printf "\n"
Add-Log $tick "PhpManager" "Installed"
$installed = $($(php -v)[0] -join '')[4..6] -join ''
Step-Log "Setup PHP and Composer"
$status = "Switched to PHP$version"
if($installed -ne $version) {
if($version -lt '7.0') {
Write-Host "Installing VcRedist"
Install-Module -Name VcRedist -Force
}
Write-Host "Installing PHP" -ForegroundColor Blue
Uninstall-Php C:\tools\php
Install-Php -Version $version -Architecture x86 -ThreadSafe $true -InstallVC -Path C:\tools\php$version -TimeZone UTC -InitialPhpIni Production -Force
Write-Host "Switch PHP" -ForegroundColor Blue
Install-Php -Version $version -Architecture x86 -ThreadSafe $true -InstallVC -Path C:\tools\php$version -TimeZone UTC -InitialPhpIni Production -Force >$null 2>&1
(Get-PhpSwitcher).targets
Initialize-PhpSwitcher -Alias C:\tools\php -Scope CurrentUser -Force
Add-PhpToSwitcher -Name $version -Path C:\tools\php$version -Force
Switch-Php $version -Force
$status = "Installed PHP$version"
}
Write-Host "Housekeeping in PHP.ini, enabling openssl" -ForegroundColor Blue
$ext_dir = "C:\tools\php\ext"
Add-Content C:\tools\php\php.ini "date.timezone = 'UTC'"
Set-PhpIniKey extension_dir $ext_dir
if($version -lt '7.4') {
Enable-PhpExtension openssl
} else {
Add-Content C:\tools\php\php.ini "extension=php_openssl.dll"
Copy-Item "php_pcov.dll" -Destination $ext_dir"\php_pcov.dll"
}
Add-Log $tick "PHP" $status
Write-Host "Installing Composer" -ForegroundColor Blue
Install-Composer -Scope System -Path C:\tools\php
php -v
composer -V
Add-Log $tick "Composer" "Installed"
Function Add-Extension($extension, $install_command, $prefix, $log_prefix)
Function Add-Extension($extension, $install_command, $prefix)
{
try {
$exist = Test-Path -Path C:\tools\php\ext\php_$extension.dll
if(!(php -m | findstr -i ${extension}) -and $exist) {
Add-Content C:\tools\php\php.ini "$prefix=php_$extension.dll"
Write-Host "$log_prefix`: Enabled $extension" -ForegroundColor green
Add-Log $tick $extension "Enabled"
} elseif(php -m | findstr -i $extension) {
Write-Host "$log_prefix`: $extension was already enabled" -ForegroundColor yellow
Add-Log $tick $extension "Enabled"
}
} catch [Exception] {
Write-Host "$log_prefix`: $extension could not be enabled" -ForegroundColor red
Add-Log $cross $extension "Could not enable"
}
$status = 404
@ -67,14 +78,14 @@ Function Add-Extension($extension, $install_command, $prefix, $log_prefix)
if(!(php -m | findstr -i $extension)) {
try {
Invoke-Expression $install_command
Write-Host "$log_prefix`: Installed and enabled $extension" -ForegroundColor green
Add-Log $tick $extension "Installed and enabled"
} catch [Exception] {
Write-Host "$log_prefix`: Could not install $extension on PHP $version" -ForegroundColor red
Add-Log $cross $extension "Could not install on PHP$version"
}
}
} else {
if(!(php -m | findstr -i $extension)) {
Write-Host "$log_prefix`: Could not find $extension for PHP$version on PECL" -ForegroundColor red
Add-Log $cross $extension "Could not find $extension for PHP$version on PECL"
}
}
}

View File

@ -43,7 +43,7 @@ export async function asyncForEach(
*
* @param files
*/
export async function readFiles74(files: Array<string>) {
export async function moveFiles(files: Array<string>) {
await asyncForEach(files, function(filename: string) {
fs.createReadStream(path.join(__dirname, '../src/' + filename)).pipe(
fs.createWriteStream(filename.split('/')[1], {mode: 0o755})
@ -67,7 +67,7 @@ export async function readScript(
case 'darwin':
switch (version) {
case '7.4':
await readFiles74([
await moveFiles([
'configs/config.yaml',
'scripts/xdebug_darwin.sh',
'scripts/pcov.sh'
@ -80,18 +80,17 @@ export async function readScript(
break;
case 'linux':
let files: Array<string> = ['scripts/phalcon.sh'];
await readFiles74(['scripts/phalcon.sh']);
switch (version) {
case '7.4':
files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
files = files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
break;
}
await readFiles74(files);
await moveFiles(files);
break;
case 'win32':
switch (version) {
case '7.4':
await readFiles74(['ext/php_pcov.dll']);
await moveFiles(['ext/php_pcov.dll']);
break;
}
break;
@ -164,51 +163,87 @@ export async function INIArray(ini_values_csv: string): Promise<Array<string>> {
}
}
/**
* Function to log a step
*
* @param message
* @param os_version
*/
export async function stepLog(
message: string,
os_version: string
): Promise<string> {
switch (os_version) {
case 'win32':
return 'Step-Log "' + message + '"';
case 'linux':
case 'darwin':
return 'step_log "' + message + '"';
default:
return await log(
'Platform ' + os_version + ' is not supported',
os_version,
'error'
);
}
}
/**
* Function to log a result
* @param mark
* @param subject
* @param message
*/
export async function addLog(
mark: string,
subject: string,
message: string,
os_version: string
): Promise<string> {
switch (os_version) {
case 'win32':
return 'Add-Log "' + mark + '" "' + subject + '" "' + message + '"';
case 'linux':
case 'darwin':
return 'add_log "' + mark + '" "' + subject + '" "' + message + '"';
default:
return await log(
'Platform ' + os_version + ' is not supported',
os_version,
'error'
);
}
}
/**
* Log to console
*
* @param message
* @param os_version
* @param log_type
* @param prefix
*/
export async function log(
message: string,
os_version: string,
log_type: string,
prefix = ''
log_type: string
): Promise<string> {
const unix_color: any = {
const color: any = {
error: '31',
success: '32',
warning: '33'
};
switch (prefix) {
case '':
prefix = '';
break;
default:
prefix = prefix + ': ';
break;
}
switch (os_version) {
case 'win32':
const color: any = {
error: 'red',
success: 'green',
warning: 'yellow'
};
return (
"Write-Host '" +
prefix +
message +
"' -ForegroundColor " +
color[log_type]
'printf "\\033[' + color[log_type] + ';1m' + message + ' \\033[0m"'
);
case 'linux':
case 'darwin':
default:
return (
'echo "\\033[' +
unix_color[log_type] +
';1m' +
prefix +
message +
'\\033[0m"'
);
return 'echo "\\033[' + color[log_type] + ';1m' + message + '\\033[0m"';
}
}
@ -228,3 +263,24 @@ export async function getExtensionPrefix(extension: string): Promise<string> {
return 'extension';
}
}
/**
* Function to get the suffix to suppress console output
*
* @param os_version
*/
export async function suppressOutput(os_version: string): Promise<string> {
switch (os_version) {
case 'win32':
return ' >$null 2>&1';
case 'linux':
case 'darwin':
return ' >/dev/null 2>&1';
default:
return await log(
'Platform ' + os_version + ' is not supported',
os_version,
'error'
);
}
}