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
github: shivammathur
open_collective: setup-php
tidelift: "npm/setup-php"
community_bridge: setup-php
patreon: 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)
- [Inputs](#inputs)
- [Workflow](#workflow)
- [Thread Safe Setup](#thread-safe-setup)
- [License](#scroll-license)
- [Contributions](#1-contributions)
- [Support this project](#sparkling_heart-support-this-project)
- [Dependencies](#bookmark-dependencies)
- [Support This Project](#sparkling_heart-support-this-project)
- [Dependencies](#package-dependencies)
## :tada: PHP Support
@@ -48,6 +49,8 @@ Cache PHP extensions in [GitHub Actions](https://github.com/features/actions "Gi
## :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
#### `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.
### Workflow
> Cache extensions in a PHP workflow
```yaml
@@ -111,6 +115,19 @@ jobs:
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
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").
## :sparkling_heart: Support this project
## :sparkling_heart: Support This Project
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 with the community.
- If you blog, write about your experience of using this action.
- 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")
- Please star the project and share it. If you blog, please share your experience of using this action.
- 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 use this action at your company, please [reach out](mailto:contact@setup-php.com) to sponsor the project.
## :bookmark: Dependencies
## :package: 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', () => {
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 () => {
process.env['test'] = 'cache-extensions';
process.env['undefined'] = '';
expect(await utils.getInput('test', false)).toBe('cache-extensions');
expect(await utils.getInput('undefined', false)).toBe('');
process.env['test'] = 'setup-php';
expect(await utils.getInput('test', false)).toBe('setup-php');
expect(await utils.getInput('cache-extensions', false)).toBe(
'cache-extensions'
);
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 () => {

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:
/***/ (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:
/***/ (function(module) {
@@ -987,13 +1049,28 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
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);
return result;
};
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));
/**
* 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.
*
@@ -1001,16 +1078,39 @@ const core = __importStar(__webpack_require__(470));
* @param mandatory
*/
async function getInput(name, mandatory) {
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, { required: mandatory });
default:
const input = core.getInput(name);
const env_input = await readEnv(name);
switch (true) {
case 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;
/**
* 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
*
@@ -1050,6 +1150,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
const os = __importStar(__webpack_require__(87));
const utils_1 = __webpack_require__(82);
/**
* Commands
*
@@ -1103,28 +1204,14 @@ class Command {
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) {
return toCommandValue(s)
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A');
}
function escapeProperty(s) {
return toCommandValue(s)
return utils_1.toCommandValue(s)
.replace(/%/g, '%25')
.replace(/\r/g, '%0D')
.replace(/\n/g, '%0A')
@@ -1158,6 +1245,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
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 path = __importStar(__webpack_require__(622));
/**
@@ -1184,9 +1273,17 @@ var ExitCode;
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function exportVariable(name, val) {
const convertedVal = command_1.toCommandValue(val);
const convertedVal = utils_1.toCommandValue(val);
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;
/**
@@ -1202,7 +1299,13 @@ exports.setSecret = setSecret;
* @param 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']}`;
}
exports.addPath = addPath;
@@ -1607,7 +1710,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
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);
return result;
};
@@ -1622,8 +1725,7 @@ const utils = __importStar(__webpack_require__(163));
*/
async function run() {
try {
let version = await utils.getInput('php-version', true);
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const version = await utils.parseVersion(await utils.getInput('php-version', true));
const extensions = await utils.filterExtensions(await utils.getInput('extensions', true));
const key = await utils.getInput('key', true);
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",
"version": "1.1.1",
"version": "1.3.0",
"private": false,
"description": "Cache extensions in GitHub Actions",
"main": "dist/index.js",
@@ -24,26 +24,26 @@
"author": "shivammathur",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.2.4",
"@actions/core": "^1.2.6",
"@actions/exec": "^1.0.4"
},
"devDependencies": {
"@types/jest": "^26.0.5",
"@types/node": "^14.0.23",
"@typescript-eslint/eslint-plugin": "^3.6.1",
"@typescript-eslint/parser": "^3.6.1",
"@types/jest": "^26.0.14",
"@types/node": "^14.11.8",
"@typescript-eslint/eslint-plugin": "^4.4.1",
"@typescript-eslint/parser": "^4.4.1",
"@zeit/ncc": "^0.22.3",
"eslint": "^7.4.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jest": "^23.18.0",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.12.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.1.0",
"eslint-plugin-prettier": "^3.1.4",
"husky": "^4.2.5",
"jest": "^26.1.0",
"jest-circus": "^26.1.0",
"prettier": "^2.0.5",
"ts-jest": "^26.1.3",
"typescript": "^3.9.7"
"husky": "^4.3.0",
"jest": "^26.5.3",
"jest-circus": "^26.5.3",
"prettier": "^2.1.2",
"ts-jest": "^26.4.1",
"typescript": "^4.0.3"
},
"husky": {
"skipCI": true,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,8 +6,8 @@ Core
ctype
curl
date
dba
dom
enchant
exif
FFI
fileinfo
@@ -18,22 +18,30 @@ 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
@@ -43,6 +51,7 @@ shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
@@ -66,4 +75,3 @@ blackfire
[Zend Modules]
Zend OPcache
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
Core
ctype
cubrid
curl
date
dom
@@ -16,6 +17,7 @@ ftp
gd
hash
iconv
ioncube
intl
json
libxml
@@ -28,6 +30,8 @@ openssl
pcntl
pcre
PDO
oci8
PDO_OCI
pdo_mysql
pdo_sqlite
Phar

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,8 +6,8 @@ Core
ctype
curl
date
dba
dom
enchant
exif
FFI
fileinfo
@@ -18,22 +18,30 @@ 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
@@ -43,6 +51,7 @@ shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
xsl
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
Core
ctype
cubrid
curl
date
dom
@@ -16,6 +17,7 @@ ftp
gd
hash
iconv
ioncube
intl
json
libxml
@@ -30,6 +32,8 @@ openssl
pcntl
pcre
PDO
oci8
PDO_OCI
pdo_mysql
pdo_sqlite
Phar

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,8 +6,8 @@ Core
ctype
curl
date
dba
dom
enchant
exif
FFI
fileinfo
@@ -18,22 +18,30 @@ 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
@@ -43,6 +51,7 @@ shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
@@ -51,9 +60,9 @@ sysvsem
sysvshm
tidy
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
@@ -66,4 +75,3 @@ blackfire
[Zend Modules]
Zend OPcache
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 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.
*
@@ -11,13 +26,36 @@ export async function getInput(
name: string,
mandatory: boolean
): Promise<string> {
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, {required: mandatory});
default:
const input = core.getInput(name);
const env_input = await readEnv(name);
switch (true) {
case 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';
}
}
}