From e755fb7a695e384495fce9a0b94b64e5d832e3f6 Mon Sep 17 00:00:00 2001
From: Shivam Mathur
Date: Fri, 11 Oct 2019 04:41:25 +0530
Subject: [PATCH 1/5] Refactor installation scripts
---
__tests__/config.test.ts | 20 +-
__tests__/extensions.test.ts | 15 +-
__tests__/pecl.test.ts | 15 --
lib/config.js | 18 +-
lib/extensions.js | 172 ++++----------
lib/install.js | 4 +-
lib/utils.js | 2 +-
node_modules/@actions/core/README.md | 40 ++--
node_modules/@actions/core/lib/core.d.ts | 9 +-
node_modules/@actions/core/lib/core.js | 17 +-
node_modules/@actions/core/lib/core.js.map | 2 +-
node_modules/@actions/core/package.json | 23 +-
node_modules/typed-rest-client/package.json | 1 -
package-lock.json | 114 ++++-----
package.json | 5 +-
src/config.ts | 16 +-
src/coverage.ts | 1 -
src/extensions.ts | 245 +++++---------------
src/install.ts | 4 +-
src/pecl.ts | 17 --
src/scripts/7.4.sh | 35 ++-
src/scripts/darwin.sh | 27 ++-
src/scripts/linux.sh | 22 +-
src/scripts/win32.ps1 | 39 +++-
src/utils.ts | 2 +-
25 files changed, 345 insertions(+), 520 deletions(-)
delete mode 100644 __tests__/pecl.test.ts
delete mode 100644 src/pecl.ts
diff --git a/__tests__/config.test.ts b/__tests__/config.test.ts
index 7e5e1eef..ca9773fd 100644
--- a/__tests__/config.test.ts
+++ b/__tests__/config.test.ts
@@ -7,13 +7,7 @@ describe('Config tests', () => {
'win32'
);
expect(win32).toContain(
- 'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M"'
- );
- expect(win32).toContain(
- 'Add-Content C:\\tools\\php\\php.ini "short_open_tag=On"'
- );
- expect(win32).toContain(
- 'Add-Content C:\\tools\\php\\php.ini "date.timezone=Asia/Kolkata"'
+ 'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
);
win32 = await config.addINIValues(
@@ -28,9 +22,9 @@ describe('Config tests', () => {
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
'linux'
);
- expect(linux).toContain('echo "post_max_size=256M" >> $ini_file');
- expect(linux).toContain('echo "short_open_tag=On" >> $ini_file');
- expect(linux).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file');
+ expect(linux).toContain(
+ 'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
+ );
linux = await config.addINIValues(
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
@@ -44,9 +38,9 @@ describe('Config tests', () => {
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
'darwin'
);
- expect(darwin).toContain('echo "post_max_size=256M" >> $ini_file');
- expect(darwin).toContain('echo "short_open_tag=On" >> $ini_file');
- expect(darwin).toContain('echo "date.timezone=Asia/Kolkata" >> $ini_file');
+ expect(darwin).toContain(
+ 'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata" >> $ini_file'
+ );
darwin = await config.addINIValues(
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
diff --git a/__tests__/extensions.test.ts b/__tests__/extensions.test.ts
index ea14fa7c..c4840b7f 100644
--- a/__tests__/extensions.test.ts
+++ b/__tests__/extensions.test.ts
@@ -1,12 +1,5 @@
import * as extensions from '../src/extensions';
-let valid_extensions = ['xdebug', 'pcov'];
-jest.mock('../src/pecl', () => ({
- checkPECLExtension: jest.fn().mockImplementation(extension => {
- return valid_extensions.indexOf(extension) !== -1;
- })
-}));
-
describe('Extension tests', () => {
it('checking addExtensionOnWindows', async () => {
let win32: string = await extensions.addExtension(
@@ -27,7 +20,9 @@ describe('Extension tests', () => {
expect(win32).toContain('Install-PhpExtension pcov');
win32 = await extensions.addExtension('does_not_exist', '7.2', 'win32');
- expect(win32).toContain('Could not find does_not_exist for PHP7.2 on PECL');
+ expect(win32).toContain(
+ 'Add-Extension does_not_exist "Install-PhpExtension does_not_exist" extension "Add Extension"'
+ );
win32 = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(win32).toContain('Platform fedora is not supported');
@@ -82,9 +77,7 @@ describe('Extension tests', () => {
expect(darwin).toContain('sudo pecl install xdebug');
darwin = await extensions.addExtension('does_not_exist', '7.2', 'darwin');
- expect(darwin).toContain(
- 'Could not find does_not_exist for PHP7.2 on PECL'
- );
+ expect(darwin).toContain('add_extension does_not_exist');
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(darwin).toContain('Platform fedora is not supported');
diff --git a/__tests__/pecl.test.ts b/__tests__/pecl.test.ts
deleted file mode 100644
index 5f737def..00000000
--- a/__tests__/pecl.test.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as pecl from '../src/pecl';
-
-let valid_extensions = ['xdebug', 'pcov'];
-jest.mock('../src/pecl', () => ({
- checkPECLExtension: jest.fn().mockImplementation(extension => {
- return valid_extensions.indexOf(extension) !== -1;
- })
-}));
-
-describe('pecl tests', () => {
- it('checking checkPECLExtension', async () => {
- expect(await pecl.checkPECLExtension('extensionDoesNotExist')).toBe(false);
- expect(await pecl.checkPECLExtension('xdebug')).toBe(true);
- });
-});
diff --git a/lib/config.js b/lib/config.js
index 05d81c6c..6fa299c1 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -44,15 +44,8 @@ exports.addINIValues = addINIValues;
*/
function addINIValuesUnix(ini_values_csv) {
return __awaiter(this, void 0, void 0, function* () {
- let script = '\n';
let ini_values = yield utils.INIArray(ini_values_csv);
- yield utils.asyncForEach(ini_values, function (ini_value) {
- return __awaiter(this, void 0, void 0, function* () {
- // add script to set ini value
- script += 'echo "' + ini_value + '" >> $ini_file\n';
- });
- });
- return script;
+ return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
});
}
exports.addINIValuesUnix = addINIValuesUnix;
@@ -63,15 +56,8 @@ exports.addINIValuesUnix = addINIValuesUnix;
*/
function addINIValuesWindows(ini_values_csv) {
return __awaiter(this, void 0, void 0, function* () {
- let script = '\n';
let ini_values = yield utils.INIArray(ini_values_csv);
- yield utils.asyncForEach(ini_values, function (ini_value) {
- return __awaiter(this, void 0, void 0, function* () {
- // add script to set ini value
- script += 'Add-Content C:\\tools\\php\\php.ini "' + ini_value + '"\n';
- });
- });
- return script;
+ return ('Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n');
});
}
exports.addINIValuesWindows = addINIValuesWindows;
diff --git a/lib/extensions.js b/lib/extensions.js
index 0f25a97c..db448175 100644
--- a/lib/extensions.js
+++ b/lib/extensions.js
@@ -17,7 +17,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils = __importStar(require("./utils"));
-const pecl = __importStar(require("./pecl"));
function addExtension(extension_csv, version, os_version, log_prefix = 'Add Extension') {
return __awaiter(this, void 0, void 0, function* () {
switch (os_version) {
@@ -33,44 +32,6 @@ function addExtension(extension_csv, version, os_version, log_prefix = 'Add Exte
});
}
exports.addExtension = addExtension;
-/**
- * Enable extensions which are installed but not enabled on windows
- *
- * @param extension
- */
-function enableExtensionWindows(extension, log_prefix) {
- return __awaiter(this, void 0, void 0, function* () {
- return (`try {
- $exist = Test-Path -Path $ext_dir\\php_${extension}.dll
- if(!(php -m | findstr -i ${extension}) -and $exist) {
- Add-Content C:\\tools\\php\\php.ini "${yield utils.getExtensionPrefix(extension)}=php_${extension}.dll"\n` +
- (yield utils.log('Enabled ' + extension, 'win32', 'success', log_prefix)) +
- ` } elseif(php -m | findstr -i ${extension}) {\n` +
- (yield utils.log(extension + ' was already enabled', 'win32', 'success', log_prefix)) +
- ` }
-} catch [Exception] {\n` +
- (yield utils.log(extension + ' could not be enabled', 'win32', 'error', log_prefix)) +
- ` }\n`);
- });
-}
-exports.enableExtensionWindows = enableExtensionWindows;
-/**
- * Enable extensions which are installed but not enabled on unix
- *
- * @param extension
- * @param os_version
- */
-function enableExtensionUnix(extension, os_version, log_prefix) {
- return __awaiter(this, void 0, void 0, function* () {
- return (`if [ ! "$(php -m | grep -i ${extension})" ] && [ -e "$ext_dir/${extension}.so" ]; then
- echo "${yield utils.getExtensionPrefix(extension)}=${extension}" >> $ini_file\n` +
- (yield utils.log('Enabled ' + extension, os_version, 'success', log_prefix)) +
- `;\n elif [ "$(php -m | grep -i ${extension})" ]; then \n` +
- (yield utils.log(extension + ' was already enabled', os_version, 'success', log_prefix)) +
- `; fi\n`);
- });
-}
-exports.enableExtensionUnix = enableExtensionUnix;
/**
* Install and enable extensions for darwin
*
@@ -85,48 +46,33 @@ function addExtensionDarwin(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += yield enableExtensionUnix(extension, 'darwin', log_prefix);
- switch (yield pecl.checkPECLExtension(extension)) {
- case true:
- let install_command = '';
- 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';
- break;
- default:
- install_command =
- 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
- break;
- }
- script +=
- 'if [ ! "$(php -m | grep -i ' +
- extension +
- ')" ]; then ' +
- install_command +
- ' && ' +
- (yield utils.log('Installed and enabled ' + extension, 'darwin', 'success', log_prefix)) +
- ' || ' +
- (yield utils.log('Could not install ' + extension + ' on PHP' + version, 'darwin', 'error', log_prefix)) +
- '; fi\n';
+ let install_command = '';
+ 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';
break;
- case false:
default:
- script +=
- 'if [ ! "$(php -m | grep -i ' +
- extension +
- ')" ]; then \n' +
- (yield utils.log('Could not find ' + extension + ' for PHP' + version + ' on PECL', 'darwin', 'error', log_prefix)) +
- '; fi\n';
+ install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
break;
}
+ script +=
+ 'add_extension ' +
+ extension +
+ ' "' +
+ install_command +
+ '" ' +
+ (yield utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
});
return script;
@@ -147,46 +93,31 @@ function addExtensionWindows(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += yield enableExtensionWindows(extension, log_prefix);
- switch (yield pecl.checkPECLExtension(extension)) {
- case true:
- let install_command = '';
- switch (version + extension) {
- case '7.4xdebug':
- const extension_url = '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';
- break;
- case '7.2xdebug':
- default:
- install_command = 'Install-PhpExtension ' + extension;
- break;
- }
- script +=
- 'if(!(php -m | findstr -i ' +
- extension +
- ')) { ' +
- 'try { ' +
- install_command +
- '\n' +
- (yield utils.log('Installed and enabled ' + extension, 'win32', 'success', log_prefix)) +
- ' } catch [Exception] { ' +
- (yield utils.log('Could not install ' + extension + ' on PHP' + version, 'win32', 'error', log_prefix)) +
- ' } }\n';
+ let install_command = '';
+ switch (version + extension) {
+ case '7.4xdebug':
+ const extension_url = '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';
break;
- case false:
+ case '7.2xdebug':
default:
- script +=
- 'if(!(php -m | findstr -i ' +
- extension +
- ')) { ' +
- (yield utils.log('Could not find ' + extension + ' for PHP' + version + ' on PECL', 'win32', 'error', log_prefix)) +
- ' } \n';
+ install_command = 'Install-PhpExtension ' + extension;
break;
}
+ script +=
+ 'Add-Extension ' +
+ extension +
+ ' "' +
+ install_command +
+ '" ' +
+ (yield utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
});
return script;
@@ -207,7 +138,6 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
return __awaiter(this, void 0, void 0, function* () {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += yield enableExtensionUnix(extension, 'linux', log_prefix);
let install_command = '';
switch (version + extension) {
case '7.4xdebug':
@@ -228,15 +158,15 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
break;
}
script +=
- 'if [ ! "$(php -m | grep -i ' +
+ 'add_extension ' +
extension +
- ')" ]; then ' +
+ ' "' +
install_command +
- ' && ' +
- (yield utils.log('Installed and enabled ' + extension, 'linux', 'success', log_prefix)) +
- ' || ' +
- (yield utils.log('Could not find php' + version + '-' + extension + ' on APT repository', 'linux', 'error', log_prefix)) +
- '; fi\n';
+ '" ' +
+ (yield utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
});
return script;
diff --git a/lib/install.js b/lib/install.js
index d9a8b983..658f874b 100644
--- a/lib/install.js
+++ b/lib/install.js
@@ -66,6 +66,4 @@ function run() {
});
}
// call the run function
-run().then(function () {
- console.log('done');
-});
+run();
diff --git a/lib/utils.js b/lib/utils.js
index beae17af..c283638c 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -165,7 +165,7 @@ function log(message, os_version, log_type, prefix = '') {
};
switch (prefix) {
case '':
- prefix = prefix;
+ prefix = '';
break;
default:
prefix = prefix + ': ';
diff --git a/node_modules/@actions/core/README.md b/node_modules/@actions/core/README.md
index 58a8287f..026bb520 100644
--- a/node_modules/@actions/core/README.md
+++ b/node_modules/@actions/core/README.md
@@ -4,45 +4,53 @@
## Usage
-#### Inputs/Outputs
-
-You can use this library to get inputs or set outputs:
+### Import the package
```js
+// javascript
const core = require('@actions/core');
-const myInput = core.getInput('inputName', { required: true });
+// typescript
+import * as core from '@actions/core';
+```
-// Do stuff
+#### Inputs/Outputs
+
+Action inputs can be read with `getInput`. Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled.
+
+```js
+const myInput = core.getInput('inputName', { required: true });
core.setOutput('outputKey', 'outputVal');
```
#### Exporting variables
-You can also export variables for future steps. Variables get set in the environment.
+Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks.
```js
-const core = require('@actions/core');
-
-// Do stuff
-
core.exportVariable('envVar', 'Val');
```
+#### Setting a secret
+
+Setting a secret registers the secret with the runner to ensure it is masked in logs.
+
+```js
+core.setSecret('myPassword');
+```
+
#### PATH Manipulation
-You can explicitly add items to the path for all remaining steps in a workflow:
+To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`. The runner will prepend the path given to the jobs PATH.
```js
-const core = require('@actions/core');
-
-core.addPath('pathToTool');
+core.addPath('/path/to/mytool');
```
#### Exit codes
-You should use this library to set the failing exit code for your action:
+You should use this library to set the failing exit code for your action. If status is not set and the script runs to completion, that will lead to a success.
```js
const core = require('@actions/core');
@@ -55,6 +63,8 @@ catch (err) {
core.setFailed(`Action failed with error ${err}`);
}
+Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned.
+
```
#### Logging
diff --git a/node_modules/@actions/core/lib/core.d.ts b/node_modules/@actions/core/lib/core.d.ts
index 116b0480..f35d88e9 100644
--- a/node_modules/@actions/core/lib/core.d.ts
+++ b/node_modules/@actions/core/lib/core.d.ts
@@ -19,17 +19,16 @@ export declare enum ExitCode {
Failure = 1
}
/**
- * sets env variable for this action and future actions in the job
+ * Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable
*/
export declare function exportVariable(name: string, val: string): void;
/**
- * exports the variable and registers a secret which will get masked from logs
- * @param name the name of the variable to set
- * @param val value of the secret
+ * Registers a secret which will get masked from logs
+ * @param secret value of the secret
*/
-export declare function exportSecret(name: string, val: string): void;
+export declare function setSecret(secret: string): void;
/**
* Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath
diff --git a/node_modules/@actions/core/lib/core.js b/node_modules/@actions/core/lib/core.js
index 7029f88f..f90b22dd 100644
--- a/node_modules/@actions/core/lib/core.js
+++ b/node_modules/@actions/core/lib/core.js
@@ -30,7 +30,7 @@ var ExitCode;
// Variables
//-----------------------------------------------------------------------
/**
- * sets env variable for this action and future actions in the job
+ * Sets env variable for this action and future actions in the job
* @param name the name of the variable to set
* @param val the value of the variable
*/
@@ -40,18 +40,13 @@ function exportVariable(name, val) {
}
exports.exportVariable = exportVariable;
/**
- * exports the variable and registers a secret which will get masked from logs
- * @param name the name of the variable to set
- * @param val value of the secret
+ * Registers a secret which will get masked from logs
+ * @param secret value of the secret
*/
-function exportSecret(name, val) {
- exportVariable(name, val);
- // the runner will error with not implemented
- // leaving the function but raising the error earlier
- command_1.issueCommand('set-secret', {}, val);
- throw new Error('Not implemented.');
+function setSecret(secret) {
+ command_1.issueCommand('add-mask', {}, secret);
}
-exports.exportSecret = exportSecret;
+exports.setSecret = setSecret;
/**
* Prepends inputPath to the PATH (for this action and future actions)
* @param inputPath
diff --git a/node_modules/@actions/core/lib/core.js.map b/node_modules/@actions/core/lib/core.js.map
index fed6e2d1..3bef1c77 100644
--- a/node_modules/@actions/core/lib/core.js.map
+++ b/node_modules/@actions/core/lib/core.js.map
@@ -1 +1 @@
-{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@actions/core/package.json b/node_modules/@actions/core/package.json
index b0dc2cda..40750a5c 100644
--- a/node_modules/@actions/core/package.json
+++ b/node_modules/@actions/core/package.json
@@ -1,33 +1,33 @@
{
"_args": [
[
- "@actions/core@1.1.1",
+ "@actions/core@1.1.3",
"E:\\python\\setup-php"
]
],
- "_from": "@actions/core@1.1.1",
- "_id": "@actions/core@1.1.1",
+ "_from": "@actions/core@1.1.3",
+ "_id": "@actions/core@1.1.3",
"_inBundle": false,
- "_integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg==",
+ "_integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw==",
"_location": "/@actions/core",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
- "raw": "@actions/core@1.1.1",
+ "raw": "@actions/core@1.1.3",
"name": "@actions/core",
"escapedName": "@actions%2fcore",
"scope": "@actions",
- "rawSpec": "1.1.1",
+ "rawSpec": "1.1.3",
"saveSpec": null,
- "fetchSpec": "1.1.1"
+ "fetchSpec": "1.1.3"
},
"_requiredBy": [
"/",
"/@actions/tool-cache"
],
- "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz",
- "_spec": "1.1.1",
+ "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
+ "_spec": "1.1.3",
"_where": "E:\\python\\setup-php",
"bugs": {
"url": "https://github.com/actions/toolkit/issues"
@@ -57,11 +57,12 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/actions/toolkit.git"
+ "url": "git+https://github.com/actions/toolkit.git",
+ "directory": "packages/core"
},
"scripts": {
"test": "echo \"Error: run tests from root\" && exit 1",
"tsc": "tsc"
},
- "version": "1.1.1"
+ "version": "1.1.3"
}
diff --git a/node_modules/typed-rest-client/package.json b/node_modules/typed-rest-client/package.json
index f9924548..c502180e 100644
--- a/node_modules/typed-rest-client/package.json
+++ b/node_modules/typed-rest-client/package.json
@@ -22,7 +22,6 @@
"fetchSpec": "1.5.0"
},
"_requiredBy": [
- "/",
"/@actions/tool-cache"
],
"_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
diff --git a/package-lock.json b/package-lock.json
index 9d1a9669..de4c0e54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,13 +1,13 @@
{
"name": "setup-php",
- "version": "1.4.1",
+ "version": "1.4.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@actions/core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.1.tgz",
- "integrity": "sha512-O5G6EmlzTVsng7VSpNtszIoQq6kOgMGNTFB/hmwKNNA4V71JyxImCIrL27vVHCt2Cb3ImkaCr6o27C2MV9Ylwg=="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.1.3.tgz",
+ "integrity": "sha512-2BIib53Jh4Cfm+1XNuZYYGTeRo8yiWEAUMoliMh1qQGMaqTF4VUlhhcsBylTu4qWmUx45DrY0y0XskimAHSqhw=="
},
"@actions/exec": {
"version": "1.0.1",
@@ -42,18 +42,18 @@
}
},
"@babel/core": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz",
- "integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==",
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.4.tgz",
+ "integrity": "sha512-Rm0HGw101GY8FTzpWSyRbki/jzq+/PkNQJ+nSulrdY6gFGOsNseCqD6KHRYe2E+EdzuBdr2pxCp6s4Uk6eJ+XQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.6.2",
+ "@babel/generator": "^7.6.4",
"@babel/helpers": "^7.6.2",
- "@babel/parser": "^7.6.2",
+ "@babel/parser": "^7.6.4",
"@babel/template": "^7.6.0",
- "@babel/traverse": "^7.6.2",
- "@babel/types": "^7.6.0",
+ "@babel/traverse": "^7.6.3",
+ "@babel/types": "^7.6.3",
"convert-source-map": "^1.1.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -93,12 +93,12 @@
}
},
"@babel/generator": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz",
- "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==",
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.4.tgz",
+ "integrity": "sha512-jsBuXkFoZxk0yWLyGI9llT9oiQ2FeTASmRFE32U+aaDTfoE92t78eroO7PTpU/OrYq38hlcDM6vbfLDaOLy+7w==",
"dev": true,
"requires": {
- "@babel/types": "^7.6.0",
+ "@babel/types": "^7.6.3",
"jsesc": "^2.5.1",
"lodash": "^4.17.13",
"source-map": "^0.5.0"
@@ -170,9 +170,9 @@
}
},
"@babel/parser": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz",
- "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==",
+ "version": "7.6.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.4.tgz",
+ "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==",
"dev": true
},
"@babel/plugin-syntax-object-rest-spread": {
@@ -196,17 +196,17 @@
}
},
"@babel/traverse": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz",
- "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.3.tgz",
+ "integrity": "sha512-unn7P4LGsijIxaAJo/wpoU11zN+2IaClkQAxcJWBNCMS6cmVh802IyLHNkAjQ0iYnRS3nnxk5O3fuXW28IMxTw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.5.5",
- "@babel/generator": "^7.6.2",
+ "@babel/generator": "^7.6.3",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-split-export-declaration": "^7.4.4",
- "@babel/parser": "^7.6.2",
- "@babel/types": "^7.6.0",
+ "@babel/parser": "^7.6.3",
+ "@babel/types": "^7.6.3",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.13"
@@ -230,9 +230,9 @@
}
},
"@babel/types": {
- "version": "7.6.1",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz",
- "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.3.tgz",
+ "integrity": "sha512-CqbcpTxMcpuQTMhjI37ZHVgjBkysg5icREQIEZ0eG1yCNwg3oy+5AaLiOKmjsCj6nqOsa6Hf0ObjRVwokb7srA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -540,9 +540,9 @@
"dev": true
},
"@types/node": {
- "version": "12.7.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.7.tgz",
- "integrity": "sha512-4jUncNe2tj1nmrO/34PsRpZqYVnRV1svbU78cKhuQKkMntKB/AmdLyGgswcZKjFHEHGpiY8pVD8CuVI55nP54w==",
+ "version": "12.7.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
+ "integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
"dev": true
},
"@types/normalize-package-data": {
@@ -558,9 +558,9 @@
"dev": true
},
"@types/yargs": {
- "version": "13.0.2",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.2.tgz",
- "integrity": "sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==",
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz",
+ "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==",
"dev": true,
"requires": {
"@types/yargs-parser": "*"
@@ -1370,9 +1370,9 @@
}
},
"es-abstract": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
- "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
+ "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
"dev": true,
"requires": {
"es-to-primitive": "^1.2.0",
@@ -1383,8 +1383,8 @@
"is-regex": "^1.0.4",
"object-inspect": "^1.6.0",
"object-keys": "^1.1.1",
- "string.prototype.trimleft": "^2.0.0",
- "string.prototype.trimright": "^2.0.0"
+ "string.prototype.trimleft": "^2.1.0",
+ "string.prototype.trimright": "^2.1.0"
}
},
"es-to-primitive": {
@@ -2342,9 +2342,9 @@
"dev": true
},
"handlebars": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.1.tgz",
- "integrity": "sha512-c0HoNHzDiHpBt4Kqe99N8tdLPKAnGCQ73gYMPWtAYM4PwGnf7xl8PBUHJqh9ijlzt2uQKaSRxbXRt+rZ7M2/kA==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz",
+ "integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==",
"dev": true,
"requires": {
"neo-async": "^2.6.0",
@@ -2423,9 +2423,9 @@
}
},
"hosted-git-info": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
- "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+ "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
"dev": true
},
"html-encoding-sniffer": {
@@ -3389,9 +3389,9 @@
"dev": true
},
"json5": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
- "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
+ "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
@@ -4150,9 +4150,9 @@
"dev": true
},
"react-is": {
- "version": "16.9.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz",
- "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==",
+ "version": "16.10.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz",
+ "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==",
"dev": true
},
"read-pkg": {
@@ -5015,19 +5015,19 @@
}
},
"typescript": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz",
- "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==",
+ "version": "3.6.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
+ "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
"dev": true
},
"uglify-js": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
- "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz",
+ "integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==",
"dev": true,
"optional": true,
"requires": {
- "commander": "~2.20.0",
+ "commander": "2.20.0",
"source-map": "~0.6.1"
}
},
diff --git a/package.json b/package.json
index 824b934a..154cc037 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "setup-php",
- "version": "1.4.1",
+ "version": "1.4.2",
"private": false,
"description": "Setup php action",
"main": "lib/setup-php.js",
@@ -24,8 +24,7 @@
"dependencies": {
"@actions/core": "^1.0.0",
"@actions/tool-cache": "^1.0.0",
- "fs": "0.0.1-security",
- "typed-rest-client": "^1.5.0"
+ "fs": "0.0.1-security"
},
"devDependencies": {
"@types/jest": "^24.0.18",
diff --git a/src/config.ts b/src/config.ts
index 645030b5..19d5ca55 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -31,13 +31,8 @@ export async function addINIValues(ini_values_csv: string, os_version: string) {
export async function addINIValuesUnix(
ini_values_csv: string
): Promise {
- let script: string = '\n';
let ini_values: Array = await utils.INIArray(ini_values_csv);
- await utils.asyncForEach(ini_values, async function(ini_value: string) {
- // add script to set ini value
- script += 'echo "' + ini_value + '" >> $ini_file\n';
- });
- return script;
+ return '\necho "' + ini_values.join('\n') + '" >> $ini_file\n';
}
/**
@@ -48,11 +43,8 @@ export async function addINIValuesUnix(
export async function addINIValuesWindows(
ini_values_csv: string
): Promise {
- let script: string = '\n';
let ini_values: Array = await utils.INIArray(ini_values_csv);
- await utils.asyncForEach(ini_values, async function(ini_value: string) {
- // add script to set ini value
- script += 'Add-Content C:\\tools\\php\\php.ini "' + ini_value + '"\n';
- });
- return script;
+ return (
+ 'Add-Content C:\\tools\\php\\php.ini "' + ini_values.join('\n') + '"\n'
+ );
}
diff --git a/src/coverage.ts b/src/coverage.ts
index 870f559a..998599a1 100644
--- a/src/coverage.ts
+++ b/src/coverage.ts
@@ -1,5 +1,4 @@
import * as utils from './utils';
-import * as pecl from './pecl';
import * as extensions from './extensions';
import * as config from './config';
diff --git a/src/extensions.ts b/src/extensions.ts
index 14a8af12..b72da2e2 100644
--- a/src/extensions.ts
+++ b/src/extensions.ts
@@ -1,5 +1,4 @@
import * as utils from './utils';
-import * as pecl from './pecl';
export async function addExtension(
extension_csv: string,
@@ -24,75 +23,6 @@ export async function addExtension(
}
}
-/**
- * Enable extensions which are installed but not enabled on windows
- *
- * @param extension
- */
-export async function enableExtensionWindows(
- extension: string,
- log_prefix: string
-) {
- return (
- `try {
- $exist = Test-Path -Path $ext_dir\\php_${extension}.dll
- if(!(php -m | findstr -i ${extension}) -and $exist) {
- Add-Content C:\\tools\\php\\php.ini "${await utils.getExtensionPrefix(
- extension
- )}=php_${extension}.dll"\n` +
- (await utils.log('Enabled ' + extension, 'win32', 'success', log_prefix)) +
- ` } elseif(php -m | findstr -i ${extension}) {\n` +
- (await utils.log(
- extension + ' was already enabled',
- 'win32',
- 'success',
- log_prefix
- )) +
- ` }
-} catch [Exception] {\n` +
- (await utils.log(
- extension + ' could not be enabled',
- 'win32',
- 'error',
- log_prefix
- )) +
- ` }\n`
- );
-}
-
-/**
- * Enable extensions which are installed but not enabled on unix
- *
- * @param extension
- * @param os_version
- */
-export async function enableExtensionUnix(
- extension: string,
- os_version: string,
- log_prefix: string
-) {
- return (
- `if [ ! "$(php -m | grep -i ${extension})" ] && [ -e "$ext_dir/${extension}.so" ]; then
- echo "${await utils.getExtensionPrefix(
- extension
- )}=${extension}" >> $ini_file\n` +
- (await utils.log(
- 'Enabled ' + extension,
- os_version,
- 'success',
- log_prefix
- )) +
- `;\n elif [ "$(php -m | grep -i ${extension})" ]; then \n` +
- (await utils.log(
- extension + ' was already enabled',
- os_version,
- 'success',
- log_prefix
- )) +
- `; fi\n`
- );
-}
-
/**
* Install and enable extensions for darwin
*
@@ -109,63 +39,33 @@ export async function addExtensionDarwin(
await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += await enableExtensionUnix(extension, 'darwin', log_prefix);
- switch (await pecl.checkPECLExtension(extension)) {
- case true:
- 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';
- break;
- default:
- install_command =
- 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
- break;
- }
- script +=
- 'if [ ! "$(php -m | grep -i ' +
- extension +
- ')" ]; then ' +
- install_command +
- ' && ' +
- (await utils.log(
- 'Installed and enabled ' + extension,
- 'darwin',
- 'success',
- log_prefix
- )) +
- ' || ' +
- (await utils.log(
- 'Could not install ' + extension + ' on PHP' + version,
- 'darwin',
- 'error',
- log_prefix
- )) +
- '; fi\n';
+ 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';
break;
- case false:
default:
- script +=
- 'if [ ! "$(php -m | grep -i ' +
- extension +
- ')" ]; then \n' +
- (await utils.log(
- 'Could not find ' + extension + ' for PHP' + version + ' on PECL',
- 'darwin',
- 'error',
- log_prefix
- )) +
- '; fi\n';
+ install_command = 'sudo pecl install ' + extension + ' >/dev/null 2>&1';
break;
}
+ script +=
+ 'add_extension ' +
+ extension +
+ ' "' +
+ install_command +
+ '" ' +
+ (await utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
return script;
}
@@ -186,63 +86,33 @@ export async function addExtensionWindows(
await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += await enableExtensionWindows(extension, log_prefix);
- switch (await pecl.checkPECLExtension(extension)) {
- case true:
- 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';
- break;
- case '7.2xdebug':
- default:
- install_command = 'Install-PhpExtension ' + extension;
- break;
- }
- script +=
- 'if(!(php -m | findstr -i ' +
- extension +
- ')) { ' +
- 'try { ' +
- install_command +
- '\n' +
- (await utils.log(
- 'Installed and enabled ' + extension,
- 'win32',
- 'success',
- log_prefix
- )) +
- ' } catch [Exception] { ' +
- (await utils.log(
- 'Could not install ' + extension + ' on PHP' + version,
- 'win32',
- 'error',
- log_prefix
- )) +
- ' } }\n';
+ 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';
break;
- case false:
+ case '7.2xdebug':
default:
- script +=
- 'if(!(php -m | findstr -i ' +
- extension +
- ')) { ' +
- (await utils.log(
- 'Could not find ' + extension + ' for PHP' + version + ' on PECL',
- 'win32',
- 'error',
- log_prefix
- )) +
- ' } \n';
+ install_command = 'Install-PhpExtension ' + extension;
break;
}
+ script +=
+ 'Add-Extension ' +
+ extension +
+ ' "' +
+ install_command +
+ '" ' +
+ (await utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
return script;
}
@@ -263,7 +133,6 @@ export async function addExtensionLinux(
await utils.asyncForEach(extensions, async function(extension: string) {
extension = extension.toLowerCase();
// add script to enable extension is already installed along with php
- script += await enableExtensionUnix(extension, 'linux', log_prefix);
let install_command: string = '';
switch (version + extension) {
@@ -285,25 +154,15 @@ export async function addExtensionLinux(
break;
}
script +=
- 'if [ ! "$(php -m | grep -i ' +
+ 'add_extension ' +
extension +
- ')" ]; then ' +
+ ' "' +
install_command +
- ' && ' +
- (await utils.log(
- 'Installed and enabled ' + extension,
- 'linux',
- 'success',
- log_prefix
- )) +
- ' || ' +
- (await utils.log(
- 'Could not find php' + version + '-' + extension + ' on APT repository',
- 'linux',
- 'error',
- log_prefix
- )) +
- '; fi\n';
+ '" ' +
+ (await utils.getExtensionPrefix(extension)) +
+ ' "' +
+ log_prefix +
+ '"\n';
});
return script;
}
diff --git a/src/install.ts b/src/install.ts
index 0ccda4b7..b7b83d6e 100644
--- a/src/install.ts
+++ b/src/install.ts
@@ -79,6 +79,4 @@ async function run() {
}
// call the run function
-run().then(function() {
- console.log('done');
-});
+run();
diff --git a/src/pecl.ts b/src/pecl.ts
deleted file mode 100644
index 260a1cba..00000000
--- a/src/pecl.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as hc from 'typed-rest-client/HttpClient';
-
-/**
- * Function to check if PECL extension exists
- *
- * @param extension
- */
-export async function checkPECLExtension(extension: string): Promise {
- const http: hc.HttpClient = new hc.HttpClient('shivammathur/php-setup', [], {
- allowRetries: true,
- maxRetries: 2
- });
- const response: hc.HttpClientResponse = await http.get(
- 'https://pecl.php.net/json.php?package=' + extension
- );
- return response.message.statusCode === 200;
-}
diff --git a/src/scripts/7.4.sh b/src/scripts/7.4.sh
index 7b6a05ca..b1b08f41 100644
--- a/src/scripts/7.4.sh
+++ b/src/scripts/7.4.sh
@@ -1,3 +1,4 @@
+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
brew link icu4c gettext --force >/dev/null 2>&1
@@ -48,12 +49,36 @@ export PHPBREW_HOME=/opt/phpbrew
echo "[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc" >> ~/.bashrc
source ~/.bash_profile >/dev/null 2>&1
source ~/.bashrc >/dev/null 2>&1
-phpbrew install -j 6 7.4.0RC3 +dev >/dev/null 2>&1
-phpbrew switch 7.4.0RC3
-sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/bin/* /usr/local/bin/
-sudo ln -sf /opt/phpbrew/php/php-7.4.0RC3/etc/php.ini /etc/php.ini
+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"
sudo chmod 777 "$ini_file"
-brew install composer
\ No newline at end of file
+brew install composer
+
+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";
+ elif php -m | grep -i -q "$extension"; then
+ echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
+ 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";
+ 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";
+ fi
+ fi
+ fi
+}
\ No newline at end of file
diff --git a/src/scripts/darwin.sh b/src/scripts/darwin.sh
index b069f385..59a7bdc0 100644
--- a/src/scripts/darwin.sh
+++ b/src/scripts/darwin.sh
@@ -1,3 +1,4 @@
+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
@@ -10,4 +11,28 @@ 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
\ No newline at end of file
+composer -V
+
+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";
+ elif php -m | grep -i -q "$extension"; then
+ echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
+ 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";
+ 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";
+ fi
+ fi
+ fi
+}
\ No newline at end of file
diff --git a/src/scripts/linux.sh b/src/scripts/linux.sh
index 8322c09b..0a33e846 100644
--- a/src/scripts/linux.sh
+++ b/src/scripts/linux.sh
@@ -1,5 +1,6 @@
-version=$(php-config --version | cut -c 1-3)
-if [ "$version" != "$1" ]; then
+existing_version=$(php-config --version | cut -c 1-3)
+version=$1
+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
sudo DEBIAN_FRONTEND=noninteractive apt update -y >/dev/null 2>&1
@@ -37,3 +38,20 @@ sudo chmod 777 "$ini_file"
sudo mkdir -p /run/php
php -v
composer -V
+
+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";
+ elif php -m | grep -i -q "$extension"; then
+ echo "\033[33;1m$log_prefix: $extension was already enabled\033[0m";
+ 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";
+ fi
+}
diff --git a/src/scripts/win32.ps1 b/src/scripts/win32.ps1
index 250f99ca..0ebe0b70 100644
--- a/src/scripts/win32.ps1
+++ b/src/scripts/win32.ps1
@@ -40,4 +40,41 @@ if($version -lt '7.4') {
Write-Host "Installing Composer" -ForegroundColor Blue
Install-Composer -Scope System -Path C:\tools\php
php -v
-composer -V
\ No newline at end of file
+composer -V
+
+Function Add-Extension($extension, $install_command, $prefix, $log_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
+ } elseif(php -m | findstr -i $extension) {
+ Write-Host "$log_prefix`: $extension was already enabled" -ForegroundColor yellow
+ }
+ } catch [Exception] {
+ Write-Host "$log_prefix`: $extension could not be enabled" -ForegroundColor red
+ }
+
+ $status = 404
+ try {
+ $status = (Invoke-WebRequest -Uri "https://pecl.php.net/json.php?package=$extension" -UseBasicParsing -DisableKeepAlive).StatusCode
+ } catch [Exception] {
+ $status = 500
+ }
+
+ if($status -eq 200) {
+ if(!(php -m | findstr -i $extension)) {
+ try {
+ Invoke-Expression $install_command
+ Write-Host "$log_prefix`: Installed and enabled $extension" -ForegroundColor green
+ } catch [Exception] {
+ Write-Host "$log_prefix`: Could not install $extension on PHP $version" -ForegroundColor red
+ }
+ }
+ } else {
+ if(!(php -m | findstr -i $extension)) {
+ Write-Host "$log_prefix`: Could not find $extension for PHP$version on PECL" -ForegroundColor red
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/utils.ts b/src/utils.ts
index 866f0a80..73d21e39 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -167,7 +167,7 @@ export async function log(
};
switch (prefix) {
case '':
- prefix = prefix;
+ prefix = '';
break;
default:
prefix = prefix + ': ';
From f7f5b1a7e11fe49e26c6990e350327828b1794e1 Mon Sep 17 00:00:00 2001
From: Shivam Mathur
Date: Fri, 11 Oct 2019 13:14:59 +0530
Subject: [PATCH 2/5] Specify version in phpenmod and phpdismod
---
__tests__/coverage.test.ts | 6 +++---
lib/coverage.js | 12 +++++++++---
src/coverage.ts | 12 +++++++++---
3 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/__tests__/coverage.test.ts b/__tests__/coverage.test.ts
index 0de20bb8..8aa59590 100644
--- a/__tests__/coverage.test.ts
+++ b/__tests__/coverage.test.ts
@@ -27,7 +27,7 @@ describe('Config tests', () => {
let linux: string = await coverage.addCoverage('pcov', '7.4', 'linux');
expect(linux).toContain('addExtension pcov');
expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file');
- expect(linux).toContain('sudo phpdismod xdebug');
+ expect(linux).toContain('sudo phpdismod -v 7.4 xdebug');
});
it('checking addCoverage with PCOV on darwin', async () => {
@@ -58,8 +58,8 @@ describe('Config tests', () => {
it('checking disableCoverage on linux', async () => {
let linux: string = await coverage.addCoverage('none', '7.4', 'linux');
- expect(linux).toContain('sudo phpdismod xdebug');
- expect(linux).toContain('sudo phpdismod pcov');
+ expect(linux).toContain('sudo phpdismod -v 7.4 xdebug');
+ expect(linux).toContain('sudo phpdismod -v 7.4 pcov');
expect(linux).toContain('sudo sed -i "/xdebug/d" $ini_file');
expect(linux).toContain('sudo sed -i "/pcov/d" $ini_file');
});
diff --git a/lib/coverage.js b/lib/coverage.js
index df8264ae..3451c57b 100644
--- a/lib/coverage.js
+++ b/lib/coverage.js
@@ -57,7 +57,9 @@ function addCoveragePCOV(version, os_version) {
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
+ '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' xdebug; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n';
break;
case 'darwin':
@@ -89,11 +91,15 @@ function disableCoverage(version, os_version) {
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
+ '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' xdebug; fi\n';
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/pcov.ini ]; then sudo phpdismod pcov; fi\n';
+ '/mods-available/pcov.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' pcov; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n';
script += 'sudo sed -i "/pcov/d" $ini_file\n';
break;
diff --git a/src/coverage.ts b/src/coverage.ts
index 998599a1..b349efbd 100644
--- a/src/coverage.ts
+++ b/src/coverage.ts
@@ -56,7 +56,9 @@ export async function addCoveragePCOV(version: string, os_version: string) {
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
+ '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' xdebug; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n';
break;
case 'darwin':
@@ -98,11 +100,15 @@ export async function disableCoverage(version: string, os_version: string) {
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/xdebug.ini ]; then sudo phpdismod xdebug; fi\n';
+ '/mods-available/xdebug.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' xdebug; fi\n';
script +=
'if [ -e /etc/php/' +
version +
- '/mods-available/pcov.ini ]; then sudo phpdismod pcov; fi\n';
+ '/mods-available/pcov.ini ]; then sudo phpdismod -v ' +
+ version +
+ ' pcov; fi\n';
script += 'sudo sed -i "/xdebug/d" $ini_file\n';
script += 'sudo sed -i "/pcov/d" $ini_file\n';
break;
From 99bbaa2a5885594dd981ec78a1af50a71f7e397a Mon Sep 17 00:00:00 2001
From: Shivam Mathur
Date: Fri, 11 Oct 2019 23:09:05 +0530
Subject: [PATCH 3/5] Improve documentation
---
action.yml | 10 +++++-----
lib/coverage.js | 25 +++++++++++++++++++++++++
lib/extensions.js | 8 ++++++++
lib/utils.js | 12 ++++++++++++
src/coverage.ts | 25 +++++++++++++++++++++++++
src/extensions.ts | 8 ++++++++
src/scripts/linux.sh | 9 +++------
src/utils.ts | 12 ++++++++++++
8 files changed, 98 insertions(+), 11 deletions(-)
diff --git a/action.yml b/action.yml
index 45f0b5f9..5e88def7 100644
--- a/action.yml
+++ b/action.yml
@@ -1,21 +1,21 @@
name: 'Setup PHP Action'
author: shivammathur
-description: 'Setup a PHP environment with composer and add it to the PATH'
+description: 'GitHub action to setup PHP with required extensions, php.ini configuration, code-coverage support and composer'
branding:
icon: 'activity'
color: 'purple'
inputs:
php-version:
- description: 'PHP version to be installed.'
+ description: 'PHP version you want to install.'
required: true
extension-csv:
- description: '(Optional) Comma seperated list of PHP extensions to be installed.'
+ description: '(Optional) PHP extensions you want to install.'
required: false
ini-values-csv:
- description: '(Optional) Custom values you want to set in php.ini'
+ description: '(Optional) Custom values you want to set in php.ini.'
required: false
coverage:
- description: '(Optional) Driver to calculate code coverage (Accepts: xdebug, pcov and none)'
+ description: '(Optional) Code coverage driver you want to install. (Accepts: xdebug, pcov and none)'
required: false
runs:
using: 'node12'
diff --git a/lib/coverage.js b/lib/coverage.js
index 3451c57b..52a3a093 100644
--- a/lib/coverage.js
+++ b/lib/coverage.js
@@ -19,6 +19,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
const utils = __importStar(require("./utils"));
const extensions = __importStar(require("./extensions"));
const config = __importStar(require("./config"));
+/**
+ * Function to set coverage driver
+ *
+ * @param coverage_driver
+ * @param version
+ * @param os_version
+ */
function addCoverage(coverage_driver, version, os_version) {
return __awaiter(this, void 0, void 0, function* () {
coverage_driver.toLowerCase();
@@ -35,6 +42,12 @@ function addCoverage(coverage_driver, version, os_version) {
});
}
exports.addCoverage = addCoverage;
+/**
+ * Function to setup Xdebug
+ *
+ * @param version
+ * @param os_version
+ */
function addCoverageXdebug(version, os_version) {
return __awaiter(this, void 0, void 0, function* () {
let script = '\n';
@@ -44,6 +57,12 @@ function addCoverageXdebug(version, os_version) {
});
}
exports.addCoverageXdebug = addCoverageXdebug;
+/**
+ * Function to setup PCOV
+ *
+ * @param version
+ * @param os_version
+ */
function addCoveragePCOV(version, os_version) {
return __awaiter(this, void 0, void 0, function* () {
let script = '\n';
@@ -83,6 +102,12 @@ function addCoveragePCOV(version, os_version) {
});
}
exports.addCoveragePCOV = addCoveragePCOV;
+/**
+ * Function to disable Xdebug and PCOV
+ *
+ * @param version
+ * @param os_version
+ */
function disableCoverage(version, os_version) {
return __awaiter(this, void 0, void 0, function* () {
let script = '\n';
diff --git a/lib/extensions.js b/lib/extensions.js
index db448175..9f0c3f99 100644
--- a/lib/extensions.js
+++ b/lib/extensions.js
@@ -17,6 +17,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const utils = __importStar(require("./utils"));
+/**
+ * Install and enable extensions
+ *
+ * @param extension_csv
+ * @param version
+ * @param os_version
+ * @param log_prefix
+ */
function addExtension(extension_csv, version, os_version, log_prefix = 'Add Extension') {
return __awaiter(this, void 0, void 0, function* () {
switch (os_version) {
diff --git a/lib/utils.js b/lib/utils.js
index c283638c..7d923847 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -19,6 +19,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const core = __importStar(require("@actions/core"));
+/**
+ * Function to get inputs from both with and env annotations.
+ *
+ * @param name
+ * @param mandatory
+ */
function getInput(name, mandatory) {
return __awaiter(this, void 0, void 0, function* () {
let input = process.env[name];
@@ -117,6 +123,7 @@ function writeScript(filename, version, script) {
exports.writeScript = writeScript;
/**
* Function to break extension csv into an array
+ *
* @param extension_csv
*/
function extensionArray(extension_csv) {
@@ -196,6 +203,11 @@ function log(message, os_version, log_type, prefix = '') {
});
}
exports.log = log;
+/**
+ * Function to get prefix required to load an extension.
+ *
+ * @param extension
+ */
function getExtensionPrefix(extension) {
return __awaiter(this, void 0, void 0, function* () {
let zend = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
diff --git a/src/coverage.ts b/src/coverage.ts
index b349efbd..6d9204c3 100644
--- a/src/coverage.ts
+++ b/src/coverage.ts
@@ -2,6 +2,13 @@ import * as utils from './utils';
import * as extensions from './extensions';
import * as config from './config';
+/**
+ * Function to set coverage driver
+ *
+ * @param coverage_driver
+ * @param version
+ * @param os_version
+ */
export async function addCoverage(
coverage_driver: string,
version: string,
@@ -20,6 +27,12 @@ export async function addCoverage(
}
}
+/**
+ * Function to setup Xdebug
+ *
+ * @param version
+ * @param os_version
+ */
export async function addCoverageXdebug(version: string, os_version: string) {
let script: string = '\n';
script += await extensions.addExtension(
@@ -38,6 +51,12 @@ export async function addCoverageXdebug(version: string, os_version: string) {
return script;
}
+/**
+ * Function to setup PCOV
+ *
+ * @param version
+ * @param os_version
+ */
export async function addCoveragePCOV(version: string, os_version: string) {
let script: string = '\n';
switch (version) {
@@ -93,6 +112,12 @@ export async function addCoveragePCOV(version: string, os_version: string) {
return script;
}
+/**
+ * Function to disable Xdebug and PCOV
+ *
+ * @param version
+ * @param os_version
+ */
export async function disableCoverage(version: string, os_version: string) {
let script: string = '\n';
switch (os_version) {
diff --git a/src/extensions.ts b/src/extensions.ts
index b72da2e2..68d7a202 100644
--- a/src/extensions.ts
+++ b/src/extensions.ts
@@ -1,5 +1,13 @@
import * as utils from './utils';
+/**
+ * Install and enable extensions
+ *
+ * @param extension_csv
+ * @param version
+ * @param os_version
+ * @param log_prefix
+ */
export async function addExtension(
extension_csv: string,
version: string,
diff --git a/src/scripts/linux.sh b/src/scripts/linux.sh
index 0a33e846..d2553078 100644
--- a/src/scripts/linux.sh
+++ b/src/scripts/linux.sh
@@ -18,14 +18,11 @@ if [ "$existing_version" != "$1" ]; then
fi
if [ ! -e "/usr/bin/composer" ]; then
- EXPECTED_SIGNATURE="$(curl -s https://composer.github.io/installer.sig)" &
- curl -s -L https://getcomposer.org/installer > composer-setup.php &
- ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" &
-
- if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
+ curl -s -L https://getcomposer.org/installer > composer-setup.php
+ if [ "$(curl -s https://composer.github.io/installer.sig)" != "$(php -r "echo hash_file('sha384', 'composer-setup.php');")" ]; then
>&2 echo 'ERROR: Invalid installer signature'
else
- COMPOSER_ALLOW_SUPERUSER=1
+ export COMPOSER_ALLOW_SUPERUSER=1
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
fi
rm composer-setup.php
diff --git a/src/utils.ts b/src/utils.ts
index 73d21e39..0b22f572 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -2,6 +2,12 @@ import * as fs from 'fs';
import * as path from 'path';
import * as core from '@actions/core';
+/**
+ * Function to get inputs from both with and env annotations.
+ *
+ * @param name
+ * @param mandatory
+ */
export async function getInput(
name: string,
mandatory: boolean
@@ -117,6 +123,7 @@ export async function writeScript(
/**
* Function to break extension csv into an array
+ *
* @param extension_csv
*/
export async function extensionArray(
@@ -202,6 +209,11 @@ export async function log(
}
}
+/**
+ * Function to get prefix required to load an extension.
+ *
+ * @param extension
+ */
export async function getExtensionPrefix(extension: string): Promise {
let zend: Array = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
switch (zend.indexOf(extension)) {
From b2e7a49dd5e98cec8d6c46c4a0f17e92b11f03ff Mon Sep 17 00:00:00 2001
From: Shivam Mathur
Date: Sun, 13 Oct 2019 05:27:58 +0530
Subject: [PATCH 4/5] Add lumen examples and fix laravel examples
---
README.md | 9 ++++--
examples/laravel-mysql.yml | 4 ++-
examples/lumen-mysql.yml | 60 +++++++++++++++++++++++++++++++++++
examples/lumen-postgres.yml | 62 +++++++++++++++++++++++++++++++++++++
examples/lumen.yml | 29 +++++++++++++++++
5 files changed, 160 insertions(+), 4 deletions(-)
create mode 100644 examples/lumen-mysql.yml
create mode 100644 examples/lumen-postgres.yml
create mode 100644 examples/lumen.yml
diff --git a/README.md b/README.md
index ee1bbdb2..f7437f19 100644
--- a/README.md
+++ b/README.md
@@ -4,9 +4,9 @@
-# Setup PHP in GitHub Actions
+Setup PHP in GitHub Actions
-
+
@@ -163,6 +163,9 @@ Examples for setting up this GitHub Action with different PHP Frameworks/Package
|Laravel with `MySQL` and `Redis`|`ubuntu`|[laravel-mysql.yml](./examples/laravel-mysql.yml "GitHub Action for Laravel with MySQL and Redis")|
|Laravel with `PostgreSQL` and `Redis`|`ubuntu`|[laravel-postgres.yml](./examples/laravel-postgres.yml "GitHub Action for Laravel with PostgreSQL and Redis")|
|Laravel without services|`macOS`, `ubuntu` and `windows`|[laravel.yml](./examples/laravel.yml "GitHub Action for Laravel without services")|
+|Lumen with `MySQL` and `Redis`|`ubuntu`|[lumen-mysql.yml](./examples/lumen-mysql.yml "GitHub Action for Lumen with MySQL and Redis")|
+|Lumen with `PostgreSQL` and `Redis`|`ubuntu`|[lumen-postgres.yml](./examples/lumen-postgres.yml "GitHub Action for Lumen with PostgreSQL and Redis")|
+|Lumen without services|`macOS`, `ubuntu` and `windows`|[lumen.yml](./examples/lumen.yml "GitHub Action for Lumen without services")|
|Slim Framework|`macOS`, `ubuntu` and `windows`|[slim-framework.yml](./examples/slim-framework.yml "GitHub Action for Slim Framework")|
|Symfony with `MySQL`|`ubuntu`|[symfony-mysql.yml](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL")|
|Symfony with `PostgreSQL`|`ubuntu`|[symfony-postgres.yml](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL")|
@@ -180,7 +183,7 @@ Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "sh
## :sparkling_heart: Support this project
-- Please star the project and share it among your developer friends.
+- Please star the project and share it.
- Consider supporting on and .
## :bookmark: This action uses the following works
diff --git a/examples/laravel-mysql.yml b/examples/laravel-mysql.yml
index 707fb0a3..376081e9 100644
--- a/examples/laravel-mysql.yml
+++ b/examples/laravel-mysql.yml
@@ -5,7 +5,9 @@ jobs:
laravel:
name: Laravel (PHP ${{ matrix.php-versions }})
runs-on: ubuntu-latest
- env:
+ env:
+ DB_DATABASE: laravel
+ DB_USERNAME: root
DB_PASSWORD: password
BROADCAST_DRIVER: log
CACHE_DRIVER: redis
diff --git a/examples/lumen-mysql.yml b/examples/lumen-mysql.yml
new file mode 100644
index 00000000..716b30ae
--- /dev/null
+++ b/examples/lumen-mysql.yml
@@ -0,0 +1,60 @@
+# GitHub Action for Lumen with MySQL and Redis
+name: Testing Lumen with MySQL
+on: [push, pull_request]
+jobs:
+ lumen:
+ name: Lumen (PHP ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ env:
+ DB_DATABASE: lumen
+ DB_USERNAME: root
+ DB_PASSWORD: password
+ BROADCAST_DRIVER: log
+ CACHE_DRIVER: redis
+ QUEUE_CONNECTION: redis
+ SESSION_DRIVER: redis
+ services:
+ mysql:
+ image: mysql:5.7
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: false
+ MYSQL_ROOT_PASSWORD: password
+ MYSQL_DATABASE: lumen
+ ports:
+ - 3306
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ redis:
+ image: redis
+ ports:
+ - 6379/tcp
+ options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['7.2', '7.3']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extension-csv: mbstring, dom, fileinfo, mysql
+ coverage: xdebug #optional
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+ composer require predis/predis illuminate/redis
+ - name: Prepare the application
+ run: php -r "file_exists('.env') || copy('.env.example', '.env');"
+ - name: Register Redis as service provider
+ run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
+ - name: Run Migration
+ run: php artisan migrate -v
+ env:
+ DB_PORT: ${{ job.services.mysql.ports['3306'] }}
+ - name: Test with phpunit
+ run: vendor/bin/phpunit --coverage-text
+ env:
+ DB_PORT: ${{ job.services.mysql.ports['3306'] }}
\ No newline at end of file
diff --git a/examples/lumen-postgres.yml b/examples/lumen-postgres.yml
new file mode 100644
index 00000000..d1db7bc9
--- /dev/null
+++ b/examples/lumen-postgres.yml
@@ -0,0 +1,62 @@
+# GitHub Action for Lumen with PostgreSQL and Redis
+name: Testing Lumen with PostgreSQL
+on: [push, pull_request]
+jobs:
+ laravel:
+ name: Lumen (PHP ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ env:
+ BROADCAST_DRIVER: log
+ CACHE_DRIVER: redis
+ QUEUE_CONNECTION: redis
+ SESSION_DRIVER: redis
+ DB_CONNECTION: pgsql
+ DB_HOST: localhost
+ DB_PASSWORD: postgres
+ DB_USERNAME: postgres
+ DB_DATABASE: postgres
+ services:
+ postgres:
+ image: postgres:10.8
+ env:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: postgres
+ ports:
+ - 5432/tcp
+ options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
+ redis:
+ image: redis
+ ports:
+ - 6379/tcp
+ options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['7.2', '7.3']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extension-csv: mbstring, dom, fileinfo, pgsql
+ coverage: xdebug #optional
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+ composer require predis/predis illuminate/redis
+ - name: Prepare the application
+ run: php -r "file_exists('.env') || copy('.env.example', '.env');"
+ - name: Register Redis as service provider
+ run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
+ - name: Run Migration
+ run: php artisan migrate -v
+ env:
+ DB_PORT: ${{ job.services.postgres.ports[5432] }}
+ - name: Test with phpunit
+ run: vendor/bin/phpunit --coverage-text
+ env:
+ DB_PORT: ${{ job.services.postgres.ports[5432] }}
diff --git a/examples/lumen.yml b/examples/lumen.yml
new file mode 100644
index 00000000..c90e3cf4
--- /dev/null
+++ b/examples/lumen.yml
@@ -0,0 +1,29 @@
+# GitHub Action for Lumen
+name: Unit Testing Lumen
+on: [push, pull_request]
+jobs:
+ lumen:
+ name: Lumen (PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }})
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ fail-fast: false
+ max-parallel: 9
+ matrix:
+ operating-system: [ubuntu-latest, windows-latest, macOS-latest]
+ php-versions: ['7.2', '7.3']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extension-csv: mbstring, dom, fileinfo, mysql
+ coverage: xdebug #optional
+ - name: Install Composer dependencies
+ run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+ - name: Prepare the application
+ run: php -r "file_exists('.env') || copy('.env.example', '.env');"
+ - name: Test with phpunit
+ run: vendor/bin/phpunit --coverage-text
+ shell: pwsh
\ No newline at end of file
From fce93115225eebc16a5cf1b483c04dbd0c3259e8 Mon Sep 17 00:00:00 2001
From: Shivam Mathur
Date: Sun, 13 Oct 2019 09:48:29 +0530
Subject: [PATCH 5/5] Add support for phalcon
---
README.md | 8 +++--
__tests__/extensions.test.ts | 8 +++++
examples/phalcon-mysql.yml | 60 ++++++++++++++++++++++++++++++++++
examples/phalcon-postgres.yml | 61 +++++++++++++++++++++++++++++++++++
lib/extensions.js | 8 +++++
lib/utils.js | 5 ++-
src/extensions.ts | 8 +++++
src/scripts/phalcon.sh | 19 +++++++++++
src/utils.ts | 5 ++-
9 files changed, 177 insertions(+), 5 deletions(-)
create mode 100644 examples/phalcon-mysql.yml
create mode 100644 examples/phalcon-postgres.yml
create mode 100644 src/scripts/phalcon.sh
diff --git a/README.md b/README.md
index f7437f19..cd3d49cb 100644
--- a/README.md
+++ b/README.md
@@ -64,8 +64,9 @@ with:
Specify `coverage: pcov` to use `PCOV`.
It is much faster than `Xdebug`.
+`PCOV` needs `PHP >= 7.1`
If your source code directory is other than `src`, `lib` or, `app`, specify `pcov.directory` using the `ini-values-csv` input.
-`PCOV` needs `PHPUnit >= 8.0` and `PHP >= 7.1`, `PHPUnit` needs `PHP >= 7.2`. So use `PHP >= 7.2` with `PCOV`
+
```yaml
uses: shivammathur/setup-php@master
@@ -149,8 +150,7 @@ jobs:
- name: Check Composer Version
run: composer -V
- name: Check PHP Extensions
- run: php -m
-
+ run: php -m
```
### Examples
@@ -166,6 +166,8 @@ Examples for setting up this GitHub Action with different PHP Frameworks/Package
|Lumen with `MySQL` and `Redis`|`ubuntu`|[lumen-mysql.yml](./examples/lumen-mysql.yml "GitHub Action for Lumen with MySQL and Redis")|
|Lumen with `PostgreSQL` and `Redis`|`ubuntu`|[lumen-postgres.yml](./examples/lumen-postgres.yml "GitHub Action for Lumen with PostgreSQL and Redis")|
|Lumen without services|`macOS`, `ubuntu` and `windows`|[lumen.yml](./examples/lumen.yml "GitHub Action for Lumen without services")|
+|Phalcon with `MySQL`|`ubuntu`|[phalcon-mysql.yml](./examples/phalcon-mysql.yml "GitHub Action for Phalcon with MySQL")|
+|Phalcon with `PostgreSQL`|`ubuntu`|[phalcon-postgres.yml](./examples/phalcon-postgres.yml "GitHub Action for Phalcon with PostgreSQL")|
|Slim Framework|`macOS`, `ubuntu` and `windows`|[slim-framework.yml](./examples/slim-framework.yml "GitHub Action for Slim Framework")|
|Symfony with `MySQL`|`ubuntu`|[symfony-mysql.yml](./examples/symfony-mysql.yml "GitHub Action for Symfony with MySQL")|
|Symfony with `PostgreSQL`|`ubuntu`|[symfony-postgres.yml](./examples/symfony-postgres.yml "GitHub Action for Symfony with PostgreSQL")|
diff --git a/__tests__/extensions.test.ts b/__tests__/extensions.test.ts
index c4840b7f..5f559653 100644
--- a/__tests__/extensions.test.ts
+++ b/__tests__/extensions.test.ts
@@ -45,6 +45,14 @@ describe('Extension tests', () => {
expect(linux).toContain('./xdebug.sh');
expect(linux).toContain('./pcov.sh');
+ linux = await extensions.addExtension('phalcon3, phalcon4', '7.2', 'linux');
+ expect(linux).toContain('./phalcon.sh master 7.2');
+ expect(linux).toContain('./phalcon.sh 4.0.x 7.2');
+
+ linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
+ expect(linux).toContain('./phalcon.sh master 7.3');
+ expect(linux).toContain('./phalcon.sh 4.0.x 7.3');
+
linux = await extensions.addExtension('xdebug', '7.2', 'fedora');
expect(linux).toContain('Platform fedora is not supported');
});
diff --git a/examples/phalcon-mysql.yml b/examples/phalcon-mysql.yml
new file mode 100644
index 00000000..170cc6c4
--- /dev/null
+++ b/examples/phalcon-mysql.yml
@@ -0,0 +1,60 @@
+# GitHub Action for Phalcon with MySQL
+## Notes
+## Make sure you have .env.example or .env file in your project
+## and you have loaded Dotenv (https://github.com/vlucas/phpdotenv)
+name: Testing Phalcon with MySQL
+on: [push, pull_request]
+jobs:
+ phalcon:
+ name: Phalcon (PHP ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ env:
+ DB_ADAPTER: mysql
+ DB_HOST: 127.0.0.1
+ DB_NAME: phalcon
+ DB_USERNAME: root
+ DB_PASSWORD: password
+ CODECEPTION_URL: 127.0.0.1
+ CODECEPTION_PORT: 8888
+ services:
+ mysql:
+ image: mysql:5.7
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: false
+ MYSQL_ROOT_PASSWORD: password
+ MYSQL_DATABASE: phalcon
+ ports:
+ - 3306
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['7.2', '7.3']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extension-csv: mbstring, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
+ coverage: xdebug #optional
+ - name: Install Composer dependencies
+ run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+ - name: Prepare the application
+ run: php -r "file_exists('.env') || copy('.env.example', '.env');"
+ - name: Run Migration
+ run: |
+ if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
+ vendor/bin/phinx migrate
+ vendor/bin/phinx seed:run
+ env:
+ DB_PORT: ${{ job.services.mysql.ports['3306'] }}
+ - name: Run Tests
+ run: |
+ (cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
+ vendor/bin/codecept build
+ vendor/bin/codecept run
+ env:
+ DB_PORT: ${{ job.services.mysql.ports['3306'] }}
\ No newline at end of file
diff --git a/examples/phalcon-postgres.yml b/examples/phalcon-postgres.yml
new file mode 100644
index 00000000..5daf3a0b
--- /dev/null
+++ b/examples/phalcon-postgres.yml
@@ -0,0 +1,61 @@
+# GitHub Action for Phalcon with PostgreSQL
+## Notes
+## Make sure you have .env.example or .env file in your project
+## and you have loaded Dotenv (https://github.com/vlucas/phpdotenv)
+name: Testing Phalcon with PostgreSQL
+on: [push, pull_request]
+jobs:
+ phalcon:
+ name: Phalcon (PHP ${{ matrix.php-versions }})
+ runs-on: ubuntu-latest
+ env:
+ DB_ADAPTER: pgsql
+ DB_HOST: 127.0.0.1
+ DB_NAME: postgres
+ DB_USERNAME: postgres
+ DB_PASSWORD: postgres
+ CODECEPTION_URL: 127.0.0.1
+ CODECEPTION_PORT: 8888
+ DB_CONNECTION: pgsql
+ services:
+ postgres:
+ image: postgres:10.8
+ env:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: postgres
+ ports:
+ - 5432/tcp
+ options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
+ strategy:
+ fail-fast: false
+ max-parallel: 3
+ matrix:
+ php-versions: ['7.2', '7.3']
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v1
+ - name: Setup PHP, with composer and extensions
+ uses: shivammathur/setup-php@master #https://github.com/shivammathur/setup-php
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extension-csv: mbstring, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
+ coverage: xdebug #optional
+ - name: Install Composer dependencies
+ run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+ - name: Prepare the application
+ run: php -r "file_exists('.env') || copy('.env.example', '.env');"
+ - name: Run Migration
+ run: |
+ if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
+ vendor/bin/phinx migrate
+ vendor/bin/phinx seed:run
+ env:
+ DB_PORT: ${{ job.services.postgres.ports['5432'] }}
+ - name: Run Tests
+ run: |
+ (cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
+ vendor/bin/codecept build
+ vendor/bin/codecept run
+ env:
+ DB_PORT: ${{ job.services.postgres.ports['5432'] }}
\ No newline at end of file
diff --git a/lib/extensions.js b/lib/extensions.js
index 9f0c3f99..eacebf3c 100644
--- a/lib/extensions.js
+++ b/lib/extensions.js
@@ -156,6 +156,14 @@ function addExtensionLinux(extension_csv, version, log_prefix) {
install_command =
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
+ 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;
default:
install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
diff --git a/lib/utils.js b/lib/utils.js
index 7d923847..4266f4a9 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -88,11 +88,14 @@ function readScript(filename, version, os_version) {
}
break;
case 'linux':
+ let files = ['scripts/phalcon.sh'];
+ yield readFiles74(['scripts/phalcon.sh']);
switch (version) {
case '7.4':
- yield readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']);
+ files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
break;
}
+ yield readFiles74(files);
break;
case 'win32':
switch (version) {
diff --git a/src/extensions.ts b/src/extensions.ts
index 68d7a202..069af4a8 100644
--- a/src/extensions.ts
+++ b/src/extensions.ts
@@ -152,6 +152,14 @@ export async function addExtensionLinux(
install_command =
'./pcov.sh >/dev/null 2>&1 && echo "extension=pcov.so" >> $ini_file';
break;
+ 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;
default:
install_command =
'sudo DEBIAN_FRONTEND=noninteractive apt install -y php' +
diff --git a/src/scripts/phalcon.sh b/src/scripts/phalcon.sh
new file mode 100644
index 00000000..b1ef2c4b
--- /dev/null
+++ b/src/scripts/phalcon.sh
@@ -0,0 +1,19 @@
+ini_file=$(php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
+sudo DEBIAN_FRONTEND=noninteractive apt install php"$2"-dev php-pear -y
+for tool in php-config phpize; do
+ if [ -e "/usr/bin/$tool$2" ]; then
+ sudo update-alternatives --set $tool /usr/bin/"$tool$2" &
+ fi
+done
+sudo pecl config-set php_ini "$ini_file"
+sudo pear config-set php_ini "$ini_file"
+sudo pecl install psr
+if [ "$1" = "master" ]; then
+ sudo DEBIAN_FRONTEND=noninteractive apt install php"$2"-phalcon -y
+else
+ git clone --depth=1 -v https://github.com/phalcon/cphalcon.git -b "$1"
+ (
+ cd cphalcon/build && sudo ./install --phpize /usr/bin/phpize"$2" --php-config /usr/bin/php-config"$2"
+ echo "extension=phalcon.so" >> "$ini_file"
+ )
+fi
\ No newline at end of file
diff --git a/src/utils.ts b/src/utils.ts
index 0b22f572..cdbf1da9 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -79,11 +79,14 @@ export async function readScript(
}
break;
case 'linux':
+ let files: Array = ['scripts/phalcon.sh'];
+ await readFiles74(['scripts/phalcon.sh']);
switch (version) {
case '7.4':
- await readFiles74(['scripts/xdebug.sh', 'scripts/pcov.sh']);
+ files.concat(['scripts/xdebug.sh', 'scripts/pcov.sh']);
break;
}
+ await readFiles74(files);
break;
case 'win32':
switch (version) {