From 84e88e382f793f5ccb55e98244e68a194b01a512 Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Thu, 27 Feb 2020 17:25:54 +0530 Subject: [PATCH] Fix and refactor ext-blackfire --- __tests__/extensions.test.ts | 12 +++---- __tests__/utils.test.ts | 10 +++--- dist/index.js | 56 ++++++++++++++--------------- src/extensions.ts | 44 +++++++++++------------ src/scripts/ext/blackfire.ps1 | 31 ++++++++-------- src/scripts/ext/blackfire.sh | 30 ++++------------ src/scripts/ext/blackfire_darwin.sh | 30 ++++------------ src/utils.ts | 23 +++++++----- 8 files changed, 105 insertions(+), 131 deletions(-) diff --git a/__tests__/extensions.test.ts b/__tests__/extensions.test.ts index 9f69fac9..262ce269 100644 --- a/__tests__/extensions.test.ts +++ b/__tests__/extensions.test.ts @@ -27,10 +27,10 @@ describe('Extension tests', () => { expect(win32).toContain('Platform fedora is not supported'); win32 = await extensions.addExtension('blackfire', '7.3', 'win32'); - expect(win32).toContain('blackfire.ps1 73'); + expect(win32).toContain('blackfire.ps1 7.3 1.31.0'); win32 = await extensions.addExtension('blackfire-1.31.0', '7.3', 'win32'); - expect(win32).toContain('blackfire.ps1 73 1.31.0'); + expect(win32).toContain('blackfire.ps1 7.3 1.31.0'); }); it('checking addExtensionOnLinux', async () => { @@ -71,10 +71,10 @@ describe('Extension tests', () => { expect(linux).toContain('phalcon.sh phalcon4 7.3'); linux = await extensions.addExtension('blackfire', '7.3', 'linux'); - expect(linux).toContain('blackfire.sh 7.3 73'); + expect(linux).toContain('blackfire.sh 7.3 1.31.0'); linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux'); - expect(linux).toContain('blackfire.sh 7.3 73 1.31.0'); + expect(linux).toContain('blackfire.sh 7.3 1.31.0'); }); it('checking addExtensionOnDarwin', async () => { @@ -133,10 +133,10 @@ describe('Extension tests', () => { expect(darwin).toContain('sudo pecl install -f imagick'); darwin = await extensions.addExtension('blackfire', '7.3', 'darwin'); - expect(darwin).toContain('blackfire_darwin.sh 7.3 73'); + expect(darwin).toContain('blackfire_darwin.sh 7.3 1.31.0'); darwin = await extensions.addExtension('blackfire-1.31.0', '7.3', 'darwin'); - expect(darwin).toContain('blackfire_darwin.sh 7.3 73 1.31.0'); + expect(darwin).toContain('blackfire_darwin.sh 7.3 1.31.0'); darwin = await extensions.addExtension( 'does_not_exist', diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 79e58023..c8e54a00 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -162,10 +162,10 @@ describe('Utils tests', () => { ); }); - it('checking getMinorVersion', async () => { - expect(await utils.getMinorVersion('7.14.0')).toEqual('7.14'); - expect(await utils.getMinorVersion('7.4')).toEqual('7.4'); - expect(await utils.getMinorVersion('7.4.1')).toEqual('7.4'); - expect(await utils.getMinorVersion('7.aa')).toEqual('7.aa'); + it('checking getBlackfireVersion', async () => { + expect(await utils.getBlackfireVersion('')).toEqual('1.31.0'); + expect(await utils.getBlackfireVersion(undefined)).toEqual('1.31.0'); + expect(await utils.getBlackfireVersion(null)).toEqual('1.31.0'); + expect(await utils.getBlackfireVersion('1.32.0')).toEqual('1.32.0'); }); }); diff --git a/dist/index.js b/dist/index.js index e7a2e0a1..9c05b432 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1247,17 +1247,24 @@ function suppressOutput(os_version) { }); } exports.suppressOutput = suppressOutput; -function getMinorVersion(version) { +/** + * Function to get Blackfire version + * + * @param blackfire_version + */ +function getBlackfireVersion(blackfire_version) { return __awaiter(this, void 0, void 0, function* () { - const regex = /^\d+\.\d+/; - const match = version.match(regex); - if (match === null) { - return version; + switch (blackfire_version) { + case null: + case undefined: + case '': + return '1.31.0'; + default: + return blackfire_version; } - return match[0]; }); } -exports.getMinorVersion = getMinorVersion; +exports.getBlackfireVersion = getBlackfireVersion; /***/ }), @@ -2717,18 +2724,15 @@ function addExtensionDarwin(extension_csv, version, pipe) { const prefix = yield utils.getExtensionPrefix(ext_name); let install_command = ''; switch (true) { - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): - script += - '\nsh ' + + case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension): + install_command = + 'bash ' + path.join(__dirname, '../src/scripts/ext/blackfire_darwin.sh') + ' ' + version + ' ' + - (yield utils.getMinorVersion(version)).replace('.', ''); - if (ext_version) { - script += ' ' + ext_version; - } - return; + (yield utils.getBlackfireVersion(ext_version)); + break; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += @@ -2811,15 +2815,14 @@ function addExtensionWindows(extension_csv, version, pipe) { let matches; switch (true) { // match blackfire...blackfire-1.31.0 - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): + case /^(5\.[4-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension): script += '\n& ' + path.join(__dirname, '../src/scripts/ext/blackfire.ps1') + ' ' + - (yield utils.getMinorVersion(version)).replace('.', ''); - if (ext_version) { - script += ' ' + ext_version; - } + version + + ' ' + + (yield utils.getBlackfireVersion(ext_version)); return; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): @@ -2875,18 +2878,15 @@ function addExtensionLinux(extension_csv, version, pipe) { let install_command = ''; switch (true) { // match blackfire... blackfire-1.31.0 - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): - script += - '\nsh ' + + case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension): + install_command = + 'bash ' + path.join(__dirname, '../src/scripts/ext/blackfire.sh') + ' ' + version + ' ' + - (yield utils.getMinorVersion(version)).replace('.', ''); - if (ext_version) { - script += ' ' + ext_version; - } - return; + (yield utils.getBlackfireVersion(ext_version)); + break; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += diff --git a/src/extensions.ts b/src/extensions.ts index 2322e3fa..2e77894b 100644 --- a/src/extensions.ts +++ b/src/extensions.ts @@ -22,19 +22,17 @@ export async function addExtensionDarwin( const prefix = await utils.getExtensionPrefix(ext_name); let install_command = ''; switch (true) { - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): - script += - '\nsh ' + + case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test( + version_extension + ): + install_command = + 'bash ' + path.join(__dirname, '../src/scripts/ext/blackfire_darwin.sh') + ' ' + version + ' ' + - (await utils.getMinorVersion(version)).replace('.', ''); - - if (ext_version) { - script += ' ' + ext_version; - } - return; + (await utils.getBlackfireVersion(ext_version)); + break; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += @@ -117,16 +115,16 @@ export async function addExtensionWindows( let matches: RegExpExecArray; switch (true) { // match blackfire...blackfire-1.31.0 - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): + case /^(5\.[4-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test( + version_extension + ): script += '\n& ' + path.join(__dirname, '../src/scripts/ext/blackfire.ps1') + ' ' + - (await utils.getMinorVersion(version)).replace('.', ''); - - if (ext_version) { - script += ' ' + ext_version; - } + version + + ' ' + + (await utils.getBlackfireVersion(ext_version)); return; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): @@ -186,19 +184,17 @@ export async function addExtensionLinux( let install_command = ''; switch (true) { // match blackfire... blackfire-1.31.0 - case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): - script += - '\nsh ' + + case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test( + version_extension + ): + install_command = + 'bash ' + path.join(__dirname, '../src/scripts/ext/blackfire.sh') + ' ' + version + ' ' + - (await utils.getMinorVersion(version)).replace('.', ''); - - if (ext_version) { - script += ' ' + ext_version; - } - return; + (await utils.getBlackfireVersion(ext_version)); + break; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += diff --git a/src/scripts/ext/blackfire.ps1 b/src/scripts/ext/blackfire.ps1 index f7955b49..084eb544 100644 --- a/src/scripts/ext/blackfire.ps1 +++ b/src/scripts/ext/blackfire.ps1 @@ -2,26 +2,29 @@ Param ( [Parameter(Position = 0, Mandatory = $true)] [ValidateNotNull()] [string] - $phpversion, - [Parameter(Position = 1, Mandatory = $true)] + $version, + [Parameter(Position = 2, Mandatory = $false)] [ValidateNotNull()] - [ValidateLength(1, [int]::MaxValue)] [string] - $version = '1.31.0' + $extension_version ) -Function Install-Blackfire() { - $installed = Get-Php -Path $php_dir - $nts = if (!$installed.ThreadSafe) { "_nts" } else { "" } - Invoke-WebRequest -UseBasicParsing -Uri "https://packages.blackfire.io/binaries/blackfire-php/${version}/blackfire-php-windows_x64-php-${phpversion}${nts}.dll" -OutFile $ENV:RUNNER_TOOL_CACHE\blackfire.dll > $null 2>&1 - Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\blackfire.dll" -Destination "$ext_dir\blackfire.dll" - Enable-PhpExtension -Extension blackfire -Path $php_dir - printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick "Blackfire" "Installed and enabled" -} - $tick = ([char]8730) $php_dir = 'C:\tools\php' $ext_dir = $php_dir + '\ext' +$arch='x64' +if ($version -lt '7.0') { $arch='x86' } +$version = $version.replace('.', '') -Install-Blackfire +if (Test-Path $ext_dir\blackfire.dll) { + Enable-PhpExtension -Extension blackfire -Path $php_dir + $status="Enabled" +} else { + $installed = Get-Php -Path $php_dir + $nts = if (!$installed.ThreadSafe) { "_nts" } else { "" } + Invoke-WebRequest -UseBasicParsing -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1 + Enable-PhpExtension -Extension blackfire -Path $php_dir + $status="Installed and enabled" +} +printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick "blackfire" "$status" diff --git a/src/scripts/ext/blackfire.sh b/src/scripts/ext/blackfire.sh index 1dfd35ff..889397f2 100644 --- a/src/scripts/ext/blackfire.sh +++ b/src/scripts/ext/blackfire.sh @@ -1,23 +1,7 @@ -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 -} - -phpversion=$2 -blackfireVersion=${3:-1.31.0} -ini_file="/etc/php/$1/cli/conf.d/50-blackfire.ini" -tick="✓" -cross="✗" - -(curl -A "Github action" -o /tmp/blackfire.so -L -s https://packages.blackfire.io/binaries/blackfire-php/$blackfireVersion/blackfire-php-linux_amd64-php-$phpversion.so >/dev/null 2>&1 && \ -sudo mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so >/dev/null 2>&1 && \ -echo "extension=blackfire.so" | sudo tee -a "$ini_file" >/dev/null 2>&1 && \ -add_log "$tick" "blackfire" "Installed and enabled") || \ -add_log "$cross" "blackfire" "Could not install blackfire" - +version=${1/./} +extension_version=$2 +ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||") +scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||") +ini_file="$scan_dir/50-blackfire.ini" +sudo curl -o $ext_dir/blackfire.so -SL https://packages.blackfire.io/binaries/blackfire-php/$extension_version/blackfire-php-linux_amd64-php-$version.so +echo "extension=blackfire.so" | sudo tee -a "$ini_file" \ No newline at end of file diff --git a/src/scripts/ext/blackfire_darwin.sh b/src/scripts/ext/blackfire_darwin.sh index f6b137cf..07773077 100644 --- a/src/scripts/ext/blackfire_darwin.sh +++ b/src/scripts/ext/blackfire_darwin.sh @@ -1,23 +1,7 @@ -# Function to log result of a operation -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 -} - -tick="✓" -cross="✗" -phpversion=$2 -blackfireVersion=${3:-1.31.0} -ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g") - -(curl -A "Github action" -o /tmp/blackfire.so -L -s https://packages.blackfire.io/binaries/blackfire-php/$blackfireVersion/blackfire-php-darwin_amd64-php-$phpversion.so && \ -sudo mv /tmp/blackfire.so $(php -r "echo ini_get ('extension_dir');")/blackfire.so && \ -echo "extension=blackfire.so" >>"$ini_file" && \ -add_log "$tick" "blackfire" "Installed and enabled") || \ -add_log "$cross" "blackfire" "Could not install blackfire" +version=${1/./} +extension_version=$2 +ext_dir=$(php -i | grep -Ei "extension_dir => /usr" | sed -e "s|.*=> s*||") +scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||") +ini_file="$scan_dir/50-blackfire.ini" +sudo curl -o $ext_dir/blackfire.so -SL https://packages.blackfire.io/binaries/blackfire-php/$extension_version/blackfire-php-darwin_amd64-php-$version.so +echo "extension=blackfire.so" | sudo tee -a "$ini_file" \ No newline at end of file diff --git a/src/utils.ts b/src/utils.ts index 88cc4805..4a23db50 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -262,13 +262,20 @@ export async function suppressOutput(os_version: string): Promise { } } -export async function getMinorVersion(version: string): Promise { - const regex = /^\d+\.\d+/; - const match = version.match(regex); - - if (match === null) { - return version; +/** + * Function to get Blackfire version + * + * @param blackfire_version + */ +export async function getBlackfireVersion( + blackfire_version: null | undefined | string +): Promise { + switch (blackfire_version) { + case null: + case undefined: + case '': + return '1.31.0'; + default: + return blackfire_version; } - - return match[0]; }