mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-08-02 03:37:16 +07:00
Dry custom tools and extension code
This commit is contained in:
@ -1,24 +1,5 @@
|
||||
import * as path from 'path';
|
||||
import * as utils from './utils';
|
||||
|
||||
/**
|
||||
* Function to get script to install custom extensions
|
||||
*
|
||||
* @param script
|
||||
* @param command
|
||||
*/
|
||||
export async function customExtension(
|
||||
script: string,
|
||||
...command: string[]
|
||||
): Promise<string> {
|
||||
return (
|
||||
'\n. ' +
|
||||
path.join(__dirname, '../src/scripts/ext/' + script) +
|
||||
'\n' +
|
||||
(await utils.joins(...command))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install and enable extensions for darwin
|
||||
*
|
||||
@ -47,29 +28,20 @@ export async function addExtensionDarwin(
|
||||
return;
|
||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||
// match pdo_oci and oci8
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await customExtension(
|
||||
'blackfire.sh',
|
||||
'add_blackfire',
|
||||
extension
|
||||
);
|
||||
return;
|
||||
// match pdo_oci and oci8
|
||||
case /^pdo_oci$|^oci8$/.test(extension):
|
||||
add_script += await customExtension('oci.sh', 'add_oci', extension);
|
||||
return;
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||
add_script += await customExtension('ioncube.sh', 'add_ioncube');
|
||||
return;
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||
add_script += await customExtension(
|
||||
'phalcon.sh',
|
||||
'add_phalcon',
|
||||
extension
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
extension,
|
||||
'darwin'
|
||||
);
|
||||
return;
|
||||
// match pre-release versions. For example - xdebug-beta
|
||||
@ -154,33 +126,24 @@ export async function addExtensionWindows(
|
||||
case /^:/.test(ext_name):
|
||||
remove_script += '\nRemove-Extension ' + ext_name.slice(1);
|
||||
break;
|
||||
// match 5.4blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||
// match 5.4blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||
case /^(5\.[4-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||
// match pdo_oci and oci8
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await customExtension(
|
||||
'blackfire.ps1',
|
||||
'Add-Blackfire',
|
||||
extension
|
||||
);
|
||||
break;
|
||||
// match pdo_oci and oci8
|
||||
case /^pdo_oci$|^oci8$/.test(extension):
|
||||
add_script += await customExtension('oci.ps1', 'Add-OCI', extension);
|
||||
break;
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||
add_script += await customExtension('ioncube.ps1', 'Add-Ioncube');
|
||||
break;
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||
add_script += await customExtension(
|
||||
'phalcon.ps1',
|
||||
'Add-Phalcon',
|
||||
extension
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
extension,
|
||||
'win32'
|
||||
);
|
||||
break;
|
||||
return;
|
||||
// match pre-release versions. For example - xdebug-beta
|
||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||
add_script += await utils.joins(
|
||||
@ -269,35 +232,24 @@ export async function addExtensionLinux(
|
||||
remove_script += '\nremove_extension ' + ext_name.slice(1);
|
||||
return;
|
||||
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||
// match 5.3blackfire-{semver}...5.6blackfire-{semver}, 7.0blackfire-{semver}...7.4blackfire-{semver}
|
||||
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||
// match pdo_oci and oci8
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
// match 5.6gearman..7.4gearman
|
||||
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||
version_extension
|
||||
):
|
||||
add_script += await customExtension(
|
||||
'blackfire.sh',
|
||||
'add_blackfire',
|
||||
extension
|
||||
);
|
||||
return;
|
||||
// match pdo_oci and oci8
|
||||
case /^pdo_oci$|^oci8$/.test(extension):
|
||||
add_script += await customExtension('oci.sh', 'add_oci', extension);
|
||||
return;
|
||||
// match 5.3ioncube...7.4ioncube, 7.0ioncube...7.4ioncube
|
||||
case /^5\.[3-6]ioncube$|^7\.[0-4]ioncube$/.test(version_extension):
|
||||
add_script += await customExtension('ioncube.sh', 'add_ioncube');
|
||||
return;
|
||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||
add_script += await customExtension(
|
||||
'phalcon.sh',
|
||||
'add_phalcon',
|
||||
extension
|
||||
);
|
||||
return;
|
||||
// match 5.6gearman..7.4gearman
|
||||
case /^((5\.6)|(7\.[0-4]))gearman$/.test(version_extension):
|
||||
add_script += await customExtension('gearman.sh', 'add_gearman');
|
||||
add_script += await utils.customPackage(
|
||||
ext_name,
|
||||
'ext',
|
||||
extension,
|
||||
'linux'
|
||||
);
|
||||
return;
|
||||
// match pre-release versions. For example - xdebug-beta
|
||||
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||
|
@ -21,7 +21,7 @@ Function Add-InstantClient() {
|
||||
}
|
||||
|
||||
# Function to install oci8 and pdo_oci.
|
||||
Function Add-OCI() {
|
||||
Function Add-Oci() {
|
||||
Param (
|
||||
[Parameter(Position = 0, Mandatory = $true)]
|
||||
[ValidateNotNull()]
|
||||
|
59
src/tools.ts
59
src/tools.ts
@ -1,32 +1,6 @@
|
||||
import * as utils from './utils';
|
||||
import * as httpm from '@actions/http-client';
|
||||
import {IHttpClientResponse as hcr} from '@actions/http-client/interfaces';
|
||||
import * as path from 'path';
|
||||
|
||||
/**
|
||||
* Function to get command to setup tools
|
||||
*
|
||||
* @param os_version
|
||||
* @param suffix
|
||||
*/
|
||||
export async function getCommand(
|
||||
os_version: string,
|
||||
suffix: string
|
||||
): Promise<string> {
|
||||
switch (os_version) {
|
||||
case 'linux':
|
||||
case 'darwin':
|
||||
return 'add_' + suffix + ' ';
|
||||
case 'win32':
|
||||
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
||||
default:
|
||||
return await utils.log(
|
||||
'Platform ' + os_version + ' is not supported',
|
||||
os_version,
|
||||
'error'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get tool version
|
||||
@ -194,12 +168,12 @@ export async function addPhive(
|
||||
switch (version) {
|
||||
case 'latest':
|
||||
return (
|
||||
(await getCommand(os_version, 'tool')) +
|
||||
(await utils.getCommand(os_version, 'tool')) +
|
||||
'https://phar.io/releases/phive.phar phive'
|
||||
);
|
||||
default:
|
||||
return (
|
||||
(await getCommand(os_version, 'tool')) +
|
||||
(await utils.getCommand(os_version, 'tool')) +
|
||||
'https://github.com/phar-io/phive/releases/download/' +
|
||||
version +
|
||||
'/phive-' +
|
||||
@ -390,7 +364,7 @@ export async function addArchive(
|
||||
url: string,
|
||||
os_version: string
|
||||
): Promise<string> {
|
||||
return (await getCommand(os_version, 'tool')) + url + ' ' + tool;
|
||||
return (await utils.getCommand(os_version, 'tool')) + url + ' ' + tool;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -442,31 +416,10 @@ export async function addPackage(
|
||||
prefix: string,
|
||||
os_version: string
|
||||
): Promise<string> {
|
||||
const tool_command = await getCommand(os_version, 'composertool');
|
||||
const tool_command = await utils.getCommand(os_version, 'composertool');
|
||||
return tool_command + tool + ' ' + release + ' ' + prefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get script to add tools with custom support.
|
||||
*
|
||||
* @param tool
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
export async function addCustomTool(
|
||||
tool: string,
|
||||
version: string,
|
||||
os_version: string
|
||||
): Promise<string> {
|
||||
const script_extension: string = await utils.scriptExtension(os_version);
|
||||
const script: string = path.join(
|
||||
__dirname,
|
||||
'../src/scripts/tools/' + tool + script_extension
|
||||
);
|
||||
const command: string = await getCommand(os_version, tool);
|
||||
return '. ' + script + '\n' + command + version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup tools
|
||||
*
|
||||
@ -500,7 +453,7 @@ export async function addTools(
|
||||
case 'blackfire':
|
||||
case 'grpc_php_plugin':
|
||||
case 'protoc':
|
||||
script += await addCustomTool(tool, version, os_version);
|
||||
script += await utils.customPackage(tool, 'tools', version, os_version);
|
||||
break;
|
||||
case 'blackfire-player':
|
||||
url = await getPharUrl('https://get.blackfire.io', tool, 'v', version);
|
||||
@ -556,7 +509,7 @@ export async function addTools(
|
||||
script += await addArchive(tool, version, url, os_version);
|
||||
break;
|
||||
case 'pecl':
|
||||
script += await getCommand(os_version, 'pecl');
|
||||
script += await utils.getCommand(os_version, 'pecl');
|
||||
break;
|
||||
case 'phan':
|
||||
url = github + 'phan/phan/' + uri;
|
||||
|
49
src/utils.ts
49
src/utils.ts
@ -284,6 +284,31 @@ export async function getUnsupportedLog(
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get command to setup tools
|
||||
*
|
||||
* @param os_version
|
||||
* @param suffix
|
||||
*/
|
||||
export async function getCommand(
|
||||
os_version: string,
|
||||
suffix: string
|
||||
): Promise<string> {
|
||||
switch (os_version) {
|
||||
case 'linux':
|
||||
case 'darwin':
|
||||
return 'add_' + suffix + ' ';
|
||||
case 'win32':
|
||||
return 'Add-' + suffix.charAt(0).toUpperCase() + suffix.slice(1) + ' ';
|
||||
default:
|
||||
return await log(
|
||||
'Platform ' + os_version + ' is not supported',
|
||||
os_version,
|
||||
'error'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to join strings with space
|
||||
*
|
||||
@ -313,3 +338,27 @@ export async function scriptExtension(os_version: string): Promise<string> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to get script to add tools with custom support.
|
||||
*
|
||||
* @param pkg
|
||||
* @param type
|
||||
* @param version
|
||||
* @param os_version
|
||||
*/
|
||||
export async function customPackage(
|
||||
pkg: string,
|
||||
type: string,
|
||||
version: string,
|
||||
os_version: string
|
||||
): Promise<string> {
|
||||
const pkg_name: string = pkg.replace(/\d+|pdo[_-]/, '');
|
||||
const script_extension: string = await scriptExtension(os_version);
|
||||
const script: string = path.join(
|
||||
__dirname,
|
||||
'../src/scripts/' + type + '/' + pkg_name + script_extension
|
||||
);
|
||||
const command: string = await getCommand(os_version, pkg_name);
|
||||
return '\n. ' + script + '\n' + command + version;
|
||||
}
|
||||
|
Reference in New Issue
Block a user