From dc9461a05370ecebeb5b957bc47f700d5f860937 Mon Sep 17 00:00:00 2001 From: Jaapio Date: Tue, 25 Feb 2020 22:09:10 +0100 Subject: [PATCH] Add blackfire to linux install Add logging about install process Fix formating of semversion blackfire Only add version when needed Pass phpversion --- __tests__/extensions.test.ts | 6 ++++++ __tests__/utils.test.ts | 7 +++++++ dist/index.js | 24 ++++++++++++++++++++++++ src/extensions.ts | 14 ++++++++++++++ src/scripts/ext/blackfire.sh | 23 +++++++++++++++++++++++ src/utils.ts | 11 +++++++++++ 6 files changed, 85 insertions(+) create mode 100644 src/scripts/ext/blackfire.sh diff --git a/__tests__/extensions.test.ts b/__tests__/extensions.test.ts index 3ef06a23..74d9522c 100644 --- a/__tests__/extensions.test.ts +++ b/__tests__/extensions.test.ts @@ -63,6 +63,12 @@ describe('Extension tests', () => { linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux'); expect(linux).toContain('phalcon.sh phalcon3 7.3'); expect(linux).toContain('phalcon.sh phalcon4 7.3'); + + linux = await extensions.addExtension('blackfire', '7.3', 'linux'); + expect(linux).toContain('blackfire.sh 7.3 73'); + + linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux'); + expect(linux).toContain('blackfire.sh 7.3 73 1.31.0'); }); it('checking addExtensionOnDarwin', async () => { diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index 59dcb80e..79e58023 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -161,4 +161,11 @@ describe('Utils tests', () => { 'Platform fedora is not supported' ); }); + + 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'); + }); }); diff --git a/dist/index.js b/dist/index.js index 17eec80a..6a8d5fd3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1247,6 +1247,17 @@ function suppressOutput(os_version) { }); } exports.suppressOutput = suppressOutput; +function getMinorVersion(version) { + return __awaiter(this, void 0, void 0, function* () { + const regex = /^\d+\.\d+/; + const match = version.match(regex); + if (match === null) { + return version; + } + return match[0]; + }); +} +exports.getMinorVersion = getMinorVersion; /***/ }), @@ -2810,6 +2821,19 @@ function addExtensionLinux(extension_csv, version, pipe) { const prefix = yield utils.getExtensionPrefix(ext_name); let install_command = ''; switch (true) { + // match blackfire... blackfire-1.31.0 + case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): + script += + '\nsh ' + + path.join(__dirname, '../src/scripts/ext/blackfire.sh') + + ' ' + + version + + ' ' + + (yield utils.getMinorVersion(version)).replace('.', ''); + if (ext_version) { + script += ' ' + ext_version; + } + return; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += diff --git a/src/extensions.ts b/src/extensions.ts index 62f68d13..58e621e1 100644 --- a/src/extensions.ts +++ b/src/extensions.ts @@ -155,6 +155,20 @@ export async function addExtensionLinux( const prefix = await utils.getExtensionPrefix(ext_name); let install_command = ''; switch (true) { + // match blackfire... blackfire-1.31.0 + case /^blackfire(-\d+\.\d+\.\d+)?$/.test(extension): + script += + '\nsh ' + + path.join(__dirname, '../src/scripts/ext/blackfire.sh') + + ' ' + + version + + ' ' + + (await utils.getMinorVersion(version)).replace('.', ''); + + if (ext_version) { + script += ' ' + ext_version; + } + return; // match pre-release versions case /.*-(beta|alpha|devel|snapshot)/.test(version_extension): script += diff --git a/src/scripts/ext/blackfire.sh b/src/scripts/ext/blackfire.sh new file mode 100644 index 00000000..1dfd35ff --- /dev/null +++ b/src/scripts/ext/blackfire.sh @@ -0,0 +1,23 @@ +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" + diff --git a/src/utils.ts b/src/utils.ts index af305504..88cc4805 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -261,3 +261,14 @@ 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; + } + + return match[0]; +}