8 Commits
1.1.1 ... 1.3.0

Author SHA1 Message Date
Shivam Mathur
3809746e7d Merge pull request #16 from shivammathur/develop
1.3.0
2020-10-13 14:29:02 +05:30
Shivam Mathur
f55a0043ab Add support for PHP 8.1
Add support for alias latest

Bump version to 1.3.0
2020-10-13 14:22:54 +05:30
Shivam Mathur
154644c7b4 Merge pull request #15 from shivammathur/develop
1.2.0
2020-09-30 10:13:45 +05:30
Shivam Mathur
60ee2fe878 Bump version to 1.2.0 2020-09-30 10:08:07 +05:30
Shivam Mathur
4db45d6171 Merge pull request #14 from shivammathur/develop
1.1.3
2020-08-10 12:39:37 +05:30
Shivam Mathur
7045a9c4c7 Add cubrid to the lists
Update README

Bump version to 1.1.3
2020-08-10 12:22:10 +05:30
Shivam Mathur
506984d835 Merge pull request #13 from shivammathur/develop
1.1.2
2020-08-04 06:50:24 +05:30
Shivam Mathur
f94c56d97f Change PHP 8.0 prefix for linux
Update extension lists

Bump version to 1.1.2
2020-08-04 05:55:46 +05:30
42 changed files with 1963 additions and 917 deletions

4
.github/FUNDING.yml vendored
View File

@@ -1,5 +1,7 @@
# These are supported funding model platforms # These are supported funding model platforms
github: shivammathur open_collective: setup-php
tidelift: "npm/setup-php"
community_bridge: setup-php
patreon: shivammathur patreon: shivammathur
custom: https://www.paypal.me/shivammathur custom: https://www.paypal.me/shivammathur

View File

@@ -16,10 +16,11 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
- [Usage](#memo-usage) - [Usage](#memo-usage)
- [Inputs](#inputs) - [Inputs](#inputs)
- [Workflow](#workflow) - [Workflow](#workflow)
- [Thread Safe Setup](#thread-safe-setup)
- [License](#scroll-license) - [License](#scroll-license)
- [Contributions](#1-contributions) - [Contributions](#1-contributions)
- [Support this project](#sparkling_heart-support-this-project) - [Support This Project](#sparkling_heart-support-this-project)
- [Dependencies](#bookmark-dependencies) - [Dependencies](#package-dependencies)
## :tada: PHP Support ## :tada: PHP Support
@@ -48,6 +49,8 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
## :memo: Usage ## :memo: Usage
Use this GitHub Action when the extensions you are adding in [setup-php](https://github.com/shivammathur/setup-php "setup-php GitHub Action") are installed and take a long time to setup. If you are using extensions which have the result `Installed and enabled` in the logs like `pecl` extensions on `Ubuntu` or extensions which have custom support, it is recommended to use this action to cache your extensions.
### Inputs ### Inputs
#### `php-version` (required) #### `php-version` (required)
@@ -71,6 +74,7 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info. See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info.
### Workflow ### Workflow
> Cache extensions in a PHP workflow > Cache extensions in a PHP workflow
```yaml ```yaml
@@ -111,6 +115,19 @@ jobs:
extensions: ${{ env.extensions }} extensions: ${{ env.extensions }}
``` ```
### Thread Safe Setup
If you setup both `TS` and `NTS` PHP versions on `Windows` in your workflow, please add `${{ env.phpts }}` to `key` and `restore-keys` inputs in `actions/cache` step in the above workflow to avoid conflicting cache.
```yaml
- name: Cache extensions
uses: actions/cache@v2
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
restore-keys: ${{ steps.extcache.outputs.key }}-${{ env.phpts }}
```
## :scroll: License ## :scroll: License
The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories. The scripts and documentation in this project are released under the [MIT License](LICENSE "License for shivammathur/cache-extensions"). This project has multiple [dependencies](https://github.com/shivammathur/cache-extensions/network/dependencies "Dependencies for this PHP Action"). Their licenses can be found in their respective repositories.
@@ -119,15 +136,15 @@ The scripts and documentation in this project are released under the [MIT Licens
Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported"). Contributions are welcome! See [Contributor's Guide](.github/CONTRIBUTING.md "shivammathur/cache-extensions contribution guide"). If you face any issues while using this or want to suggest a feature/improvement, create an issue [here](https://github.com/shivammathur/cache-extensions/issues "Issues reported").
## :sparkling_heart: Support this project ## :sparkling_heart: Support This Project
If this action helped you. If this action helped you.
- Sponsor the project by subscribing on [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon") or by contributing using [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal"). - Please star the project and share it. If you blog, please share your experience of using this action.
- Please star the project and share it with the community. - Please consider supporting our work by sponsoring using [Open Collective](https://opencollective.com/setup-php), [Paypal](https://www.paypal.me/shivammathur "Shivam Mathur PayPal") or [Patreon](https://www.patreon.com/shivammathur "Shivam Mathur Patreon").
- If you blog, write about your experience of using this action. - If you use this action at your company, please [reach out](mailto:contact@setup-php.com) to sponsor the project.
- If you need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")u need any help using this, please contact me using [Codementor](https://www.codementor.io/shivammathur "Shivam Mathur Codementor")
## :bookmark: Dependencies
## :package: Dependencies
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies") - [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")

View File

@@ -7,15 +7,28 @@ jest.mock('@actions/core', () => ({
})); }));
describe('Utils tests', () => { describe('Utils tests', () => {
it('checking readEnv', async () => {
process.env['test'] = 'setup-php';
expect(await utils.readEnv('test')).toBe('setup-php');
expect(await utils.readEnv('undefined')).toBe('');
});
it('checking getInput', async () => { it('checking getInput', async () => {
process.env['test'] = 'cache-extensions'; process.env['test'] = 'setup-php';
process.env['undefined'] = ''; expect(await utils.getInput('test', false)).toBe('setup-php');
expect(await utils.getInput('test', false)).toBe('cache-extensions');
expect(await utils.getInput('undefined', false)).toBe('');
expect(await utils.getInput('cache-extensions', false)).toBe( expect(await utils.getInput('cache-extensions', false)).toBe(
'cache-extensions' 'cache-extensions'
); );
expect(await utils.getInput('DoesNotExist', false)).toBe(''); expect(await utils.getInput('DoesNotExist', false)).toBe('');
expect(async () => {
await utils.getInput('DoesNotExist', true);
}).rejects.toThrow('Input required and not supplied: DoesNotExist');
});
it('checking parseVersion', async () => {
expect(await utils.parseVersion('7')).toBe('7.0');
expect(await utils.parseVersion('7.4')).toBe('7.4');
expect(await utils.parseVersion('latest')).toBe('7.4');
}); });
it('checking filterExtensions', async () => { it('checking filterExtensions', async () => {

162
dist/index.js vendored
View File

@@ -953,6 +953,32 @@ class ExecState extends events.EventEmitter {
/***/ }), /***/ }),
/***/ 82:
/***/ (function(__unusedmodule, exports) {
"use strict";
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
//# sourceMappingURL=utils.js.map
/***/ }),
/***/ 87: /***/ 87:
/***/ (function(module) { /***/ (function(module) {
@@ -960,6 +986,42 @@ module.exports = require("os");
/***/ }), /***/ }),
/***/ 102:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
// For internal use, subject to change.
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
// We use any as a valid input type
/* eslint-disable @typescript-eslint/no-explicit-any */
const fs = __importStar(__webpack_require__(747));
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
function issueCommand(command, message) {
const filePath = process.env[`GITHUB_${command}`];
if (!filePath) {
throw new Error(`Unable to find environment variable for file command ${command}`);
}
if (!fs.existsSync(filePath)) {
throw new Error(`Missing file at path: ${filePath}`);
}
fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
encoding: 'utf8'
});
}
exports.issueCommand = issueCommand;
//# sourceMappingURL=file-command.js.map
/***/ }),
/***/ 129: /***/ 129:
/***/ (function(module) { /***/ (function(module) {
@@ -987,13 +1049,28 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) { var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod; if (mod && mod.__esModule) return mod;
var result = {}; var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod); __setModuleDefault(result, mod);
return result; return result;
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.filterExtensions = exports.getInput = void 0; exports.filterExtensions = exports.parseVersion = exports.getInput = exports.readEnv = void 0;
const core = __importStar(__webpack_require__(470)); const core = __importStar(__webpack_require__(470));
/**
* Function to read environment variable and return a string value.
*
* @param property
*/
async function readEnv(property) {
const value = process.env[property];
switch (value) {
case undefined:
return '';
default:
return value;
}
}
exports.readEnv = readEnv;
/** /**
* Function to get inputs from both with and env annotations. * Function to get inputs from both with and env annotations.
* *
@@ -1001,16 +1078,39 @@ const core = __importStar(__webpack_require__(470));
* @param mandatory * @param mandatory
*/ */
async function getInput(name, mandatory) { async function getInput(name, mandatory) {
const input = process.env[name]; const input = core.getInput(name);
switch (input) { const env_input = await readEnv(name);
case '': switch (true) {
case undefined: case input != '':
return core.getInput(name, { required: mandatory });
default:
return input; return input;
case input == '' && env_input != '':
return env_input;
case input == '' && env_input == '' && mandatory:
throw new Error(`Input required and not supplied: ${name}`);
default:
return '';
} }
} }
exports.getInput = getInput; exports.getInput = getInput;
/**
* Function to parse PHP version.
*
* @param version
*/
async function parseVersion(version) {
switch (version) {
case 'latest':
return '7.4';
default:
switch (true) {
case version.length > 1:
return version.slice(0, 3);
default:
return version + '.0';
}
}
}
exports.parseVersion = parseVersion;
/** /**
* Function to filter extensions * Function to filter extensions
* *
@@ -1050,6 +1150,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87)); const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
/** /**
* Commands * Commands
* *
@@ -1103,28 +1204,14 @@ class Command {
return cmdStr; return cmdStr;
} }
} }
/**
* Sanitizes an input into a string so it can be passed into issueCommand safely
* @param input input to sanitize into a string
*/
function toCommandValue(input) {
if (input === null || input === undefined) {
return '';
}
else if (typeof input === 'string' || input instanceof String) {
return input;
}
return JSON.stringify(input);
}
exports.toCommandValue = toCommandValue;
function escapeData(s) { function escapeData(s) {
return toCommandValue(s) return utils_1.toCommandValue(s)
.replace(/%/g, '%25') .replace(/%/g, '%25')
.replace(/\r/g, '%0D') .replace(/\r/g, '%0D')
.replace(/\n/g, '%0A'); .replace(/\n/g, '%0A');
} }
function escapeProperty(s) { function escapeProperty(s) {
return toCommandValue(s) return utils_1.toCommandValue(s)
.replace(/%/g, '%25') .replace(/%/g, '%25')
.replace(/\r/g, '%0D') .replace(/\r/g, '%0D')
.replace(/\n/g, '%0A') .replace(/\n/g, '%0A')
@@ -1158,6 +1245,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = __webpack_require__(431); const command_1 = __webpack_require__(431);
const file_command_1 = __webpack_require__(102);
const utils_1 = __webpack_require__(82);
const os = __importStar(__webpack_require__(87)); const os = __importStar(__webpack_require__(87));
const path = __importStar(__webpack_require__(622)); const path = __importStar(__webpack_require__(622));
/** /**
@@ -1184,9 +1273,17 @@ var ExitCode;
*/ */
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) { function exportVariable(name, val) {
const convertedVal = command_1.toCommandValue(val); const convertedVal = utils_1.toCommandValue(val);
process.env[name] = convertedVal; process.env[name] = convertedVal;
command_1.issueCommand('set-env', { name }, convertedVal); const filePath = process.env['GITHUB_ENV'] || '';
if (filePath) {
const delimiter = '_GitHubActionsFileCommandDelimeter_';
const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;
file_command_1.issueCommand('ENV', commandValue);
}
else {
command_1.issueCommand('set-env', { name }, convertedVal);
}
} }
exports.exportVariable = exportVariable; exports.exportVariable = exportVariable;
/** /**
@@ -1202,7 +1299,13 @@ exports.setSecret = setSecret;
* @param inputPath * @param inputPath
*/ */
function addPath(inputPath) { function addPath(inputPath) {
command_1.issueCommand('add-path', {}, inputPath); const filePath = process.env['GITHUB_PATH'] || '';
if (filePath) {
file_command_1.issueCommand('PATH', inputPath);
}
else {
command_1.issueCommand('add-path', {}, inputPath);
}
process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
} }
exports.addPath = addPath; exports.addPath = addPath;
@@ -1607,7 +1710,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) { var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod; if (mod && mod.__esModule) return mod;
var result = {}; var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod); __setModuleDefault(result, mod);
return result; return result;
}; };
@@ -1622,8 +1725,7 @@ const utils = __importStar(__webpack_require__(163));
*/ */
async function run() { async function run() {
try { try {
let version = await utils.getInput('php-version', true); const version = await utils.parseVersion(await utils.getInput('php-version', true));
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const extensions = await utils.filterExtensions(await utils.getInput('extensions', true)); const extensions = await utils.filterExtensions(await utils.getInput('extensions', true));
const key = await utils.getInput('key', true); const key = await utils.getInput('key', true);
const script_path = path.join(__dirname, '../src/extensions.sh'); const script_path = path.join(__dirname, '../src/extensions.sh');

2154
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "cache-extensions", "name": "cache-extensions",
"version": "1.1.1", "version": "1.3.0",
"private": false, "private": false,
"description": "Cache extensions in GitHub Actions", "description": "Cache extensions in GitHub Actions",
"main": "dist/index.js", "main": "dist/index.js",
@@ -24,26 +24,26 @@
"author": "shivammathur", "author": "shivammathur",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.2.4", "@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4" "@actions/exec": "^1.0.4"
}, },
"devDependencies": { "devDependencies": {
"@types/jest": "^26.0.5", "@types/jest": "^26.0.14",
"@types/node": "^14.0.23", "@types/node": "^14.11.8",
"@typescript-eslint/eslint-plugin": "^3.6.1", "@typescript-eslint/eslint-plugin": "^4.4.1",
"@typescript-eslint/parser": "^3.6.1", "@typescript-eslint/parser": "^4.4.1",
"@zeit/ncc": "^0.22.3", "@zeit/ncc": "^0.22.3",
"eslint": "^7.4.0", "eslint": "^7.11.0",
"eslint-config-prettier": "^6.11.0", "eslint-config-prettier": "^6.12.0",
"eslint-plugin-import": "^2.22.0", "eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^23.18.0", "eslint-plugin-jest": "^24.1.0",
"eslint-plugin-prettier": "^3.1.4", "eslint-plugin-prettier": "^3.1.4",
"husky": "^4.2.5", "husky": "^4.3.0",
"jest": "^26.1.0", "jest": "^26.5.3",
"jest-circus": "^26.1.0", "jest-circus": "^26.5.3",
"prettier": "^2.0.5", "prettier": "^2.1.2",
"ts-jest": "^26.1.3", "ts-jest": "^26.4.1",
"typescript": "^3.9.7" "typescript": "^4.0.3"
}, },
"husky": { "husky": {
"skipCI": true, "skipCI": true,

View File

@@ -8,9 +8,10 @@ import * as utils from './utils';
*/ */
export async function run(): Promise<void> { export async function run(): Promise<void> {
try { try {
let version: string = await utils.getInput('php-version', true); const version: string = await utils.parseVersion(
version = version.length > 1 ? version.slice(0, 3) : version + '.0'; await utils.getInput('php-version', true)
const extensions = await utils.filterExtensions( );
const extensions: string = await utils.filterExtensions(
await utils.getInput('extensions', true) await utils.getInput('extensions', true)
); );
const key: string = await utils.getInput('key', true); const key: string = await utils.getInput('key', true);

View File

@@ -1,12 +1,11 @@
linux_extension_dir() { linux_extension_dir() {
apiv=$1 apiv=$1
old_versions_linux="5.[4-5]"
if [ "$version" = "5.3" ]; then if [ "$version" = "5.3" ]; then
echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv" echo "/home/runner/php/5.3.29/lib/php/extensions/no-debug-non-zts-$apiv"
elif [[ "$version" =~ $old_versions_linux ]]; then elif [[ "$version" =~ $old_versions ]]; then
echo "/usr/lib/php5/$apiv" echo "/usr/lib/php5/$apiv"
elif [ "$version" = "8.0" ]; then elif [[ "$version" =~ $nightly_versions ]]; then
echo "/home/runner/php/8.0/lib/php/extensions/no-debug-non-zts-$apiv" echo "/usr/local/php/$version/lib/php/extensions/no-debug-non-zts-$apiv"
else else
echo "/usr/lib/php/$apiv" echo "/usr/lib/php/$apiv"
fi fi
@@ -33,6 +32,7 @@ get_apiv() {
7.2) echo "20170718" ;; 7.2) echo "20170718" ;;
7.3) echo "20180731" ;; 7.3) echo "20180731" ;;
7.4) echo "20190902" ;; 7.4) echo "20190902" ;;
8.0) echo "20200930" ;;
*) *)
php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h" php_h="https://raw.githubusercontent.com/php/php-src/master/main/php.h"
curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3 curl -sSL --retry 5 "$php_h" | grep "PHP_API_VERSION" | cut -d' ' -f 3
@@ -73,6 +73,8 @@ extensions=$1
key=$2 key=$2
version=$3 version=$3
os=$(uname -s) os=$(uname -s)
old_versions="5.[4-5]"
nightly_versions="8.[0-1]"
if [ "$os" = "Linux" ]; then if [ "$os" = "Linux" ]; then
release=$(lsb_release -s -c) release=$(lsb_release -s -c)
os=$os-$release os=$os-$release
@@ -87,9 +89,9 @@ elif [ "$os" = "Darwin" ]; then
else else
os="Windows" os="Windows"
dir='C:\\tools\\php\\ext' dir='C:\\tools\\php\\ext'
if [ "$version" = "8.0" ] && [[ "$extensions" == *pcov* ]]; then fi
key="$key-pcov_20200410" if [[ "$version" =~ $nightly_versions ]]; then
fi key="$key-20200930"
fi fi
key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2) key="$os"-ext-"$version"-$(echo -n "$extensions-$key" | openssl dgst -sha256 | cut -d ' ' -f 2)
echo "::set-output name=dir::$dir" echo "::set-output name=dir::$dir"

View File

@@ -5,6 +5,7 @@ bcmath
bz2 bz2
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -16,6 +17,7 @@ ftp
gd gd
hash hash
iconv iconv
ioncube
intl intl
json json
libxml libxml
@@ -31,6 +33,8 @@ pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_sqlite pdo_sqlite
Phar Phar

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -34,6 +36,8 @@ pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -34,6 +36,8 @@ pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -5,6 +5,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -17,6 +18,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -4,6 +4,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -15,6 +16,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -42,6 +44,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ hash
iconv iconv
igbinary igbinary
imap imap
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,8 +6,8 @@ Core
ctype ctype
curl curl
date date
dba
dom dom
enchant
exif exif
FFI FFI
fileinfo fileinfo
@@ -18,22 +18,30 @@ gettext
gmp gmp
hash hash
iconv iconv
ioncube
intl intl
json json
ldap
libxml libxml
mbstring mbstring
mysqli mysqli
mysqlnd mysqlnd
odbc
openssl openssl
pcntl pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql pdo_mysql
PDO_ODBC
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite
pgsql pgsql
Phar Phar
phpdbg_webhelper
posix posix
pspell pspell
readline readline
@@ -43,6 +51,7 @@ shmop
SimpleXML SimpleXML
soap soap
sockets sockets
sodium
SPL SPL
sqlite3 sqlite3
standard standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm sysvshm
tidy tidy
tokenizer tokenizer
xdebug
xml xml
xmlreader xmlreader
xmlrpc
xmlwriter xmlwriter
xsl xsl
Zend OPcache Zend OPcache
@@ -66,4 +75,3 @@ blackfire
[Zend Modules] [Zend Modules]
Zend OPcache Zend OPcache
Xdebug Xdebug

View File

@@ -0,0 +1,77 @@
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
ioncube
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
odbc
openssl
pcntl
pcov
pcre
PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar
phpdbg_webhelper
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
phalcon3
phalcon4
blackfire
[Zend Modules]
Zend OPcache
Xdebug

View File

@@ -5,6 +5,7 @@ bcmath
bz2 bz2
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -16,6 +17,7 @@ ftp
gd gd
hash hash
iconv iconv
ioncube
intl intl
json json
libxml libxml
@@ -28,6 +30,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_sqlite pdo_sqlite
Phar Phar

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -33,6 +35,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -33,6 +35,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -5,6 +5,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -17,6 +18,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -4,6 +4,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -15,6 +16,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -4,6 +4,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -15,6 +16,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -4,6 +4,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -15,6 +16,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -4,6 +4,7 @@ apcu
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -15,6 +16,7 @@ gettext
hash hash
iconv iconv
igbinary igbinary
ioncube
intl intl
json json
libxml libxml

View File

@@ -1,47 +1,86 @@
[PHP Modules] [PHP Modules]
amqp amqp
apcu apcu
bcmath
bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl
date date
dba
dom
enchant
exif exif
FFI FFI
fileinfo fileinfo
filter filter
ftp ftp
gd
gettext gettext
gmp
hash hash
iconv iconv
igbinary igbinary
imape
ioncub
intl
json json
ldap
libxml libxml
mbstring
memcache memcache
memcached memcached
mongodb mongodb
msgpack msgpack
mysqli
mysqlnd
odbc
openssl openssl
pcntl pcntl
pcov
pcre pcre
oci8
PDO PDO
pdo_dblib
PDO_Firebird
PDO_OCI
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar Phar
posix posix
pspell
readline readline
redis redis
Reflection Reflection
session session
shmop shmop
SimpleXML
snmp
soap
sockets sockets
sodium sodium
SPL SPL
sqlite3
standard standard
sysvmsg sysvmsg
sysvsem sysvsem
sysvshm sysvshm
tidy
tokenizer tokenizer
xdebug xdebug
xml
xmlreader
xmlrpc
xmlwriter
xsl
yaml yaml
Zend OPcache Zend OPcache
zip
zlib zlib
zmq zmq
phalcon3 phalcon3

View File

@@ -6,8 +6,8 @@ Core
ctype ctype
curl curl
date date
dba
dom dom
enchant
exif exif
FFI FFI
fileinfo fileinfo
@@ -18,22 +18,30 @@ gettext
gmp gmp
hash hash
iconv iconv
ioncube
intl intl
json json
ldap
libxml libxml
mbstring mbstring
mysqli mysqli
mysqlnd mysqlnd
odbc
openssl openssl
pcntl pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql pdo_mysql
PDO_ODBC
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite
pgsql pgsql
Phar Phar
phpdbg_webhelper
posix posix
pspell pspell
readline readline
@@ -43,6 +51,7 @@ shmop
SimpleXML SimpleXML
soap soap
sockets sockets
sodium
SPL SPL
sqlite3 sqlite3
standard standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm sysvshm
tidy tidy
tokenizer tokenizer
xdebug
xml xml
xmlreader xmlreader
xmlrpc
xmlwriter xmlwriter
xsl xsl
Zend OPcache Zend OPcache

View File

@@ -0,0 +1,77 @@
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
ioncube
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
odbc
openssl
pcntl
pcov
pcre
PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar
phpdbg_webhelper
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
phalcon3
phalcon4
blackfire
[Zend Modules]
Zend OPcache
Xdebug

View File

@@ -5,6 +5,7 @@ bcmath
bz2 bz2
Core Core
ctype ctype
cubrid
curl curl
date date
dom dom
@@ -16,6 +17,7 @@ ftp
gd gd
hash hash
iconv iconv
ioncube
intl intl
json json
libxml libxml
@@ -30,6 +32,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_sqlite pdo_sqlite
Phar Phar

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -33,6 +35,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -20,6 +21,7 @@ gettext
hash hash
iconv iconv
imagick imagick
ioncube
intl intl
json json
libxml libxml
@@ -33,6 +35,8 @@ openssl
pcntl pcntl
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_mysql pdo_mysql
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite

View File

@@ -7,6 +7,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -25,6 +26,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -47,6 +49,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -42,6 +44,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -42,6 +44,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ iconv
igbinary igbinary
imap imap
interbase interbase
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,6 +6,7 @@ bz2
calendar calendar
Core Core
ctype ctype
cubrid
curl curl
date date
dba dba
@@ -23,6 +24,7 @@ hash
iconv iconv
igbinary igbinary
imap imap
ioncube
intl intl
json json
ldap ldap
@@ -41,6 +43,8 @@ pcre
PDO PDO
pdo_dblib pdo_dblib
PDO_Firebird PDO_Firebird
oci8
PDO_OCI
pdo_mysql pdo_mysql
PDO_ODBC PDO_ODBC
pdo_pgsql pdo_pgsql

View File

@@ -6,8 +6,8 @@ Core
ctype ctype
curl curl
date date
dba
dom dom
enchant
exif exif
FFI FFI
fileinfo fileinfo
@@ -18,22 +18,30 @@ gettext
gmp gmp
hash hash
iconv iconv
ioncube
intl intl
json json
ldap
libxml libxml
mbstring mbstring
mysqli mysqli
mysqlnd mysqlnd
odbc
openssl openssl
pcntl pcntl
pcov pcov
pcre pcre
PDO PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql pdo_mysql
PDO_ODBC
pdo_pgsql pdo_pgsql
pdo_sqlite pdo_sqlite
pgsql pgsql
Phar Phar
phpdbg_webhelper
posix posix
pspell pspell
readline readline
@@ -43,6 +51,7 @@ shmop
SimpleXML SimpleXML
soap soap
sockets sockets
sodium
SPL SPL
sqlite3 sqlite3
standard standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm sysvshm
tidy tidy
tokenizer tokenizer
xdebug
xml xml
xmlreader xmlreader
xmlrpc
xmlwriter xmlwriter
xsl xsl
Zend OPcache Zend OPcache
@@ -66,4 +75,3 @@ blackfire
[Zend Modules] [Zend Modules]
Zend OPcache Zend OPcache
Xdebug Xdebug

View File

@@ -0,0 +1,77 @@
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
ioncube
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
odbc
openssl
pcntl
pcov
pcre
PDO
oci8
PDO_OCI
pdo_dblib
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
Phar
phpdbg_webhelper
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
phalcon3
phalcon4
blackfire
[Zend Modules]
Zend OPcache
Xdebug

View File

@@ -1,6 +1,21 @@
import * as fs from 'fs'; import * as fs from 'fs';
import * as core from '@actions/core'; import * as core from '@actions/core';
/**
* Function to read environment variable and return a string value.
*
* @param property
*/
export async function readEnv(property: string): Promise<string> {
const value = process.env[property];
switch (value) {
case undefined:
return '';
default:
return value;
}
}
/** /**
* Function to get inputs from both with and env annotations. * Function to get inputs from both with and env annotations.
* *
@@ -11,13 +26,36 @@ export async function getInput(
name: string, name: string,
mandatory: boolean mandatory: boolean
): Promise<string> { ): Promise<string> {
const input = process.env[name]; const input = core.getInput(name);
switch (input) { const env_input = await readEnv(name);
case '': switch (true) {
case undefined: case input != '':
return core.getInput(name, {required: mandatory});
default:
return input; return input;
case input == '' && env_input != '':
return env_input;
case input == '' && env_input == '' && mandatory:
throw new Error(`Input required and not supplied: ${name}`);
default:
return '';
}
}
/**
* Function to parse PHP version.
*
* @param version
*/
export async function parseVersion(version: string): Promise<string> {
switch (version) {
case 'latest':
return '7.4';
default:
switch (true) {
case version.length > 1:
return version.slice(0, 3);
default:
return version + '.0';
}
} }
} }