setup-php 2.13.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +990 -922
- package/lib/config.d.ts +3 -0
- package/lib/config.js +71 -71
- package/lib/config.js.map +1 -1
- package/lib/coverage.d.ts +5 -0
- package/lib/coverage.js +97 -87
- package/lib/coverage.js.map +1 -1
- package/lib/extensions.d.ts +4 -0
- package/lib/extensions.js +214 -200
- package/lib/extensions.js.map +1 -1
- package/lib/fetch.d.ts +1 -0
- package/lib/fetch.js +63 -0
- package/lib/fetch.js.map +1 -0
- package/lib/install.d.ts +2 -0
- package/lib/install.js +75 -81
- package/lib/install.js.map +1 -1
- package/lib/tools.d.ts +23 -0
- package/lib/tools.js +367 -386
- package/lib/tools.js.map +1 -1
- package/lib/utils.d.ts +21 -0
- package/lib/utils.js +261 -291
- package/lib/utils.js.map +1 -1
- package/package.json +67 -56
- package/src/config.ts +82 -82
- package/src/configs/brew_extensions +31 -0
- package/src/configs/composer.env +2 -0
- package/src/configs/ini/jit.ini +3 -0
- package/src/configs/ini/php.ini +2 -0
- package/src/configs/ini/xdebug.ini +1 -0
- package/src/configs/os_releases.csv +19 -17
- package/src/configs/php-versions.json +6 -5
- package/src/configs/php_packages +12 -0
- package/src/configs/{php.json → pm/php.json} +29 -29
- package/src/configs/{phpunit.json → pm/phpunit.json} +24 -24
- package/src/configs/tools.json +278 -235
- package/src/configs/tools_schema.json +125 -114
- package/src/coverage.ts +144 -142
- package/src/extensions.ts +367 -349
- package/src/fetch.ts +54 -0
- package/src/install.ts +66 -82
- package/src/scripts/darwin.sh +285 -249
- package/src/scripts/extensions/add_extensions.ps1 +194 -0
- package/src/scripts/extensions/add_extensions.sh +184 -0
- package/src/scripts/{ext → extensions}/blackfire.ps1 +32 -32
- package/src/scripts/{ext → extensions}/blackfire.sh +22 -21
- package/src/scripts/{ext → extensions}/couchbase.sh +43 -43
- package/src/scripts/{ext → extensions}/cubrid.sh +60 -60
- package/src/scripts/extensions/extension_map.php +132 -0
- package/src/scripts/{ext → extensions}/firebird.ps1 +19 -19
- package/src/scripts/{ext → extensions}/firebird.sh +39 -35
- package/src/scripts/{ext → extensions}/gearman.sh +22 -22
- package/src/scripts/{ext → extensions}/geos.sh +17 -17
- package/src/scripts/{ext → extensions}/http.ps1 +54 -54
- package/src/scripts/{ext → extensions}/http.sh +109 -120
- package/src/scripts/{ext → extensions}/intl.sh +23 -23
- package/src/scripts/{ext → extensions}/ioncube.ps1 +33 -32
- package/src/scripts/{ext → extensions}/ioncube.sh +21 -19
- package/src/scripts/{ext → extensions}/oci.ps1 +85 -60
- package/src/scripts/{ext → extensions}/oci.sh +65 -63
- package/src/scripts/{ext → extensions}/patches/firebird.sh +11 -11
- package/src/scripts/{ext → extensions}/patches/geos.sh +7 -7
- package/src/scripts/{ext → extensions}/patches/http.sh +11 -11
- package/src/scripts/{ext → extensions}/patches/pdo_oci.sh +6 -6
- package/src/scripts/{ext → extensions}/patches/phpize.sh +26 -26
- package/src/scripts/{ext → extensions}/patches/protobuf.sh +4 -4
- package/src/scripts/{ext → extensions}/phalcon.ps1 +54 -54
- package/src/scripts/{ext → extensions}/phalcon.sh +58 -58
- package/src/scripts/{ext → extensions}/source.sh +145 -144
- package/src/scripts/extensions/sqlsrv.sh +15 -0
- package/src/scripts/linux.sh +269 -256
- package/src/scripts/tools/add_tools.ps1 +239 -26
- package/src/scripts/tools/add_tools.sh +175 -20
- package/src/scripts/tools/blackfire.ps1 +19 -19
- package/src/scripts/tools/blackfire.sh +40 -39
- package/src/scripts/tools/grpc_php_plugin.ps1 +21 -21
- package/src/scripts/tools/grpc_php_plugin.sh +58 -58
- package/src/scripts/tools/ppa.sh +192 -151
- package/src/scripts/tools/protoc.ps1 +38 -38
- package/src/scripts/tools/protoc.sh +28 -28
- package/src/scripts/tools/symfony.ps1 +14 -0
- package/src/scripts/tools/symfony.sh +13 -0
- package/src/scripts/unix.sh +186 -0
- package/src/scripts/win32.ps1 +352 -494
- package/src/tools.ts +512 -538
- package/src/utils.ts +415 -500
- package/.eslintrc.json +0 -16
- package/.github/CODE_OF_CONDUCT.md +0 -76
- package/.github/CONTRIBUTING.md +0 -70
- package/.github/FUNDING.yml +0 -7
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -42
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -37
- package/.github/SECURITY.md +0 -29
- package/.github/workflows/docs.yml +0 -77
- package/.github/workflows/node-workflow.yml +0 -51
- package/.github/workflows/workflow.yml +0 -78
- package/.idea/workspace.xml +0 -113
- package/.prettierrc.json +0 -12
- package/__tests__/config.test.ts +0 -52
- package/__tests__/coverage.test.ts +0 -110
- package/__tests__/extensions.test.ts +0 -263
- package/__tests__/install.test.ts +0 -175
- package/__tests__/tools.test.ts +0 -524
- package/__tests__/utils.test.ts +0 -307
- package/action.yml +0 -29
- package/dist/index.js +0 -3051
- package/examples/bedrock.yml +0 -32
- package/examples/blackfire-player.yml +0 -31
- package/examples/blackfire.yml +0 -31
- package/examples/cakephp-mysql.yml +0 -114
- package/examples/cakephp-postgres.yml +0 -112
- package/examples/cakephp.yml +0 -92
- package/examples/codeigniter.yml +0 -34
- package/examples/laravel-mysql.yml +0 -74
- package/examples/laravel-postgres.yml +0 -74
- package/examples/laravel.yml +0 -42
- package/examples/lumen-mysql.yml +0 -74
- package/examples/lumen-postgres.yml +0 -74
- package/examples/lumen.yml +0 -38
- package/examples/phalcon-mysql.yml +0 -74
- package/examples/phalcon-postgres.yml +0 -73
- package/examples/sage.yml +0 -57
- package/examples/slim-framework.yml +0 -34
- package/examples/symfony-mysql.yml +0 -57
- package/examples/symfony-postgres.yml +0 -55
- package/examples/symfony.yml +0 -39
- package/examples/yii2-mysql.yml +0 -73
- package/examples/yii2-postgres.yml +0 -71
- package/examples/zend-framework.yml +0 -36
- package/jest.config.js +0 -12
- package/lib/sapi.js +0 -64
- package/src/scripts/common.sh +0 -314
- package/tsconfig.json +0 -18
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# GitHub Action for Yii Framework with PostgreSQL
|
|
2
|
-
name: Testing Yii2 with PostgreSQL
|
|
3
|
-
on: [push, pull_request]
|
|
4
|
-
jobs:
|
|
5
|
-
yii:
|
|
6
|
-
name: Yii2 (PHP ${{ matrix.php-versions }})
|
|
7
|
-
runs-on: ubuntu-latest
|
|
8
|
-
env:
|
|
9
|
-
DB_USERNAME: postgres
|
|
10
|
-
DB_PASSWORD: postgres
|
|
11
|
-
TEST_DB_USERNAME: postgres
|
|
12
|
-
TEST_DB_PASSWORD: postgres
|
|
13
|
-
DB_CHARSET: utf8
|
|
14
|
-
services:
|
|
15
|
-
postgres:
|
|
16
|
-
image: postgres:10.8
|
|
17
|
-
env:
|
|
18
|
-
POSTGRES_USER: postgres
|
|
19
|
-
POSTGRES_PASSWORD: postgres
|
|
20
|
-
POSTGRES_DB: postgres
|
|
21
|
-
ports:
|
|
22
|
-
- 5432/tcp
|
|
23
|
-
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
|
24
|
-
strategy:
|
|
25
|
-
fail-fast: false
|
|
26
|
-
matrix:
|
|
27
|
-
php-versions: ['7.2', '7.3', '7.4']
|
|
28
|
-
steps:
|
|
29
|
-
- name: Checkout
|
|
30
|
-
uses: actions/checkout@v2
|
|
31
|
-
- name: Set Node.js 10.x
|
|
32
|
-
uses: actions/setup-node@v1
|
|
33
|
-
with:
|
|
34
|
-
node-version: 10.x
|
|
35
|
-
- name: Setup PHP, with composer and extensions
|
|
36
|
-
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
|
37
|
-
with:
|
|
38
|
-
php-version: ${{ matrix.php-versions }}
|
|
39
|
-
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
|
40
|
-
coverage: xdebug #optional
|
|
41
|
-
- name: Get composer cache directory
|
|
42
|
-
id: composer-cache
|
|
43
|
-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
44
|
-
- name: Cache composer dependencies
|
|
45
|
-
uses: actions/cache@v2
|
|
46
|
-
with:
|
|
47
|
-
path: ${{ steps.composer-cache.outputs.dir }}
|
|
48
|
-
# Use composer.json for key, if composer.lock is not committed.
|
|
49
|
-
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
|
50
|
-
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
|
51
|
-
restore-keys: ${{ runner.os }}-composer-
|
|
52
|
-
- name: Install Composer dependencies
|
|
53
|
-
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
|
54
|
-
- name: Prepare the application
|
|
55
|
-
run: |
|
|
56
|
-
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
|
57
|
-
php console/yii app/setup
|
|
58
|
-
npm install --development
|
|
59
|
-
npm run build
|
|
60
|
-
env:
|
|
61
|
-
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
|
62
|
-
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
|
63
|
-
- name: Run Tests
|
|
64
|
-
run: |
|
|
65
|
-
vendor/bin/codecept build
|
|
66
|
-
php tests/bin/yii app/setup --interactive=0
|
|
67
|
-
nohup php -S localhost:8080 > yii.log 2>&1 &
|
|
68
|
-
vendor/bin/codecept run
|
|
69
|
-
env:
|
|
70
|
-
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
|
71
|
-
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# GitHub Action for Zend Framework
|
|
2
|
-
name: Testing Zend Framework
|
|
3
|
-
on: [push, pull_request]
|
|
4
|
-
jobs:
|
|
5
|
-
build:
|
|
6
|
-
strategy:
|
|
7
|
-
matrix:
|
|
8
|
-
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
|
9
|
-
php-versions: ['7.2', '7.3', '7.4']
|
|
10
|
-
runs-on: ${{ matrix.operating-system }}
|
|
11
|
-
steps:
|
|
12
|
-
- name: Checkout
|
|
13
|
-
uses: actions/checkout@v2
|
|
14
|
-
- name: Setup PHP, with composer and extensions
|
|
15
|
-
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
|
16
|
-
with:
|
|
17
|
-
php-version: ${{ matrix.php-versions }}
|
|
18
|
-
extensions: mbstring, bcmath, curl, intl
|
|
19
|
-
coverage: xdebug #optional
|
|
20
|
-
- name: Get composer cache directory
|
|
21
|
-
id: composer-cache
|
|
22
|
-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
|
23
|
-
- name: Cache composer dependencies
|
|
24
|
-
uses: actions/cache@v2
|
|
25
|
-
with:
|
|
26
|
-
path: ${{ steps.composer-cache.outputs.dir }}
|
|
27
|
-
# Use composer.json for key, if composer.lock is not committed.
|
|
28
|
-
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
|
29
|
-
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
|
30
|
-
restore-keys: ${{ runner.os }}-composer-
|
|
31
|
-
- name: Install dependencies
|
|
32
|
-
run: |
|
|
33
|
-
composer install --no-progress --prefer-dist --optimize-autoloader
|
|
34
|
-
composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test
|
|
35
|
-
- name: Test with phpunit
|
|
36
|
-
run: vendor/bin/phpunit --coverage-text
|
package/jest.config.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
clearMocks: true,
|
|
3
|
-
moduleFileExtensions: ['js', 'ts'],
|
|
4
|
-
testEnvironment: 'node',
|
|
5
|
-
testMatch: ['**/*.test.ts'],
|
|
6
|
-
testRunner: 'jest-circus/runner',
|
|
7
|
-
transform: {
|
|
8
|
-
'^.+\\.ts$': 'ts-jest'
|
|
9
|
-
},
|
|
10
|
-
verbose: true,
|
|
11
|
-
collectCoverage: true
|
|
12
|
-
};
|
package/lib/sapi.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.addSAPI = exports.getSapiList = void 0;
|
|
23
|
-
const utils = __importStar(require("./utils"));
|
|
24
|
-
async function getSapiList(sapi_csv) {
|
|
25
|
-
const sapi_list = await utils.packageArray(sapi_csv);
|
|
26
|
-
const servers = sapi_list.filter(sapi => /.*:.*/.test(sapi));
|
|
27
|
-
return [servers[servers.length - 1]].concat(sapi_list.filter(sapi => /.*[^:].*/.test(sapi)));
|
|
28
|
-
}
|
|
29
|
-
exports.getSapiList = getSapiList;
|
|
30
|
-
/**
|
|
31
|
-
* Function to set sapi
|
|
32
|
-
*
|
|
33
|
-
* @param sapi_csv
|
|
34
|
-
* @param os_version
|
|
35
|
-
*/
|
|
36
|
-
async function addSAPI(sapi_csv, os_version) {
|
|
37
|
-
let script = '\n' + (await utils.stepLog('Setup SAPI', os_version));
|
|
38
|
-
let sapi_list;
|
|
39
|
-
switch (true) {
|
|
40
|
-
case sapi_csv.split(':').length - 1 > 1:
|
|
41
|
-
sapi_list = await getSapiList(sapi_csv);
|
|
42
|
-
script +=
|
|
43
|
-
'\n' +
|
|
44
|
-
utils.log('Multiple SAPI with web servers specified, choosing the last one ' +
|
|
45
|
-
sapi_list[0], os_version, 'warning');
|
|
46
|
-
break;
|
|
47
|
-
default:
|
|
48
|
-
sapi_list = await utils.packageArray(sapi_csv);
|
|
49
|
-
}
|
|
50
|
-
await utils.asyncForEach(sapi_list, async function (sapi) {
|
|
51
|
-
sapi = sapi.toLowerCase();
|
|
52
|
-
switch (os_version) {
|
|
53
|
-
case 'linux':
|
|
54
|
-
case 'darwin':
|
|
55
|
-
script += '\nadd_sapi ' + sapi;
|
|
56
|
-
break;
|
|
57
|
-
case 'win32':
|
|
58
|
-
script += '\nAdd-Sapi ' + sapi;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return script;
|
|
63
|
-
}
|
|
64
|
-
exports.addSAPI = addSAPI;
|
package/src/scripts/common.sh
DELETED
|
@@ -1,314 +0,0 @@
|
|
|
1
|
-
# Variables
|
|
2
|
-
export tick="✓"
|
|
3
|
-
export cross="✗"
|
|
4
|
-
export curl_opts=(-sL)
|
|
5
|
-
export old_versions="5.[3-5]"
|
|
6
|
-
export jit_versions="8.[0-9]"
|
|
7
|
-
export nightly_versions="8.[1-9]"
|
|
8
|
-
export xdebug3_versions="7.[2-4]|8.[0-9]"
|
|
9
|
-
export tool_path_dir="/usr/local/bin"
|
|
10
|
-
export composer_home="$HOME/.composer"
|
|
11
|
-
export composer_bin="$composer_home/vendor/bin"
|
|
12
|
-
export composer_json="$composer_home/composer.json"
|
|
13
|
-
export composer_lock="$composer_home/composer.lock"
|
|
14
|
-
export latest="releases/latest/download"
|
|
15
|
-
export github="https://github.com/shivammathur"
|
|
16
|
-
export jsdeliver="https://cdn.jsdelivr.net/gh/shivammathur"
|
|
17
|
-
|
|
18
|
-
# Function to log start of a operation.
|
|
19
|
-
step_log() {
|
|
20
|
-
message=$1
|
|
21
|
-
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
# Function to log result of a operation.
|
|
25
|
-
add_log() {
|
|
26
|
-
mark=$1
|
|
27
|
-
subject=$2
|
|
28
|
-
message=$3
|
|
29
|
-
if [ "$mark" = "$tick" ]; then
|
|
30
|
-
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
31
|
-
else
|
|
32
|
-
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
33
|
-
[ "$fail_fast" = "true" ] && exit 1
|
|
34
|
-
fi
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
# Function to log result of installing extension.
|
|
38
|
-
add_extension_log() {
|
|
39
|
-
(
|
|
40
|
-
check_extension "$(echo "$1" | cut -d '-' -f 1)" && add_log "$tick" "$1" "$2"
|
|
41
|
-
) || add_log "$cross" "$1" "Could not install $1 on PHP ${semver:?}"
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Function to read env inputs.
|
|
45
|
-
read_env() {
|
|
46
|
-
[[ -z "${update}" ]] && update='false' && UPDATE='false' || update="${update}"
|
|
47
|
-
[ "$update" = false ] && [[ -n ${UPDATE} ]] && update="${UPDATE}"
|
|
48
|
-
[[ -z "${runner}" ]] && runner='github' && RUNNER='github' || runner="${runner}"
|
|
49
|
-
[ "$runner" = false ] && [[ -n ${RUNNER} ]] && runner="${RUNNER}"
|
|
50
|
-
[[ -z "${fail_fast}" ]] && fail_fast='false' || fail_fast="${fail_fast}"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# Function to download a file using cURL.
|
|
54
|
-
# mode: -s pipe to stdout, -v save file and return status code
|
|
55
|
-
# execute: -e save file as executable
|
|
56
|
-
get() {
|
|
57
|
-
mode=$1
|
|
58
|
-
execute=$2
|
|
59
|
-
file_path=$3
|
|
60
|
-
shift 3
|
|
61
|
-
links=("$@")
|
|
62
|
-
if [ "$mode" = "-s" ]; then
|
|
63
|
-
sudo curl "${curl_opts[@]}" "${links[0]}"
|
|
64
|
-
else
|
|
65
|
-
for link in "${links[@]}"; do
|
|
66
|
-
status_code=$(sudo curl -w "%{http_code}" -o "$file_path" "${curl_opts[@]}" "$link")
|
|
67
|
-
[ "$status_code" = "200" ] && break
|
|
68
|
-
done
|
|
69
|
-
[ "$execute" = "-e" ] && sudo chmod a+x "$file_path"
|
|
70
|
-
[ "$mode" = "-v" ] && echo "$status_code"
|
|
71
|
-
fi
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
# Function to download and run scripts from GitHub releases with jsdeliver fallback.
|
|
75
|
-
run_script() {
|
|
76
|
-
repo=$1
|
|
77
|
-
shift
|
|
78
|
-
args=("$@")
|
|
79
|
-
get -q -e /tmp/install.sh "$github/$repo/$latest/install.sh" "$jsdeliver/$1@main/scripts/install.sh"
|
|
80
|
-
bash /tmp/install.sh "${args[@]}"
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
# Function to install required packages on self-hosted runners.
|
|
84
|
-
self_hosted_setup() {
|
|
85
|
-
if [ "$runner" = "self-hosted" ]; then
|
|
86
|
-
if [[ "${version:?}" =~ $old_versions ]]; then
|
|
87
|
-
add_log "$cross" "PHP" "PHP $version is not supported on self-hosted runner"
|
|
88
|
-
exit 1
|
|
89
|
-
else
|
|
90
|
-
self_hosted_helper >/dev/null 2>&1
|
|
91
|
-
fi
|
|
92
|
-
fi
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
# Function to test if extension is loaded.
|
|
96
|
-
check_extension() {
|
|
97
|
-
extension=$1
|
|
98
|
-
if [ "$extension" != "mysql" ]; then
|
|
99
|
-
php -m | grep -i -q -w "$extension"
|
|
100
|
-
else
|
|
101
|
-
php -m | grep -i -q "$extension"
|
|
102
|
-
fi
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
# Function to enable cached extensions.
|
|
106
|
-
enable_cache_extension() {
|
|
107
|
-
deps=()
|
|
108
|
-
for ext in /tmp/extcache/"$1"/*; do
|
|
109
|
-
deps+=("$(basename "$ext")")
|
|
110
|
-
done
|
|
111
|
-
if [ "x${deps[*]}" = "x" ]; then
|
|
112
|
-
sudo rm -rf /tmp/extcache/"$1"
|
|
113
|
-
enable_extension "$1" "$2"
|
|
114
|
-
else
|
|
115
|
-
deps+=("$1")
|
|
116
|
-
if php "${deps[@]/#/-d ${2}=}" -m 2>/dev/null | grep -i -q "$1"; then
|
|
117
|
-
for ext in "${deps[@]}"; do
|
|
118
|
-
sudo rm -rf /tmp/extcache/"$ext"
|
|
119
|
-
enable_extension "$ext" "$2"
|
|
120
|
-
done
|
|
121
|
-
fi
|
|
122
|
-
fi
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
# Function to enable existing extensions.
|
|
126
|
-
enable_extension() {
|
|
127
|
-
modules_dir="/var/lib/php/modules/$version"
|
|
128
|
-
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
|
129
|
-
if [ -d /tmp/extcache/"$1" ]; then
|
|
130
|
-
enable_cache_extension "$1" "$2"
|
|
131
|
-
elif ! check_extension "$1" && [ -e "${ext_dir:?}/$1.so" ]; then
|
|
132
|
-
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
133
|
-
fi
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
# Function to configure PHP
|
|
137
|
-
configure_php() {
|
|
138
|
-
(
|
|
139
|
-
echo -e "date.timezone=UTC\nmemory_limit=-1"
|
|
140
|
-
[[ "$version" =~ $jit_versions ]] && echo -e "opcache.enable=1\nopcache.jit_buffer_size=256M\nopcache.jit=1235"
|
|
141
|
-
[[ "$version" =~ $xdebug3_versions ]] && echo -e "xdebug.mode=coverage"
|
|
142
|
-
) | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
# Function to configure PECL.
|
|
146
|
-
configure_pecl() {
|
|
147
|
-
if ! [ -e /tmp/pecl_config ]; then
|
|
148
|
-
for script in pear pecl; do
|
|
149
|
-
sudo "$script" config-set php_ini "${pecl_file:-${ini_file[@]}}"
|
|
150
|
-
sudo "$script" channel-update "$script".php.net
|
|
151
|
-
done
|
|
152
|
-
echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
|
|
153
|
-
fi
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
# Function to get the PECL version of an extension.
|
|
157
|
-
get_pecl_version() {
|
|
158
|
-
extension=$1
|
|
159
|
-
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
|
160
|
-
pecl_rest='https://pecl.php.net/rest/r/'
|
|
161
|
-
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
|
162
|
-
pecl_version=$(echo "$response" | grep -m 1 -Eio "([0-9]+\.[0-9]+\.[0-9]+${stability}[0-9]+)")
|
|
163
|
-
if [ ! "$pecl_version" ]; then
|
|
164
|
-
pecl_version=$(echo "$response" | grep -m 1 -Eo "([0-9]+\.[0-9]+\.[0-9]+)")
|
|
165
|
-
fi
|
|
166
|
-
echo "$pecl_version"
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
# Function to install PECL extensions and accept default options
|
|
170
|
-
pecl_install() {
|
|
171
|
-
local extension=$1
|
|
172
|
-
add_pecl >/dev/null 2>&1
|
|
173
|
-
yes '' 2>/dev/null | sudo pecl install -f "$extension" >/dev/null 2>&1
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
# Function to install a specific version of PECL extension.
|
|
177
|
-
add_pecl_extension() {
|
|
178
|
-
extension=$1
|
|
179
|
-
pecl_version=$2
|
|
180
|
-
prefix=$3
|
|
181
|
-
enable_extension "$extension" "$prefix"
|
|
182
|
-
if [[ $pecl_version =~ .*(alpha|beta|rc|snapshot|preview).* ]]; then
|
|
183
|
-
pecl_version=$(get_pecl_version "$extension" "$pecl_version")
|
|
184
|
-
fi
|
|
185
|
-
ext_version=$(php -r "echo phpversion('$extension');")
|
|
186
|
-
if [ "$ext_version" = "$pecl_version" ]; then
|
|
187
|
-
add_log "${tick:?}" "$extension" "Enabled"
|
|
188
|
-
else
|
|
189
|
-
disable_extension "$extension" >/dev/null 2>&1
|
|
190
|
-
delete_extension "$extension" >/dev/null 2>&1
|
|
191
|
-
pecl_install "$extension-$pecl_version"
|
|
192
|
-
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
|
193
|
-
fi
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
# Function to setup pre-release extensions using PECL.
|
|
197
|
-
add_unstable_extension() {
|
|
198
|
-
extension=$1
|
|
199
|
-
stability=$2
|
|
200
|
-
prefix=$3
|
|
201
|
-
pecl_version=$(get_pecl_version "$extension" "$stability")
|
|
202
|
-
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
# Function to extract tool version.
|
|
206
|
-
get_tool_version() {
|
|
207
|
-
tool=$1
|
|
208
|
-
param=$2
|
|
209
|
-
alp="[a-zA-Z0-9]"
|
|
210
|
-
version_regex="[0-9]+((\.{1}$alp+)+)(\.{0})(-$alp+){0,1}"
|
|
211
|
-
if [ "$tool" = "composer" ]; then
|
|
212
|
-
if [ "$param" != "snapshot" ]; then
|
|
213
|
-
composer_version="$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")"
|
|
214
|
-
else
|
|
215
|
-
composer_version="$(grep -Ea "const\sBRANCH_ALIAS_VERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")+$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "[a-zA-z0-9]+" | tail -n 1)"
|
|
216
|
-
fi
|
|
217
|
-
echo "$composer_version" | sudo tee /tmp/composer_version
|
|
218
|
-
else
|
|
219
|
-
$tool "$param" 2>/dev/null | sed -Ee "s/[Cc]omposer(.)?$version_regex//g" | grep -Eo "$version_regex" | head -n 1
|
|
220
|
-
fi
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
# Function to configure composer
|
|
224
|
-
configure_composer() {
|
|
225
|
-
tool_path=$1
|
|
226
|
-
sudo ln -sf "$tool_path" "$tool_path.phar"
|
|
227
|
-
php -r "try {\$p=new Phar('$tool_path.phar', 0);exit(0);} catch(Exception \$e) {exit(1);}"
|
|
228
|
-
if [ $? -eq 1 ]; then
|
|
229
|
-
add_log "$cross" "composer" "Could not download composer"
|
|
230
|
-
exit 1
|
|
231
|
-
fi
|
|
232
|
-
if ! [ -d "$composer_home" ]; then
|
|
233
|
-
sudo -u "$(id -un)" -g "$(id -gn)" mkdir -p -m=00755 "$composer_home"
|
|
234
|
-
else
|
|
235
|
-
sudo chown -R "$(id -un)":"$(id -gn)" "$composer_home"
|
|
236
|
-
fi
|
|
237
|
-
if ! [ -e "$composer_json" ]; then
|
|
238
|
-
echo '{}' | tee "$composer_json" >/dev/null
|
|
239
|
-
chmod 644 "$composer_json"
|
|
240
|
-
fi
|
|
241
|
-
composer -q config -g process-timeout 0
|
|
242
|
-
echo "$composer_bin" >>"$GITHUB_PATH"
|
|
243
|
-
if [ -n "$COMPOSER_TOKEN" ]; then
|
|
244
|
-
composer -q config -g github-oauth.github.com "$COMPOSER_TOKEN"
|
|
245
|
-
fi
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
# Function to setup a remote tool.
|
|
249
|
-
add_tool() {
|
|
250
|
-
url=$1
|
|
251
|
-
tool=$2
|
|
252
|
-
ver_param=$3
|
|
253
|
-
tool_path="$tool_path_dir/$tool"
|
|
254
|
-
if ! [[ "$PATH" =~ $tool_path_dir ]]; then
|
|
255
|
-
export PATH=$PATH:"$tool_path_dir"
|
|
256
|
-
echo "export PATH=\$PATH:$tool_path_dir" | sudo tee -a "$GITHUB_ENV" >/dev/null
|
|
257
|
-
fi
|
|
258
|
-
if [ ! -e "$tool_path" ]; then
|
|
259
|
-
rm -rf "$tool_path"
|
|
260
|
-
fi
|
|
261
|
-
IFS="," read -r -a url <<<"$url"
|
|
262
|
-
status_code=$(get -v -e "$tool_path" "${url[@]}")
|
|
263
|
-
if [ "$status_code" != "200" ] && [[ "${url[0]}" =~ .*github.com.*releases.*latest.* ]]; then
|
|
264
|
-
url[0]="${url[0]//releases\/latest\/download/releases/download/$(get -s -n "" "$(echo "${url[0]}" | cut -d '/' -f '1-5')/releases" | grep -Eo -m 1 "([0-9]+\.[0-9]+\.[0-9]+)/$(echo "${url[0]}" | sed -e "s/.*\///")" | cut -d '/' -f 1)}"
|
|
265
|
-
status_code=$(get -v -e "$tool_path" "${url[0]}")
|
|
266
|
-
fi
|
|
267
|
-
if [ "$status_code" = "200" ]; then
|
|
268
|
-
add_tools_helper "$tool"
|
|
269
|
-
tool_version=$(get_tool_version "$tool" "$ver_param")
|
|
270
|
-
add_log "$tick" "$tool" "Added $tool $tool_version"
|
|
271
|
-
else
|
|
272
|
-
add_log "$cross" "$tool" "Could not setup $tool"
|
|
273
|
-
fi
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
# Function to setup a tool using composer.
|
|
277
|
-
add_composertool() {
|
|
278
|
-
tool=$1
|
|
279
|
-
release=$2
|
|
280
|
-
prefix=$3
|
|
281
|
-
if [[ "$tool" =~ prestissimo|composer-prefetcher ]]; then
|
|
282
|
-
composer_version=$(cat /tmp/composer_version)
|
|
283
|
-
if [ "$(echo "$composer_version" | cut -d'.' -f 1)" != "1" ]; then
|
|
284
|
-
echo "::warning:: Skipping $tool, as it does not support Composer $composer_version. Specify composer:v1 in tools to use $tool"
|
|
285
|
-
add_log "$cross" "$tool" "Skipped"
|
|
286
|
-
return
|
|
287
|
-
fi
|
|
288
|
-
fi
|
|
289
|
-
(
|
|
290
|
-
sudo rm -f "$composer_lock" >/dev/null 2>&1 || true
|
|
291
|
-
composer global require "$prefix$release" 2>&1 | tee /tmp/composer.log >/dev/null 2>&1
|
|
292
|
-
log=$(grep "$prefix$tool" /tmp/composer.log) &&
|
|
293
|
-
tool_version=$(get_tool_version 'echo' "$log") &&
|
|
294
|
-
add_log "$tick" "$tool" "Added $tool $tool_version"
|
|
295
|
-
) || add_log "$cross" "$tool" "Could not setup $tool"
|
|
296
|
-
add_tools_helper "$tool"
|
|
297
|
-
if [ -e "$composer_bin/composer" ]; then
|
|
298
|
-
sudo cp -p "$tool_path_dir/composer" "$composer_bin"
|
|
299
|
-
fi
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
# Function to get PHP version in semver format.
|
|
303
|
-
php_semver() {
|
|
304
|
-
php -v | grep -Eo -m 1 "[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+([0-9]+)?)?" | head -n 1
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
# Function to get the tag for a php version.
|
|
308
|
-
php_src_tag() {
|
|
309
|
-
php_src_tag='master'
|
|
310
|
-
if ! [[ ${version:?} =~ $nightly_versions ]]; then
|
|
311
|
-
php_src_tag="php-$semver"
|
|
312
|
-
fi
|
|
313
|
-
echo "$php_src_tag"
|
|
314
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"esModuleInterop": true,
|
|
4
|
-
"lib": [
|
|
5
|
-
"ES2020"
|
|
6
|
-
],
|
|
7
|
-
"module": "commonjs",
|
|
8
|
-
"moduleResolution": "node",
|
|
9
|
-
"noImplicitAny": true,
|
|
10
|
-
"outDir": "./lib",
|
|
11
|
-
"removeComments": true,
|
|
12
|
-
"rootDir": "./src",
|
|
13
|
-
"sourceMap": true,
|
|
14
|
-
"strict": true,
|
|
15
|
-
"target": "ES2019"
|
|
16
|
-
},
|
|
17
|
-
"exclude": ["__tests__", "lib", "node_modules"]
|
|
18
|
-
}
|