Compare commits

..

8 Commits
2.6.0 ... 2.5.0

Author SHA1 Message Date
983892b3c3 Merge pull request #299 from shivammathur/fix_paths
Switch to environment files. Apply GHSA-mfwh-5m23-j46w (CVE-2020-15228)
2020-10-15 13:55:51 +05:30
d07beb70e1 Switch to environment files. Apply GHSA-mfwh-5m23-j46w (CVE-2020-15228) 2020-10-15 13:55:51 +05:30
2a3920f0a8 Merge pull request #283 from shivammathur/develop
2.5.0
2020-10-15 13:55:50 +05:30
f87f989186 Bump version to 2.5.0 2020-10-15 13:55:49 +05:30
1dee067adc Update README 2020-10-15 13:55:48 +05:30
a35414e37a Fix regex in protoc.sh 2020-10-15 13:55:48 +05:30
5787967c1f Move $arch_name to tools/blackfire.ps1 2020-10-15 13:55:47 +05:30
872187355a Make sure printf is in PATH in Windows 2020-10-15 13:55:31 +05:30
30 changed files with 910 additions and 1050 deletions

View File

@ -8,7 +8,7 @@ Please note that this project is released with a [Contributor Code of Conduct](C
* Fork the project.
* Make your bug fix or feature addition.
* Add tests for it, so we don't break it in a future version unintentionally.
* Add tests for it. This is important so we don't break it in a future version unintentionally.
* If editing the scripts, create a demo integration test.
* Send a pull request to the develop branch with all the details.

View File

@ -11,7 +11,7 @@ assignees: 'shivammathur'
<!-- Please describe the bug concisely. -->
**Version**
- [ ] I have checked releases, and the bug exists in the latest patch version of `v1` or `v2`.
- [ ] I have checked releases and the bug exists in the latest patch version of `v1` or `v2`.
- [ ] `v2`
- [ ] `v1`

View File

@ -11,7 +11,7 @@ assignees: 'shivammathur'
<!-- Please describe concisely the feature you want to add. -->
**Version**
- [ ] I have checked releases, and the feature is missing in the latest patch version of `v2`.
- [ ] I have checked releases and the feature is missing in the latest patch version of `v2`.
**Underlying issue**
<!-- Please describe the issue this would solve. -->

View File

@ -5,12 +5,12 @@ labels: bug or enhancement
---
## A Pull Request should be associated with a Discussion.
## A Pull Request should be associated with an Issue.
> If you're fixing a bug, adding a new feature or improving something please provide the details in discussions,
> If you're fixing a bug, adding a new feature or improving something please provide the details in Issues,
> so that the development can be pointed in the intended direction.
Related discussion: <!-- Please link the related discussion -->
Related issue: <!-- Please link the related issue -->
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
> Thank you for your contribution.

2
.github/SECURITY.md vendored
View File

@ -7,7 +7,7 @@ The following versions of this project are supported for security updates.
| Version | Supported |
| ------- | ------------------ |
| 1.9.x | :white_check_mark: |
| 2.6.x | :white_check_mark: |
| 2.5.x | :white_check_mark: |
## Supported PHP Versions

View File

@ -8,7 +8,7 @@
<p align="center">
<a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
<a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://img.shields.io/codecov/c/github/shivammathur/setup-php?logo=codecov"></a>
<a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://codecov.io/gh/shivammathur/setup-php/branch/master/graph/badge.svg"></a>
<a href="https://github.com/shivammathur/setup-php/blob/master/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg?logo=open%20source%20initiative&logoColor=white&labelColor=555555"></a>
<a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.0-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
</p>
@ -168,7 +168,7 @@ Both `GitHub-hosted` runners and `self-hosted` runners are supported on the foll
These tools can be setup globally using the `tools` input.
`behat`, `blackfire`, `blackfire-player`, `codeception`, `composer`, `composer-normalize`, `composer-prefetcher`, `composer-require-checker`, `composer-unused`, `cs2pr`, `deployer`, `flex`, `grpc_php_plugin`, `infection`, `pecl`, `phan`, `phing`, `phinx`, `phive`, `phpcbf`, `phpcpd`, `php-config`, `php-cs-fixer`, `phpcs`, `phpize`, `phpmd`, `phpspec`, `phpstan`, `phpunit`, `prestissimo`, `protoc`, `psalm`, `symfony`, `vapor-cli`
`blackfire`, `blackfire-player`, `codeception`, `composer`, `composer-normalize`, `composer-prefetcher`, `composer-require-checker`, `composer-unused`, `cs2pr`, `deployer`, `flex`, `grpc_php_plugin`, `infection`, `pecl`, `phan`, `phing`, `phinx`, `phive`, `phpcbf`, `phpcpd`, `php-config`, `php-cs-fixer`, `phpcs`, `phpize`, `phpmd`, `phpstan`, `phpunit`, `prestissimo`, `protoc`, `psalm`, `symfony`, `vapor-cli`
```yaml
- name: Setup PHP with tools
@ -204,7 +204,6 @@ For example to setup `PHPUnit` on `PHP 7.2`.
```
**Notes**
- This is useful to set up tools which you only use in GitHub Actions, thus keeping your `composer.json` tidy.
- If you have a tool in your `composer.json`, do not setup it globally using this action as the two instances of the tool might conflict.
- Tools which cannot be setup gracefully leave an error message in the logs, the action is not interrupted.
@ -276,7 +275,6 @@ Consider disabling the coverage using this PHP action for these reasons.
- Specify the PHP version you want to setup.
- Accepts a `string`. For example `'7.4'`.
- Accepts `latest` to set up the latest stable PHP version.
- See [PHP support](#tada-php-support) for supported PHP versions.
#### `extensions` (optional)
@ -566,11 +564,9 @@ If you have a number of workflows which setup multiple tools or have many compos
### Problem Matchers
Problem matchers are `json` configurations which identify errors and warnings in your logs and surface that information prominently in the GitHub Actions UI by highlighting them and creating code annotations.
#### PHP
Setup problem matchers for your `PHP` output by adding this step after the `setup-php` step.
Setup problem matchers for your `PHP` output by adding this step after the `setup-php` step. This will scan the logs for PHP errors and warnings, and surface them prominently in the GitHub Actions UI by creating annotations and log file decorations.
```yaml
- name: Setup problem matchers for PHP
@ -579,59 +575,29 @@ Setup problem matchers for your `PHP` output by adding this step after the `setu
#### PHPUnit
Setup problem matchers for your `PHPUnit` output by adding this step after the `setup-php` step.
Setup problem matchers for your `PHPUnit` output by adding this step after the `setup-php` step. This will scan the logs for failing tests and surface that information prominently in the GitHub Actions UI by creating annotations and log file decorations.
```yaml
- name: Setup problem matchers for PHPUnit
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
```
#### PHPStan
PHPStan supports error reporting in GitHub Actions, so no problem matchers are required.
```yaml
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: phpstan
- name: Run PHPStan
run: phpstan analyse src
```
#### Psalm
Psalm supports error reporting in GitHub Actions with an output format `github`.
```yaml
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: psalm
- name: Run Psalm
run: psalm --output-format=github
```
#### Tools with checkstyle support
#### Other Tools
For tools that support `checkstyle` reporting like `phpstan`, `psalm`, `php-cs-fixer` and `phpcs` you can use `cs2pr` to annotate your code.
For examples refer to [cs2pr documentation](https://github.com/staabm/annotate-pull-request-from-checkstyle).
For examples refer to [cs2pr documentation](https://github.com/staabm/annotate-pull-request-from-checkstyle).
> Here is an example with `phpcs`.
> Here is an example with `phpstan`.
```yaml
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: cs2pr, phpcs
tools: cs2pr, phpstan
- name: Run phpcs
run: phpcs -q --report=checkstyle src | cs2pr
- name: PHPStan
run: phpstan analyse src --error-format=checkstyle | cs2pr
```
### Examples

View File

@ -70,7 +70,7 @@ describe('Extension tests', () => {
'sudo $debconf_fix apt-get install -y php7.4-sqlite3'
);
expect(linux).toContain('remove_extension intl');
expect(linux).toContain('sudo $debconf_fix apt-get install -y php7.4-ast');
expect(linux).toContain('sudo $debconf_fix apt-get install -y php-ast');
expect(linux).toContain('sudo $debconf_fix apt-get install -y php-uopz');
expect(linux).toContain('add_unstable_extension ast beta extension');
expect(linux).toContain('add_pdo_extension mysql');

View File

@ -1,11 +1,10 @@
import * as install from '../src/install';
import * as utils from '../src/utils';
/**
* Mock install.ts
*/
jest.mock('../src/install', () => ({
getScript: jest.fn().mockImplementation(
build: jest.fn().mockImplementation(
async (
filename: string,
version: string,
@ -40,18 +39,24 @@ jest.mock('../src/install', () => ({
run: jest.fn().mockImplementation(
async (): Promise<string> => {
const os_version: string = process.env['RUNNER_OS'] || '';
const version: string = await utils.parseVersion(
await utils.getInput('php-version', true)
);
const tool = await utils.scriptTool(os_version);
const filename = os_version + (await utils.scriptExtension(os_version));
return [
await install.getScript(filename, version, os_version),
tool,
filename,
version,
__dirname
].join(' ');
let version: string = process.env['php-version'] || '';
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
let script = '';
switch (os_version) {
case 'darwin':
case 'linux':
script = await install.build(os_version + '.sh', version, os_version);
script += 'bash script.sh ' + version + ' ' + __dirname;
break;
case 'win32':
script = await install.build(os_version + '.sh', version, os_version);
script += 'pwsh script.ps1 ' + version + ' ' + __dirname;
break;
default:
script += os_version + ' is not supported';
}
return script;
}
)
}));
@ -88,13 +93,13 @@ describe('Install', () => {
let script: string = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('pwsh win32.ps1 7.0 ' + __dirname);
expect(script).toContain('pwsh script.ps1 7.0 ' + __dirname);
setEnv('7.3', 'win32', '', '', '', '');
script = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '');
@ -103,7 +108,7 @@ describe('Install', () => {
expect(script).toContain('install extensions');
expect(script).toContain('edit php.ini');
expect(script).toContain('set coverage driver');
expect(script).toContain('pwsh win32.ps1 7.3 ' + __dirname);
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
});
it('Test install on linux', async () => {
@ -111,13 +116,7 @@ describe('Install', () => {
let script: string = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash linux.sh 7.3 ');
setEnv('latest', 'linux', '', '', '', '');
script = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash linux.sh 7.4 ');
expect(script).toContain('bash script.sh 7.3 ');
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit');
@ -126,7 +125,7 @@ describe('Install', () => {
expect(script).toContain('install extensions');
expect(script).toContain('edit php.ini');
expect(script).toContain('set coverage driver');
expect(script).toContain('bash linux.sh 7.3');
expect(script).toContain('bash script.sh 7.3');
expect(script).toContain('add_tool');
});
@ -135,7 +134,7 @@ describe('Install', () => {
let script: string = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
expect(script).toContain('bash script.sh 7.3 ' + __dirname);
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '');
@ -144,7 +143,7 @@ describe('Install', () => {
expect(script).toContain('install extensions');
expect(script).toContain('edit php.ini');
expect(script).toContain('set coverage driver');
expect(script).toContain('bash darwin.sh 7.3 ' + __dirname);
expect(script).toContain('bash script.sh 7.3 ' + __dirname);
});
it('Test malformed version inputs', async () => {
@ -152,18 +151,18 @@ describe('Install', () => {
let script: string = '' + '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash darwin.sh 7.4 ' + __dirname);
expect(script).toContain('bash script.sh 7.4 ' + __dirname);
setEnv(8.0, 'darwin', '', '', '', '');
script = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
setEnv(8, 'darwin', '', '', '', '');
script = '' + (await install.run());
expect(script).toContain('initial script');
expect(script).toContain('bash darwin.sh 8.0 ' + __dirname);
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
});
});

View File

@ -0,0 +1,41 @@
import * as io from '@actions/io';
import * as matchers from '../src/matchers';
jest.mock('@actions/io');
describe('Matchers', () => {
it('Add matchers', async () => {
process.env['RUNNER_TOOL_CACHE'] = __dirname;
await matchers.addMatchers();
const spy = jest.spyOn(io, 'cp');
expect(spy).toHaveBeenCalledTimes(2);
});
it('Test PHPUnit Regex', async () => {
const regex1 = /^\d+\)\s.*$/;
const regex2 = /^(.*Failed\sasserting\sthat.*)$/;
const regex3 = /^\s*$/;
const regex4 = /^(.*):(\d+)$/;
expect(regex1.test('1) Tests\\Test::it_tests')).toBe(true);
expect(regex2.test('Failed asserting that false is true')).toBe(true);
expect(regex3.test('\n')).toBe(true);
expect(regex4.test('/path/to/file.php:42')).toBe(true);
});
it('Test PHP Regex', async () => {
const regex1 = /^(.*error):\s+\s+(.+) in (.+) on line (\d+)$/;
const regex2 = /^(.*Warning|.*Deprecated|.*Notice):\s+\s+(.+) in (.+) on line (\d+)$/;
expect(
regex1.test('PHP Parse error: error_message in file.php on line 10')
).toBe(true);
expect(
regex2.test('PHP Notice: info_message in file.php on line 10')
).toBe(true);
expect(
regex2.test('PHP Warning: warning_message in file.php on line 10')
).toBe(true);
expect(
regex2.test('PHP Deprecated: deprecated_message in file.php on line 10')
).toBe(true);
});
});

View File

@ -277,19 +277,14 @@ describe('Tools tests', () => {
it('checking getCleanedToolsList', async () => {
const tools_list: string[] = await tools.getCleanedToolsList(
'tool, composer:1.2.3, behat/behat, icanhazstring/composer-unused, laravel/vapor-cli, robmorgan/phinx, hirak/prestissimo, narrowspark/automatic-composer-prefetcher, phpspec/phpspec, symfony/flex'
'tool, composer:1.2.3, robmorgan/phinx, hirak/prestissimo, narrowspark/automatic-composer-prefetcher'
);
expect(tools_list).toStrictEqual([
'composer',
'tool',
'behat',
'composer-unused',
'vapor-cli',
'phinx',
'prestissimo',
'composer-prefetcher',
'phpspec',
'flex'
'composer-prefetcher'
]);
});
@ -306,46 +301,44 @@ describe('Tools tests', () => {
let script: string = await tools.addArchive(
'tool',
'https://tool.com/tool.phar',
'linux',
'-v'
'linux'
);
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
script = await tools.addArchive(
'tool',
'https://tool.com/tool.phar',
'darwin',
'-v'
'darwin'
);
expect(script).toContain('add_tool https://tool.com/tool.phar tool');
script = await tools.addArchive(
'tool',
'https://tool.com/tool.phar',
'win32',
'-v'
'win32'
);
expect(script).toContain('Add-Tool https://tool.com/tool.phar tool');
script = await tools.addArchive(
'tool',
'https://tool.com/tool.phar',
'openbsd',
'-v'
'openbsd'
);
expect(script).toContain('Platform openbsd is not supported');
});
it('checking addDevTools', async () => {
let script: string = await tools.addDevTools('phpize', 'linux');
expect(script).toContain('add_devtools phpize');
expect(script).toContain('add_devtools');
expect(script).toContain('add_log "$tick" "phpize" "Added"');
script = await tools.addDevTools('php-config', 'linux');
expect(script).toContain('add_devtools php-config');
expect(script).toContain('add_devtools');
expect(script).toContain('add_log "$tick" "php-config" "Added"');
script = await tools.addDevTools('phpize', 'darwin');
expect(script).toContain('add_devtools phpize');
expect(script).toContain('add_log "$tick" "phpize" "Added"');
script = await tools.addDevTools('php-config', 'darwin');
expect(script).toContain('add_devtools php-config');
expect(script).toContain('add_log "$tick" "php-config" "Added"');
script = await tools.addDevTools('phpize', 'win32');
expect(script).toContain(
@ -388,34 +381,34 @@ describe('Tools tests', () => {
);
expect(script).toContain('add_blackfire');
expect(script).toContain(
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"'
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player'
);
expect(script).toContain(
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
);
expect(script).toContain(
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"'
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr'
);
expect(script).toContain(
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer "-V"'
'add_tool https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/latest/download/php-cs-fixer.phar php-cs-fixer'
);
expect(script).toContain(
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"'
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan'
);
expect(script).toContain(
'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"'
'add_tool https://www.phing.info/get/phing-latest.phar phing'
);
expect(script).toContain(
'add_tool https://phar.io/releases/phive.phar phive status'
'add_tool https://phar.io/releases/phive.phar phive'
);
expect(script).toContain(
'add_tool https://phar.phpunit.de/phpunit.phar phpunit "--version"'
'add_tool https://phar.phpunit.de/phpunit.phar phpunit'
);
expect(script).toContain(
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony version'
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_linux_amd64 symfony'
);
expect(script).toContain(
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli'
);
expect(script).toContain('add_protoc latest');
expect(script).toContain('add_grpc_php_plugin latest');
@ -424,12 +417,12 @@ describe('Tools tests', () => {
expect(script).toContain('add_composertool phinx phinx robmorgan/');
expect(script).toContain('add_composertool phplint phplint overtrue/');
expect(script).toContain('add_composertool phinx phinx:1.2.3 robmorgan/');
expect(script).toContain('add_devtools php-config');
expect(script).toContain('add_devtools phpize');
expect(script).toContain('add_devtools');
expect(script).toContain('add_log "$tick" "php-config" "Added"');
expect(script).toContain('add_log "$tick" "phpize" "Added"');
});
it('checking addTools on darwin', async () => {
const listOfTools = [
'behat',
'blackfire',
'blackfire-player',
'composer-normalize',
@ -451,7 +444,6 @@ describe('Tools tests', () => {
'phpcs',
'phpize',
'phpmd',
'phpspec',
'protoc:v1.2.3',
'psalm',
'symfony',
@ -468,74 +460,72 @@ describe('Tools tests', () => {
expect(script).toContain('add_blackfire');
expect(script).toContain(
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player "-V"'
'add_tool https://get.blackfire.io/blackfire-player.phar blackfire-player'
);
expect(script).toContain(
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
);
expect(script).toContain(
'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize "-V"'
'add_tool https://github.com/ergebnis/composer-normalize/releases/latest/download/composer-normalize.phar composer-normalize'
);
expect(script).toContain(
'add_tool https://github.com/maglnet/ComposerRequireChecker/releases/latest/download/composer-require-checker.phar composer-require-checker "-V"'
'add_tool https://github.com/maglnet/ComposerRequireChecker/releases/latest/download/composer-require-checker.phar composer-require-checker'
);
expect(script).toContain(
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr "-V"'
'add_tool https://github.com/composer-unused/composer-unused/releases/latest/download/composer-unused.phar composer-unused'
);
expect(script).toContain(
'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection "-V"'
'add_tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/download/1.2.3/cs2pr cs2pr'
);
expect(script).toContain(
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan "-v"'
'add_tool https://github.com/infection/infection/releases/latest/download/infection.phar infection'
);
expect(script).toContain(
'add_tool https://www.phing.info/get/phing-1.2.3.phar phing "-v"'
'add_tool https://github.com/phan/phan/releases/latest/download/phan.phar phan'
);
expect(script).toContain(
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs "--version"'
'add_tool https://www.phing.info/get/phing-1.2.3.phar phing'
);
expect(script).toContain(
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf "--version"'
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcs.phar phpcs'
);
expect(script).toContain(
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd "--version"'
'add_tool https://github.com/squizlabs/PHP_CodeSniffer/releases/latest/download/phpcbf.phar phpcbf'
);
expect(script).toContain(
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"'
'add_tool https://phar.phpunit.de/phpcpd.phar phpcpd'
);
expect(script).toContain(
'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm "-v"'
'add_tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd'
);
expect(script).toContain(
'https://github.com/vimeo/psalm/releases/latest/download/psalm.phar psalm'
);
expect(script).toContain('add_grpc_php_plugin 1.2.3');
expect(script).toContain('add_protoc 1.2.3');
expect(script).toContain('add_composertool behat behat behat/');
expect(script).toContain('add_composertool phpspec phpspec phpspec/');
expect(script).toContain('add_composertool vapor-cli vapor-cli laravel/');
expect(script).toContain('add_composertool flex flex symfony/');
expect(script).toContain('add_composertool phinx phinx robmorgan/');
expect(script).toContain(
'add_tool https://github.com/phan/phan/releases/download/2.7.2/phan.phar phan "-v"'
'add_tool https://github.com/phan/phan/releases/download/2.7.2/phan.phar phan'
);
expect(script).toContain(
'add_tool https://github.com/phar-io/phive/releases/download/1.2.3/phive-1.2.3.phar phive'
);
expect(script).toContain(
'add_composertool composer-unused composer-unused icanhazstring/'
);
expect(script).toContain(
'add_composertool composer-prefetcher composer-prefetcher:1.2.3 narrowspark/automatic-'
);
expect(script).toContain(
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony version'
'add_tool https://github.com/symfony/cli/releases/latest/download/symfony_darwin_amd64 symfony'
);
expect(script).toContain(
'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony version'
'add_tool https://github.com/symfony/cli/releases/download/v1.2.3/symfony_darwin_amd64 symfony'
);
expect(script).toContain(
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
'add_tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli'
);
expect(script).toContain('add_devtools phpize');
expect(script).toContain('add_devtools php-config');
expect(script).toContain('add_log "$tick" "phpize" "Added"');
expect(script).toContain('add_log "$tick" "php-config" "Added"');
});
it('checking addTools on windows', async () => {
const listOfTools = [
@ -564,31 +554,31 @@ describe('Tools tests', () => {
expect(script).toContain('Add-Blackfire');
expect(script).toContain(
'Add-Tool https://get.blackfire.io/blackfire-player-v1.8.1.phar blackfire-player "-V"'
'Add-Tool https://get.blackfire.io/blackfire-player-v1.8.1.phar blackfire-player'
);
expect(script).toContain(
'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-stable.phar,https://getcomposer.org/composer-stable.phar composer'
);
expect(script).toContain(
'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"'
'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr'
);
expect(script).toContain('Add-Composertool flex flex symfony/');
expect(script).toContain(
'Add-Tool https://deployer.org/deployer.phar deployer "-V"'
'Add-Tool https://deployer.org/deployer.phar deployer'
);
expect(script).toContain('Add-Composertool prestissimo prestissimo hirak/');
expect(script).toContain(
'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd "--version"'
'Add-Tool https://github.com/phpmd/phpmd/releases/latest/download/phpmd.phar phpmd'
);
expect(script).toContain('Add-Composertool phinx phinx robmorgan/');
expect(script).toContain(
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive status'
'Add-Tool https://github.com/phar-io/phive/releases/download/0.13.2/phive-0.13.2.phar phive'
);
expect(script).toContain(
'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony version'
'Add-Tool https://github.com/symfony/cli/releases/latest/download/symfony_windows_amd64.exe symfony'
);
expect(script).toContain(
'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli "--version"'
'Add-Tool https://github.com/wp-cli/builds/blob/gh-pages/phar/wp-cli.phar?raw=true wp-cli'
);
expect(script).toContain('phpize is not a windows tool');
expect(script).toContain('php-config is not a windows tool');
@ -631,7 +621,7 @@ describe('Tools tests', () => {
script = await tools.addTools('composer:preview', '7.4', 'linux');
expect(script).toContain(
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-preview.phar,https://getcomposer.org/composer-preview.phar composer'
);
script = await tools.addTools(
'composer:v1, composer:preview, composer:snapshot',
@ -639,7 +629,7 @@ describe('Tools tests', () => {
'linux'
);
expect(script).toContain(
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'
'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-snapshot.phar,https://getcomposer.org/composer.phar composer'
);
});
});

View File

@ -17,26 +17,13 @@ async function cleanup(path: string): Promise<void> {
}
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'] = 'setup-php';
process.env['undefined'] = '';
expect(await utils.getInput('test', false)).toBe('setup-php');
expect(await utils.getInput('undefined', false)).toBe('');
expect(await utils.getInput('setup-php', false)).toBe('setup-php');
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 asyncForEach', async () => {
@ -209,15 +196,6 @@ describe('Utils tests', () => {
);
});
it('checking scriptTool', async () => {
expect(await utils.scriptTool('linux')).toBe('bash');
expect(await utils.scriptTool('darwin')).toBe('bash');
expect(await utils.scriptTool('win32')).toBe('pwsh');
expect(await utils.scriptTool('openbsd')).toContain(
'Platform openbsd is not supported'
);
});
it('checking customPackage', async () => {
const script_path: string = path.join('ext', 'pkg.sh');
expect(await utils.customPackage('pkg', 'ext', '1.2.3', 'linux')).toContain(

215
dist/index.js vendored
View File

@ -977,6 +977,49 @@ function toCommandValue(input) {
exports.toCommandValue = toCommandValue;
//# sourceMappingURL=utils.js.map
/***/ }),
/***/ 86:
/***/ (function(__unusedmodule, exports, __webpack_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
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.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addMatchers = void 0;
const path = __importStar(__webpack_require__(622));
const utils = __importStar(__webpack_require__(163));
const io = __importStar(__webpack_require__(1));
/**
* Cache json files for problem matchers
*/
async function addMatchers() {
const config_path = path.join(__dirname, '..', 'src', 'configs');
const runner_dir = await utils.getInput('RUNNER_TOOL_CACHE', false);
await io.cp(path.join(config_path, 'phpunit.json'), runner_dir);
await io.cp(path.join(config_path, 'php.json'), runner_dir);
}
exports.addMatchers = addMatchers;
/***/ }),
/***/ 87:
@ -1054,25 +1097,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.customPackage = exports.scriptTool = exports.scriptExtension = exports.joins = exports.getCommand = exports.getUnsupportedLog = exports.suppressOutput = exports.getExtensionPrefix = exports.CSVArray = exports.extensionArray = exports.writeScript = exports.readScript = exports.addLog = exports.stepLog = exports.log = exports.color = exports.asyncForEach = exports.parseVersion = exports.getInput = exports.readEnv = void 0;
exports.customPackage = exports.scriptExtension = exports.joins = exports.getCommand = exports.getUnsupportedLog = exports.suppressOutput = exports.getExtensionPrefix = exports.CSVArray = exports.extensionArray = exports.writeScript = exports.readScript = exports.addLog = exports.stepLog = exports.log = exports.color = exports.asyncForEach = exports.getInput = void 0;
const fs = __importStar(__webpack_require__(747));
const path = __importStar(__webpack_require__(622));
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.
*
@ -1080,39 +1108,16 @@ exports.readEnv = readEnv;
* @param mandatory
*/
async function getInput(name, mandatory) {
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}`);
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, { required: mandatory });
default:
return '';
return input;
}
}
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;
/**
* Async foreach loop
*
@ -1364,23 +1369,6 @@ async function scriptExtension(os_version) {
}
}
exports.scriptExtension = scriptExtension;
/**
* Function to get script tool
*
* @param os_version
*/
async function scriptTool(os_version) {
switch (os_version) {
case 'win32':
return 'pwsh';
case 'linux':
case 'darwin':
return 'bash';
default:
return await log('Platform ' + os_version + ' is not supported', os_version, 'error');
}
}
exports.scriptTool = scriptTool;
/**
* Function to get script to add tools with custom support.
*
@ -1914,14 +1902,14 @@ async function addPhive(version, os_version) {
switch (version) {
case 'latest':
return ((await utils.getCommand(os_version, 'tool')) +
'https://phar.io/releases/phive.phar phive status');
'https://phar.io/releases/phive.phar phive');
default:
return ((await utils.getCommand(os_version, 'tool')) +
'https://github.com/phar-io/phive/releases/download/' +
version +
'/phive-' +
version +
'.phar phive status');
'.phar phive');
}
}
exports.addPhive = addPhive;
@ -2053,7 +2041,7 @@ async function getCleanedToolsList(tools_csv) {
.map(function (extension) {
return extension
.trim()
.replace(/-agent|behat\/|hirak\/|icanhazstring\/|laravel\/|narrowspark\/automatic-|overtrue\/|phpspec\/|robmorgan\/|symfony\//, '');
.replace(/-agent|hirak\/|laravel\/|narrowspark\/automatic-|overtrue\/|robmorgan\/|symfony\//, '');
})
.filter(Boolean);
return [...new Set(tools_list)];
@ -2065,11 +2053,9 @@ exports.getCleanedToolsList = getCleanedToolsList;
* @param tool
* @param url
* @param os_version
* @param ver_param
*/
async function addArchive(tool, url, os_version, ver_param) {
return ((await utils.getCommand(os_version, 'tool')) +
(await utils.joins(url, tool, ver_param)));
async function addArchive(tool, url, os_version) {
return (await utils.getCommand(os_version, 'tool')) + url + ' ' + tool;
}
exports.addArchive = addArchive;
/**
@ -2081,8 +2067,11 @@ exports.addArchive = addArchive;
async function addDevTools(tool, os_version) {
switch (os_version) {
case 'linux':
return ('add_devtools' +
'\n' +
(await utils.addLog('$tick', tool, 'Added', 'linux')));
case 'darwin':
return 'add_devtools ' + tool;
return await utils.addLog('$tick', tool, 'Added', 'darwin');
case 'win32':
return await utils.addLog('$cross', tool, tool + ' is not a windows tool', 'win32');
default:
@ -2127,28 +2116,24 @@ async function addTools(tools_csv, php_version, os_version) {
case 'protoc':
script += await utils.customPackage(tool, 'tools', version, os_version);
break;
case 'behat':
case 'phpspec':
script += await addPackage(tool, release, tool + '/', os_version);
break;
case 'blackfire-player':
url = await getPharUrl('https://get.blackfire.io', tool, 'v', version);
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'codeception':
url =
'https://codeception.com/' +
(await getCodeceptionUri(version, php_version));
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer':
url = await getComposerUrl(version);
script += await addArchive('composer', url, os_version, version);
script += await addArchive('composer', url, os_version);
break;
case 'composer-normalize':
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'ergebnis/composer-normalize/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer-prefetcher':
script += await addPackage(tool, release, 'narrowspark/automatic-', os_version);
@ -2156,37 +2141,39 @@ async function addTools(tools_csv, php_version, os_version) {
case 'composer-require-checker':
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'maglnet/ComposerRequireChecker/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer-unused':
script += await addPackage(tool, release, 'icanhazstring/', os_version);
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'composer-unused/composer-unused/' + uri;
script += await addArchive(tool, url, os_version);
break;
case 'cs2pr':
uri = await getUri(tool, '', version, 'releases', '', 'download');
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'deployer':
url = await getDeployerUrl(version);
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'flex':
script += await addPackage(tool, release, 'symfony/', os_version);
break;
case 'infection':
url = github + 'infection/infection/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'pecl':
script += await utils.getCommand(os_version, 'pecl');
break;
case 'phan':
url = github + 'phan/phan/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'phing':
url = 'https://www.phing.info/get/phing-' + version + '.phar';
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'phinx':
script += await addPackage(tool, release, 'robmorgan/', os_version);
@ -2201,48 +2188,48 @@ async function addTools(tools_csv, php_version, os_version) {
case 'php-cs-fixer':
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'phpcbf':
case 'phpcs':
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phpcpd':
case 'phpunit':
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phplint':
script += await addPackage(tool, release, 'overtrue/', os_version);
break;
case 'phpmd':
url = github + 'phpmd/phpmd/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phpstan':
url = github + 'phpstan/phpstan/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'prestissimo':
script += await addPackage(tool, release, 'hirak/', os_version);
break;
case 'psalm':
url = github + 'vimeo/psalm/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'symfony':
case 'symfony-cli':
uri = await getSymfonyUri(version, os_version);
url = github + 'symfony/cli/' + uri;
script += await addArchive('symfony', url, os_version, 'version');
script += await addArchive('symfony', url, os_version);
break;
case 'vapor-cli':
script += await addPackage(tool, release, 'laravel/', os_version);
break;
case 'wp-cli':
url = github + (await getWpCliUrl(version));
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
default:
script += await utils.addLog('$cross', tool, 'Tool ' + tool + ' is not supported', os_version);
@ -2531,7 +2518,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.run = exports.getScript = void 0;
exports.run = exports.build = void 0;
const exec_1 = __webpack_require__(986);
const core = __importStar(__webpack_require__(470));
const config = __importStar(__webpack_require__(641));
@ -2539,6 +2526,7 @@ const coverage = __importStar(__webpack_require__(635));
const extensions = __importStar(__webpack_require__(911));
const tools = __importStar(__webpack_require__(534));
const utils = __importStar(__webpack_require__(163));
const matchers = __importStar(__webpack_require__(86));
/**
* Build the script
*
@ -2546,15 +2534,19 @@ const utils = __importStar(__webpack_require__(163));
* @param version
* @param os_version
*/
async function getScript(filename, version, os_version) {
async function build(filename, version, os_version) {
const name = 'setup-php';
const url = 'https://setup-php.com/support';
const url = 'setup-php.com/support';
// taking inputs
const extension_csv = await utils.getInput('extensions', false);
const extension_csv = (await utils.getInput('extensions', false)) ||
(await utils.getInput('extension', false));
const ini_values_csv = await utils.getInput('ini-values', false);
const coverage_driver = await utils.getInput('coverage', false);
const pecl = await utils.getInput('pecl', false);
let tools_csv = await utils.getInput('tools', false);
if (/.*-(beta|alpha|devel|snapshot|\d+\.\d+\.\d+).*/.test(extension_csv)) {
if (pecl == 'true' ||
/.*-(beta|alpha|devel|snapshot).*/.test(extension_csv) ||
/.*-(\d+\.\d+\.\d+).*/.test(extension_csv)) {
tools_csv = 'pecl, ' + tools_csv;
}
let script = await utils.readScript(filename);
@ -2572,18 +2564,29 @@ async function getScript(filename, version, os_version) {
script += '\n' + (await utils.addLog('$tick', name, url, os_version));
return await utils.writeScript(filename, script);
}
exports.getScript = getScript;
exports.build = build;
/**
* Run the script
*/
async function run() {
try {
const version = await utils.parseVersion(await utils.getInput('php-version', true));
let version = await utils.getInput('php-version', true);
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const os_version = process.platform;
const tool = await utils.scriptTool(os_version);
const script = os_version + (await utils.scriptExtension(os_version));
const location = await getScript(script, version, os_version);
await exec_1.exec(await utils.joins(tool, location, version, __dirname));
// check the os version and run the respective script
let script_path = '';
switch (os_version) {
case 'darwin':
case 'linux':
script_path = await build(os_version + '.sh', version, os_version);
await exec_1.exec('bash ' + script_path + ' ' + version + ' ' + __dirname);
break;
case 'win32':
script_path = await build('win32.ps1', version, os_version);
await exec_1.exec('pwsh ' + script_path + ' ' + version + ' ' + __dirname);
break;
}
await matchers.addMatchers();
}
catch (error) {
core.setFailed(error.message);
@ -3052,8 +3055,8 @@ async function addExtensionLinux(extension_csv, version, pipe) {
extension = extension.replace(/pdo[_-]|3/, '');
add_script += '\nadd_pdo_extension ' + extension;
return;
// match uopz
case /^(uopz)$/.test(extension):
// match ast and uopz
case /^(ast|uopz)$/.test(extension):
command = command_prefix + '-' + extension + pipe;
break;
// match sqlite

1027
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "setup-php",
"version": "2.6.0",
"version": "2.5.0",
"private": false,
"description": "Setup PHP for use with GitHub Actions",
"main": "dist/index.js",
@ -30,22 +30,22 @@
"fs": "0.0.1-security"
},
"devDependencies": {
"@types/jest": "^26.0.14",
"@types/node": "^14.11.8",
"@typescript-eslint/eslint-plugin": "^4.4.0",
"@typescript-eslint/parser": "^4.4.0",
"@types/jest": "^26.0.13",
"@types/node": "^14.6.4",
"@typescript-eslint/eslint-plugin": "^4.0.1",
"@typescript-eslint/parser": "^4.0.1",
"@zeit/ncc": "^0.22.3",
"eslint": "^7.11.0",
"eslint-config-prettier": "^6.12.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.1.0",
"eslint": "^7.8.1",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jest": "^24.0.0",
"eslint-plugin-prettier": "^3.1.4",
"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": "^4.2.5",
"jest": "^26.4.2",
"jest-circus": "^26.4.2",
"prettier": "^2.1.1",
"ts-jest": "^26.3.0",
"typescript": "^4.0.2"
},
"husky": {
"skipCI": true,

View File

@ -295,8 +295,8 @@ export async function addExtensionLinux(
extension = extension.replace(/pdo[_-]|3/, '');
add_script += '\nadd_pdo_extension ' + extension;
return;
// match uopz
case /^(uopz)$/.test(extension):
// match ast and uopz
case /^(ast|uopz)$/.test(extension):
command = command_prefix + '-' + extension + pipe;
break;
// match sqlite

View File

@ -5,6 +5,7 @@ import * as coverage from './coverage';
import * as extensions from './extensions';
import * as tools from './tools';
import * as utils from './utils';
import * as matchers from './matchers';
/**
* Build the script
@ -13,19 +14,26 @@ import * as utils from './utils';
* @param version
* @param os_version
*/
export async function getScript(
export async function build(
filename: string,
version: string,
os_version: string
): Promise<string> {
const name = 'setup-php';
const url = 'https://setup-php.com/support';
const url = 'setup-php.com/support';
// taking inputs
const extension_csv: string = await utils.getInput('extensions', false);
const extension_csv: string =
(await utils.getInput('extensions', false)) ||
(await utils.getInput('extension', false));
const ini_values_csv: string = await utils.getInput('ini-values', false);
const coverage_driver: string = await utils.getInput('coverage', false);
const pecl: string = await utils.getInput('pecl', false);
let tools_csv: string = await utils.getInput('tools', false);
if (/.*-(beta|alpha|devel|snapshot|\d+\.\d+\.\d+).*/.test(extension_csv)) {
if (
pecl == 'true' ||
/.*-(beta|alpha|devel|snapshot).*/.test(extension_csv) ||
/.*-(\d+\.\d+\.\d+).*/.test(extension_csv)
) {
tools_csv = 'pecl, ' + tools_csv;
}
@ -53,14 +61,24 @@ export async function getScript(
*/
export async function run(): Promise<void> {
try {
const version: string = await utils.parseVersion(
await utils.getInput('php-version', true)
);
let version: string = await utils.getInput('php-version', true);
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
const os_version: string = process.platform;
const tool = await utils.scriptTool(os_version);
const script = os_version + (await utils.scriptExtension(os_version));
const location = await getScript(script, version, os_version);
await exec(await utils.joins(tool, location, version, __dirname));
// check the os version and run the respective script
let script_path = '';
switch (os_version) {
case 'darwin':
case 'linux':
script_path = await build(os_version + '.sh', version, os_version);
await exec('bash ' + script_path + ' ' + version + ' ' + __dirname);
break;
case 'win32':
script_path = await build('win32.ps1', version, os_version);
await exec('pwsh ' + script_path + ' ' + version + ' ' + __dirname);
break;
}
await matchers.addMatchers();
} catch (error) {
core.setFailed(error.message);
}

13
src/matchers.ts Normal file
View File

@ -0,0 +1,13 @@
import * as path from 'path';
import * as utils from './utils';
import * as io from '@actions/io';
/**
* Cache json files for problem matchers
*/
export async function addMatchers(): Promise<void> {
const config_path = path.join(__dirname, '..', 'src', 'configs');
const runner_dir: string = await utils.getInput('RUNNER_TOOL_CACHE', false);
await io.cp(path.join(config_path, 'phpunit.json'), runner_dir);
await io.cp(path.join(config_path, 'php.json'), runner_dir);
}

View File

@ -67,7 +67,7 @@ check_extension() {
fi
}
# Function to get the PECL version.
# Fuction to get the PECL version.
get_pecl_version() {
extension=$1
stability="$(echo "$2" | grep -m 1 -Eio "(alpha|beta|rc|snapshot)")"
@ -152,35 +152,16 @@ configure_composer() {
exit 1
fi
composer -q global config process-timeout 0
echo "/Users/$USER/.composer/vendor/bin" >> "$GITHUB_PATH"
echo "/Users/$USER/.composer/vendor/bin" >> $GITHUB_PATH
if [ -n "$COMPOSER_TOKEN" ]; then
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
fi
}
# Function to extract tool version.
get_tool_version() {
tool=$1
param=$2
version_regex="[0-9]+((\.{1}[0-9]+)+)(\.{0})(-[a-zA-Z0-9]+){0,1}"
if [ "$tool" = "composer" ]; then
if [ "$param" != "snapshot" ]; then
grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex"
else
trunk=$(grep -Ea "const\sBRANCH_ALIAS_VERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")
commit=$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "[a-zA-z0-9]+" | tail -n 1)
echo "$trunk+$commit"
fi
else
$tool "$param" 2>/dev/null | sed -Ee "s/[Cc]omposer(.)?$version_regex//g" | grep -Eo "$version_regex" | head -n 1
fi
}
# Function to setup a remote tool.
add_tool() {
url=$1
tool=$2
ver_param=$3
tool_path="$tool_path_dir/$tool"
if [ ! -e "$tool_path" ]; then
rm -rf "$tool_path"
@ -210,8 +191,7 @@ add_tool() {
elif [ "$tool" = "wp-cli" ]; then
sudo cp -p "$tool_path" "$tool_path_dir"/wp
fi
tool_version=$(get_tool_version "$tool" "$ver_param")
add_log "$tick" "$tool" "Added $tool $tool_version"
add_log "$tick" "$tool" "Added"
else
add_log "$cross" "$tool" "Could not setup $tool"
fi
@ -223,19 +203,10 @@ add_composertool() {
release=$2
prefix=$3
(
composer global require "$prefix$release" >/dev/null 2>&1 &&
json=$(grep "$prefix$tool" /Users/"$USER"/.composer/composer.json) &&
tool_version=$(get_tool_version 'echo' "$json") &&
add_log "$tick" "$tool" "Added $tool $tool_version"
composer global require "$prefix$release" >/dev/null 2>&1 && add_log "$tick" "$tool" "Added"
) || add_log "$cross" "$tool" "Could not setup $tool"
}
# Function to handle request to add phpize and php-config.
add_devtools() {
tool=$1
add_log "$tick" "$tool" "Added $tool $semver"
}
# Function to configure PECL
configure_pecl() {
for tool in pear pecl; do
@ -246,8 +217,7 @@ configure_pecl() {
# Function to handle request to add PECL.
add_pecl() {
pecl_version=$(get_tool_version "pecl" "version")
add_log "$tick" "PECL" "Found PECL $pecl_version"
add_log "$tick" "PECL" "Added"
}
# Function to setup PHP 5.6 and newer.
@ -267,7 +237,6 @@ setup_php() {
tick="✓"
cross="✗"
version=$1
dist=$2
nodot_version=${1/./}
old_versions="5.[3-5]"
tool_path_dir="/usr/local/bin"
@ -306,5 +275,4 @@ scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
sudo mkdir -p "$ext_dir"
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
if [[ ! "$version" =~ $old_versions ]]; then configure_pecl >/dev/null 2>&1; fi
sudo mv "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
add_log "$tick" "PHP" "$status PHP $semver"

View File

@ -9,11 +9,10 @@ add_license_log() {
# Function to get the tag for a php version.
get_tag() {
master_version='8.0'
tag='master'
if ! [[ ${version:?} =~ $nightly_versions ]]; then
if [ ! "${version:?}" = "$master_version" ]; then
tag="php-$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')"
elif [ "${version:?}" = '8.0' ]; then
tag="PHP-8.0"
fi
echo "$tag"
}
@ -73,23 +72,18 @@ restore_phpize() {
# Function to patch pdo_oci.
patch_pdo_oci_config() {
curl -O "${curl_opts[@]}" https://raw.githubusercontent.com/php/php-src/PHP-8.0/ext/pdo_oci/config.m4
if [[ ${version:?} =~ 5.[3-6] ]]; then
sudo sed -i '' "/PHP_CHECK_PDO_INCLUDES/d" config.m4 2>/dev/null || sudo sed -i "/PHP_CHECK_PDO_INCLUDES/d" config.m4
fi
curl -O "${curl_opts[@]}" https://raw.githubusercontent.com/php/php-src/master/ext/pdo_oci/config.m4
sudo sed -i '' "/PHP_CHECK_PDO_INCLUDES/d" config.m4 || sudo sed -i "/PHP_CHECK_PDO_INCLUDES/d" config.m4
}
# Function to install the dependencies.
add_dependencies() {
if [ "$os" = 'Linux' ]; then
if [ "${runner:?}" = "self-hosted" ]; then
if ! [[ ${version:?} =~ $nightly_versions ]]; then
${apt_install:?} --no-upgrade --no-install-recommends autoconf automake libaio-dev gcc g++ php"$version"-dev
else
${apt_install:?} --no-upgrade --no-install-recommends autoconf automake libaio-dev gcc g++
fi
${apt_install:?} autoconf automake libaio-dev gcc g++ php"$version"-dev
else
! [[ ${version:?} =~ $nightly_versions ]] && update_lists && ${apt_install:?} --no-upgrade --no-install-recommends php"$version"-dev
update_lists
${apt_install:?} php"$version"-dev
fi
sudo update-alternatives --set php-config /usr/bin/php-config"$version"
sudo update-alternatives --set phpize /usr/bin/phpize"$version"
@ -123,7 +117,6 @@ add_oci() {
oracle_home='/opt/oracle'
oracle_client=$oracle_home/instantclient
os=$(uname -s)
nightly_versions='8.[0-1]'
add_client >/dev/null 2>&1
add_dependencies >/dev/null 2>&1
add_oci_helper >/dev/null 2>&1

View File

@ -3,11 +3,7 @@ add_phalcon_helper() {
status='Installed and enabled'
if [ "$os_name" = "Linux" ]; then
update_lists
if [ "$extension" = "phalcon4" ]; then
${apt_install:?} "php${version:?}-psr" "php${version:?}-$extension"
else
${apt_install:?} "php${version:?}-$extension"
fi
${apt_install:?} "php${version:?}-$extension"
else
phalcon_ini_file=${ini_file:?}
sed -i '' '/extension.*psr/d' "${ini_file:?}"

View File

@ -42,7 +42,7 @@ cleanup_lists() {
sudo mkdir /etc/apt/sources.list.d
sudo mv /etc/apt/sources.list.d.save/*ondrej*.list /etc/apt/sources.list.d/
sudo mv /etc/apt/sources.list.d.save/*dotdeb*.list /etc/apt/sources.list.d/ 2>/dev/null || true
trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/ 2>/dev/null" exit
trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/" exit
fi
}
@ -89,7 +89,7 @@ configure_pecl() {
fi
}
# Function to get the PECL version of an extension.
# Fuction to get the PECL version of an extension.
get_pecl_version() {
extension=$1
stability="$(echo "$2" | grep -m 1 -Eio "(alpha|beta|rc|snapshot)")"
@ -153,7 +153,7 @@ enable_extension() {
fi
}
# Function to add PDO extension.
# Funcion to add PDO extension.
add_pdo_extension() {
pdo_ext="pdo_$1"
if check_extension "$pdo_ext"; then
@ -231,7 +231,7 @@ add_extension_from_source() {
args=$4
prefix=$5
(
add_devtools phpize
add_devtools
delete_extension "$extension"
curl -o /tmp/"$extension".tar.gz "${curl_opts[@]}" https://github.com/"$repo"/archive/"$release".tar.gz
tar xf /tmp/"$extension".tar.gz -C /tmp
@ -252,35 +252,16 @@ configure_composer() {
exit 1;
fi
composer -q global config process-timeout 0
echo "/home/$USER/.composer/vendor/bin" >> "$GITHUB_PATH"
echo "/home/$USER/.composer/vendor/bin" >> $GITHUB_PATH
if [ -n "$COMPOSER_TOKEN" ]; then
composer -q global config github-oauth.github.com "$COMPOSER_TOKEN"
fi
}
# Function to extract tool version.
get_tool_version() {
tool=$1
param=$2
version_regex="[0-9]+((\.{1}[0-9]+)+)(\.{0})(-[a-zA-Z0-9]+){0,1}"
if [ "$tool" = "composer" ]; then
if [ "$param" != "snapshot" ]; then
grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex"
else
trunk=$(grep -Ea "const\sBRANCH_ALIAS_VERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")
commit=$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "[a-zA-z0-9]+" | tail -n 1)
echo "$trunk+$commit"
fi
else
$tool "$param" 2>/dev/null | sed -Ee "s/[Cc]omposer(.)?$version_regex//g" | grep -Eo "$version_regex" | head -n 1
fi
}
# Function to setup a remote tool.
add_tool() {
url=$1
tool=$2
ver_param=$3
tool_path="$tool_path_dir/$tool"
if [ ! -e "$tool_path" ]; then
rm -rf "$tool_path"
@ -308,8 +289,7 @@ add_tool() {
elif [ "$tool" = "wp-cli" ]; then
sudo cp -p "$tool_path" "$tool_path_dir"/wp
fi
tool_version=$(get_tool_version "$tool" "$ver_param")
add_log "$tick" "$tool" "Added $tool $tool_version"
add_log "$tick" "$tool" "Added"
else
add_log "$cross" "$tool" "Could not setup $tool"
fi
@ -322,22 +302,18 @@ add_composertool() {
prefix=$3
(
composer global require "$prefix$release" >/dev/null 2>&1 &&
json=$(grep "$prefix$tool" /home/"$USER"/.composer/composer.json) &&
tool_version=$(get_tool_version 'echo' "$json") &&
add_log "$tick" "$tool" "Added $tool $tool_version"
add_log "$tick" "$tool" "Added"
) || add_log "$cross" "$tool" "Could not setup $tool"
}
# Function to setup phpize and php-config.
add_devtools() {
tool=$1
if ! [ -e "/usr/bin/phpize$version" ] || ! [ -e "/usr/bin/php-config$version" ]; then
update_lists && $apt_install php"$version"-dev php"$version"-xml >/dev/null 2>&1
fi
sudo update-alternatives --set php-config /usr/bin/php-config"$version" >/dev/null 2>&1
sudo update-alternatives --set phpize /usr/bin/phpize"$version" >/dev/null 2>&1
configure_pecl >/dev/null 2>&1
add_log "$tick" "$tool" "Added $tool $semver"
}
# Function to setup the nightly build from master branch.
@ -354,13 +330,12 @@ setup_old_versions() {
# Function to add PECL.
add_pecl() {
add_devtools phpize >/dev/null 2>&1
add_devtools >/dev/null 2>&1
if [ ! -e /usr/bin/pecl ]; then
$apt_install php-pear >/dev/null 2>&1 || update_lists && $apt_install php-pear >/dev/null 2>&1
fi
configure_pecl >/dev/null 2>&1
pecl_version=$(get_tool_version "pecl" "version")
add_log "$tick" "PECL" "Added PECL $pecl_version"
add_log "$tick" "PECL" "Added"
}
# Function to switch versions of PHP binaries.
@ -422,13 +397,12 @@ tick="✓"
cross="✗"
pecl_config="false"
version=$1
dist=$2
master_version="8.0"
old_versions="5.[3-5]"
debconf_fix="DEBIAN_FRONTEND=noninteractive"
github="https://github.com/shivammathur"
apt_install="sudo $debconf_fix apt-get install -y"
apt_remove="sudo $debconf_fix apt-get remove -y"
apt_install="sudo $debconf_fix apt-fast install -y"
apt_remove="sudo $debconf_fix apt-fast remove -y"
tool_path_dir="/usr/local/bin"
curl_opts=(-sL)
existing_version=$(php-config --version 2>/dev/null | cut -c 1-3)
@ -478,5 +452,4 @@ pecl_file="$scan_dir"/99-pecl.ini
echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
sudo chmod 777 "$ini_file" "$pecl_file" "$tool_path_dir"
sudo mv "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
add_log "$tick" "PHP" "$status PHP $semver"

View File

@ -16,6 +16,6 @@ Function Add-Blackfire() {
if ((Test-Path env:BLACKFIRE_CLIENT_ID) -and (Test-Path env:BLACKFIRE_CLIENT_TOKEN)) {
blackfire config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem >$null 2>&1
}
Add-Log $tick "blackfire" "Added blackfire $agent_version"
Add-Log $tick "blackfire-agent" "Added blackfire-agent $agent_version"
Add-Log $tick "blackfire" "Added"
Add-Log $tick "blackfire-agent" "Added"
}

View File

@ -29,7 +29,6 @@ add_blackfire() {
[ "$os" = "Linux" ] && add_blackfire_linux >/dev/null 2>&1
[ "$os" = "Darwin" ] && add_blackfire_darwin >/dev/null 2>&1
blackfire_config >/dev/null 2>&1
tool_version=$(get_tool_version "blackfire" "version")
add_log "${tick:?}" "blackfire" "Added blackfire $tool_version"
add_log "${tick:?}" "blackfire-agent" "Added blackfire-agent $tool_version"
add_log "${tick:?}" "blackfire" "Added"
add_log "${tick:?}" "blackfire-agent" "Added"
}

View File

@ -9,12 +9,11 @@ Function Add-Msys2() {
Function Add-Grpc_php_plugin() {
$msys_location = Add-Msys2
$logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm mingw-w64-x86_64-grpc" >$null 2>&1
$grpc_version = Get-ToolVersion 'Write-Output' "$logs"
. $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm mingw-w64-x86_64-grpc" >$null 2>&1
Write-Output "$msys_location\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
Write-Output "::set-output name=grpc_php_plugin_path::$msys_location\mingw64\bin\grpc_php_plugin.exe"
Add-ToProfile $current_profile 'grpc_php_plugin' "New-Alias grpc_php_plugin $msys_location\mingw64\bin\grpc_php_plugin.exe"
Add-Log $tick "grpc_php_plugin" "Added grpc_php_plugin $grpc_version"
Add-Log $tick "grpc_php_plugin" "Added"
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "grpc_php_plugin" "Click to read the grpc_php_plugin related license information"
Write-Output (Invoke-WebRequest https://raw.githubusercontent.com/grpc/grpc/master/LICENSE).Content
Write-Output "::endgroup::"

View File

@ -44,7 +44,7 @@ add_grpc_php_plugin() {
sudo chmod a+x /usr/local/bin/grpc_php_plugin
) >/dev/null 2>&1
echo "::set-output name=grpc_php_plugin_path::/usr/local/bin/grpc_php_plugin"
add_log "${tick:?}" "grpc_php_plugin" "Added grpc_php_plugin ${grpc_tag:1}"
add_log "${tick:?}" "grpc_php_plugin" "Added"
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "grpc_php_plugin" "Click to read the grpc_php_plugin related license information"
cat "/tmp/grpc-${grpc_tag:1}/LICENSE"
echo "::endgroup::"

View File

@ -31,7 +31,7 @@ Function Add-Protoc() {
Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force >$null 2>&1
Move-Item -Path $bin_dir\protoc\bin\protoc.exe -Destination $bin_dir\protoc.exe
Add-ToProfile $current_profile 'protoc' "New-Alias protoc $bin_dir\protoc.exe"
Add-Log $tick "protoc" "Added protoc $($protobuf_tag -replace 'v', '')"
Add-Log $tick "protoc" "Added"
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "protoc" "Click to read the protoc related license information"
Write-Output (Invoke-WebRequest https://raw.githubusercontent.com/protocolbuffers/protobuf/master/LICENSE).Content
Write-Output "::endgroup::"

View File

@ -21,7 +21,7 @@ add_protoc() {
sudo unzip /tmp/protobuf.zip -d /usr/local/
sudo chmod 777 /usr/local/bin/protoc -R /usr/local/include/google
) >/dev/null 2>&1
add_log "${tick:?}" "protoc" "Added protoc ${protobuf_tag:1}"
add_log "${tick:?}" "protoc" "Added"
printf "::group::\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "protoc" "Click to read the protoc related license information"
curl "${curl_opts[@]:?}" https://raw.githubusercontent.com/protocolbuffers/protobuf/master/LICENSE
echo "::endgroup::"

View File

@ -8,7 +8,7 @@ param (
[ValidateNotNull()]
[ValidateLength(1, [int]::MaxValue)]
[string]
$dist
$dir
)
# Function to log start of a operation.
@ -195,27 +195,6 @@ Function Edit-ComposerConfig() {
}
}
# Function to extract tool version.
Function Get-ToolVersion() {
Param (
[Parameter(Position = 0, Mandatory = $true)]
$tool,
[Parameter(Position = 1, Mandatory = $true)]
$param
)
$version_regex = "[0-9]+((\.{1}[0-9]+)+)(\.{0})(-[a-z0-9]+){0,1}"
if($tool -eq 'composer') {
if ($param -eq 'snapshot') {
$trunk = Select-String -Pattern "const\sBRANCH_ALIAS_VERSION" -Path $bin_dir\composer -Raw | Select-String -Pattern $version_regex | ForEach-Object { $_.matches.Value }
$commit = Select-String -Pattern "const\sVERSION" -Path $bin_dir\composer -Raw | Select-String -Pattern "[a-zA-Z0-9]+" -AllMatches | ForEach-Object { $_.matches[2].Value }
return "$trunk+$commit"
} else {
return Select-String -Pattern "const\sVERSION" -Path $bin_dir\composer -Raw | Select-String -Pattern $version_regex | ForEach-Object { $_.matches.Value }
}
}
return . $tool $param 2> $null | ForEach-Object { $_ -replace "composer $version_regex", '' } | Select-String -Pattern $version_regex | Select-Object -First 1 | ForEach-Object { $_.matches.Value }
}
# Function to add tools.
Function Add-Tool() {
Param (
@ -224,10 +203,9 @@ Function Add-Tool() {
$url,
[Parameter(Position = 1, Mandatory = $true)]
[ValidateNotNull()]
$tool,
[Parameter(Position = 2, Mandatory = $true)]
[ValidateNotNull()]
$ver_param
[ValidateLength(1, [int]::MaxValue)]
[string]
$tool
)
if (Test-Path $bin_dir\$tool) {
Remove-Item $bin_dir\$tool
@ -261,8 +239,7 @@ Function Add-Tool() {
Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat
}
if (((Get-ChildItem -Path $bin_dir/* | Where-Object Name -Match "^$tool(.exe|.phar)*$").Count -gt 0)) {
$tool_version = Get-ToolVersion $tool $ver_param
Add-Log $tick $tool "Added $tool $tool_version"
Add-Log $tick $tool "Added"
} else {
Add-Log $cross $tool "Could not add $tool"
}
@ -287,11 +264,9 @@ Function Add-Composertool() {
[string]
$prefix
)
composer global require $prefix$release 2>&1 | out-null
$json = findstr $prefix$tool $env:APPDATA\Composer\composer.json
if($json) {
$tool_version = Get-ToolVersion "Write-Output" "$json"
Add-Log $tick $tool "Added $tool $tool_version"
composer -q global require $prefix$release 2>&1 | out-null
if($?) {
Add-Log $tick $tool "Added"
} else {
Add-Log $cross $tool "Could not setup $tool"
}
@ -393,5 +368,4 @@ if($version -lt "5.5") {
Enable-PhpExtension -Extension openssl, curl, opcache, mbstring -Path $php_dir
}
Update-PhpCAInfo -Path $php_dir -Source $cert_source
Move-Item -path $dist\..\src\configs\*.json -Destination $env:RUNNER_TOOL_CACHE
Add-Log $tick "PHP" "$status PHP $($installed.FullVersion)"

View File

@ -167,7 +167,7 @@ export async function addPhive(
case 'latest':
return (
(await utils.getCommand(os_version, 'tool')) +
'https://phar.io/releases/phive.phar phive status'
'https://phar.io/releases/phive.phar phive'
);
default:
return (
@ -176,7 +176,7 @@ export async function addPhive(
version +
'/phive-' +
version +
'.phar phive status'
'.phar phive'
);
}
}
@ -334,7 +334,7 @@ export async function getCleanedToolsList(
return extension
.trim()
.replace(
/-agent|behat\/|hirak\/|icanhazstring\/|laravel\/|narrowspark\/automatic-|overtrue\/|phpspec\/|robmorgan\/|symfony\//,
/-agent|hirak\/|laravel\/|narrowspark\/automatic-|overtrue\/|robmorgan\/|symfony\//,
''
);
})
@ -348,18 +348,13 @@ export async function getCleanedToolsList(
* @param tool
* @param url
* @param os_version
* @param ver_param
*/
export async function addArchive(
tool: string,
url: string,
os_version: string,
ver_param: string
os_version: string
): Promise<string> {
return (
(await utils.getCommand(os_version, 'tool')) +
(await utils.joins(url, tool, ver_param))
);
return (await utils.getCommand(os_version, 'tool')) + url + ' ' + tool;
}
/**
@ -374,8 +369,13 @@ export async function addDevTools(
): Promise<string> {
switch (os_version) {
case 'linux':
return (
'add_devtools' +
'\n' +
(await utils.addLog('$tick', tool, 'Added', 'linux'))
);
case 'darwin':
return 'add_devtools ' + tool;
return await utils.addLog('$tick', tool, 'Added', 'darwin');
case 'win32':
return await utils.addLog(
'$cross',
@ -445,28 +445,24 @@ export async function addTools(
case 'protoc':
script += await utils.customPackage(tool, 'tools', version, os_version);
break;
case 'behat':
case 'phpspec':
script += await addPackage(tool, release, tool + '/', os_version);
break;
case 'blackfire-player':
url = await getPharUrl('https://get.blackfire.io', tool, 'v', version);
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'codeception':
url =
'https://codeception.com/' +
(await getCodeceptionUri(version, php_version));
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer':
url = await getComposerUrl(version);
script += await addArchive('composer', url, os_version, version);
script += await addArchive('composer', url, os_version);
break;
case 'composer-normalize':
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'ergebnis/composer-normalize/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer-prefetcher':
script += await addPackage(
@ -479,37 +475,39 @@ export async function addTools(
case 'composer-require-checker':
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'maglnet/ComposerRequireChecker/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'composer-unused':
script += await addPackage(tool, release, 'icanhazstring/', os_version);
uri = await getUri(tool, '.phar', version, 'releases', '', 'download');
url = github + 'composer-unused/composer-unused/' + uri;
script += await addArchive(tool, url, os_version);
break;
case 'cs2pr':
uri = await getUri(tool, '', version, 'releases', '', 'download');
url = github + 'staabm/annotate-pull-request-from-checkstyle/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'deployer':
url = await getDeployerUrl(version);
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'flex':
script += await addPackage(tool, release, 'symfony/', os_version);
break;
case 'infection':
url = github + 'infection/infection/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'pecl':
script += await utils.getCommand(os_version, 'pecl');
break;
case 'phan':
url = github + 'phan/phan/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'phing':
url = 'https://www.phing.info/get/phing-' + version + '.phar';
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'phinx':
script += await addPackage(tool, release, 'robmorgan/', os_version);
@ -524,48 +522,48 @@ export async function addTools(
case 'php-cs-fixer':
uri = await getUri(tool, '.phar', version, 'releases', 'v', 'download');
url = github + 'FriendsOfPHP/PHP-CS-Fixer/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'phpcbf':
case 'phpcs':
url = github + 'squizlabs/PHP_CodeSniffer/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phpcpd':
case 'phpunit':
url = await getPharUrl('https://phar.phpunit.de', tool, '', version);
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phplint':
script += await addPackage(tool, release, 'overtrue/', os_version);
break;
case 'phpmd':
url = github + 'phpmd/phpmd/' + uri;
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
case 'phpstan':
url = github + 'phpstan/phpstan/' + uri;
script += await addArchive(tool, url, os_version, '"-V"');
script += await addArchive(tool, url, os_version);
break;
case 'prestissimo':
script += await addPackage(tool, release, 'hirak/', os_version);
break;
case 'psalm':
url = github + 'vimeo/psalm/' + uri;
script += await addArchive(tool, url, os_version, '"-v"');
script += await addArchive(tool, url, os_version);
break;
case 'symfony':
case 'symfony-cli':
uri = await getSymfonyUri(version, os_version);
url = github + 'symfony/cli/' + uri;
script += await addArchive('symfony', url, os_version, 'version');
script += await addArchive('symfony', url, os_version);
break;
case 'vapor-cli':
script += await addPackage(tool, release, 'laravel/', os_version);
break;
case 'wp-cli':
url = github + (await getWpCliUrl(version));
script += await addArchive(tool, url, os_version, '"--version"');
script += await addArchive(tool, url, os_version);
break;
default:
script += await utils.addLog(

View File

@ -2,21 +2,6 @@ import * as fs from 'fs';
import * as path from 'path';
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.
*
@ -27,36 +12,13 @@ export async function getInput(
name: string,
mandatory: boolean
): Promise<string> {
const input = core.getInput(name);
const env_input = await readEnv(name);
switch (true) {
case input != '':
const input = process.env[name];
switch (input) {
case '':
case undefined:
return core.getInput(name, {required: mandatory});
default:
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';
}
}
}
@ -377,27 +339,6 @@ export async function scriptExtension(os_version: string): Promise<string> {
}
}
/**
* Function to get script tool
*
* @param os_version
*/
export async function scriptTool(os_version: string): Promise<string> {
switch (os_version) {
case 'win32':
return 'pwsh';
case 'linux':
case 'darwin':
return 'bash';
default:
return await log(
'Platform ' + os_version + ' is not supported',
os_version,
'error'
);
}
}
/**
* Function to get script to add tools with custom support.
*