mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-02 05:03:17 +07:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
0585c3d59d | |||
7e62bc926b |
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"env": { "node": true, "jest": true },
|
"env": { "node": true, "jest": true },
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"parserOptions": { "ecmaVersion": 2021, "sourceType": "module" },
|
"parserOptions": { "ecmaVersion": 2020, "sourceType": "module" },
|
||||||
"extends": [
|
"extends": [
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
"plugin:@typescript-eslint/eslint-recommended",
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
@ -10,7 +10,14 @@
|
|||||||
"plugin:import/warnings",
|
"plugin:import/warnings",
|
||||||
"plugin:import/typescript",
|
"plugin:import/typescript",
|
||||||
"plugin:prettier/recommended",
|
"plugin:prettier/recommended",
|
||||||
"prettier"
|
"prettier/@typescript-eslint"
|
||||||
],
|
],
|
||||||
"plugins": ["@typescript-eslint", "jest"]
|
"plugins": ["@typescript-eslint", "jest"],
|
||||||
|
"rules": {
|
||||||
|
"camelcase": "off",
|
||||||
|
"require-atomic-updates": "off",
|
||||||
|
"@typescript-eslint/ban-ts-ignore": "off",
|
||||||
|
"@typescript-eslint/camelcase": "off",
|
||||||
|
"@typescript-eslint/no-unused-vars": "off"
|
||||||
|
}
|
||||||
}
|
}
|
83
.github/CONTRIBUTING.md
vendored
83
.github/CONTRIBUTING.md
vendored
@ -1,82 +1,63 @@
|
|||||||
# Contributing to setup-php
|
# Contributing to setup-php
|
||||||
|
|
||||||
## Welcome!
|
|
||||||
|
|
||||||
We look forward to your contributions! Here are some examples how you can contribute:
|
|
||||||
|
|
||||||
* [Ask any questions you may have](https://github.com/shivammathur/setup-php/discussions/new?category=Q-A-Help)
|
|
||||||
* [Report a bug](https://github.com/shivammathur/setup-php/issues/new?labels=type/bug&template=bug.md)
|
|
||||||
* [Propose a new feature](https://github.com/shivammathur/setup-php/issues/new?labels=enhancement&template=feature.md)
|
|
||||||
* [Send a pull request](https://github.com/shivammathur/setup-php/pulls)
|
|
||||||
|
|
||||||
## Contributor Code of Conduct
|
## Contributor Code of Conduct
|
||||||
|
|
||||||
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
|
||||||
|
|
||||||
## Getting Started
|
## Workflow
|
||||||
|
|
||||||
To get started fork `setup-php` and clone it using git:
|
* Fork the project.
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/<your-username>/setup-php.git
|
|
||||||
|
|
||||||
cd setup-php
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are using `Windows` configure `git` to handle line endings.
|
|
||||||
|
|
||||||
```cmd
|
|
||||||
git config --local core.autocrlf true
|
|
||||||
```
|
|
||||||
|
|
||||||
Install `setup-php` dependencies using [npm](https://www.npmjs.com/):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
## Workflow to create Pull Requests
|
|
||||||
|
|
||||||
* Fork the `setup-php` project and clone it.
|
|
||||||
* Create a new branch from the develop branch.
|
|
||||||
* Make your bug fix or feature addition.
|
* 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.
|
||||||
* Ensure the test suite passes and the code complies with our coding guidelines (see below).
|
* Send a pull request to the develop branch.
|
||||||
* Send a pull request to the develop branch with all the details.
|
|
||||||
* If possible, create a GitHub Actions workflow with an integration test for the change in a demo repository and link it in your pull request.
|
|
||||||
|
|
||||||
Please make sure that you have [set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project.
|
Please make sure that you have [set up your user name and email address](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) for use with Git. Strings such as `silly nick name <root@localhost>` look really stupid in the commit history of a project.
|
||||||
|
|
||||||
Due to time constraints, you may not always get a quick response. Please do not take delays personally and feel free to remind.
|
Due to time constraints, you may not always get a quick response. Please do not take delays personal and feel free to remind.
|
||||||
|
|
||||||
## Coding Guidelines
|
## Coding Guidelines
|
||||||
|
|
||||||
This project comes with `.prettierrc.json` and `eslintrc.json` configuration files. Please run the following commands to fix and verify the code quality.
|
This project comes with `.prettierrc.json` and `eslintrc.json` configuration files. Please run the following commands to format the code before committing it.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run format
|
$ npm run format
|
||||||
npm run lint
|
$ npm run lint
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running the test suite
|
## Using setup-php from a Git checkout
|
||||||
|
|
||||||
|
The following commands can be used to perform the initial checkout of setup-php:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone https://github.com/shivammathur/setup-php.git
|
||||||
|
|
||||||
|
$ cd setup-php
|
||||||
|
```
|
||||||
|
|
||||||
|
Install setup-php dependencies using [npm](https://www.npmjs.com/):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Running the test suite
|
||||||
|
|
||||||
After following the steps shown above, The `setup-php` tests in the `__tests__` directory can be run using this command:
|
After following the steps shown above, The `setup-php` tests in the `__tests__` directory can be run using this command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm test
|
$ npm test
|
||||||
```
|
```
|
||||||
|
|
||||||
### Creating a release
|
## Creating a release
|
||||||
|
|
||||||
Creating a release means compiling all the TypeScript code to a single file which `setup-php` can run. Run this, before you push your changes.
|
Create a release before you push your changes.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run release
|
$ npm run release
|
||||||
```
|
```
|
||||||
|
|
||||||
### Reporting issues and discussions
|
## Reporting issues
|
||||||
|
|
||||||
For questions or support, we prefer GitHub Discussions. For any bugs or new features you can create an issue using the appropriate template:
|
Please submit the issue using the appropriate template provided for a bug report or a feature request:
|
||||||
|
|
||||||
* [Discussions](https://github.com/shivammathur/setup-php/discussions)
|
* [Issues](https://github.com/shivammathur/setup-php/issues)
|
||||||
* [Issues](https://github.com/shivammathur/setup-php/issues)
|
|
5
.github/FUNDING.yml
vendored
5
.github/FUNDING.yml
vendored
@ -1,3 +1,8 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: shivammathur
|
github: shivammathur
|
||||||
|
community_bridge: setup-php
|
||||||
|
issuehunt: shivammathur
|
||||||
|
patreon: shivammathur
|
||||||
|
liberapay: shivammathur
|
||||||
|
custom: https://www.paypal.me/shivammathur
|
||||||
|
42
.github/ISSUE_TEMPLATE/bug.md
vendored
42
.github/ISSUE_TEMPLATE/bug.md
vendored
@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Nice, you found a bug!
|
|
||||||
title: ''
|
|
||||||
labels: 'bug'
|
|
||||||
assignees: 'shivammathur'
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
<!-- Please describe the bug concisely. -->
|
|
||||||
|
|
||||||
**Version**
|
|
||||||
- [ ] I have checked releases, and the bug exists in the latest patch version of `v1` or `v2`.
|
|
||||||
- [ ] `v2`
|
|
||||||
- [ ] `v1`
|
|
||||||
|
|
||||||
**Runners**
|
|
||||||
<!-- Please mark the GitHub Action runner your workflow uses. -->
|
|
||||||
- [ ] GitHub Hosted
|
|
||||||
- [ ] Self Hosted
|
|
||||||
|
|
||||||
**Operating systems**
|
|
||||||
<!-- Please mention the operating systems your workflow uses. -->
|
|
||||||
|
|
||||||
**PHP versions**
|
|
||||||
<!-- Please mention the PHP versions your workflow uses. -->
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
<!-- Please provide the relevant steps of your workflow `.yml` file. -->
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
<!-- A clear and concise description of what you expected to happen. -->
|
|
||||||
|
|
||||||
**Screenshots/Logs**
|
|
||||||
<!-- If applicable, add screenshots or logs to help explain your problem. -->
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
<!-- Add any other context about the problem here. -->
|
|
||||||
|
|
||||||
**Are you willing to submit a PR?**
|
|
||||||
<!-- We accept pull requests targeting the develop branch. -->
|
|
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
23
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Please provide the GitHub Action `.yml` file.
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
26
.github/ISSUE_TEMPLATE/feature.md
vendored
26
.github/ISSUE_TEMPLATE/feature.md
vendored
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest a new feature
|
|
||||||
title: ''
|
|
||||||
labels: 'enhancement'
|
|
||||||
assignees: 'shivammathur'
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the feature**
|
|
||||||
<!-- 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`.
|
|
||||||
|
|
||||||
**Underlying issue**
|
|
||||||
<!-- Please describe the issue this would solve. -->
|
|
||||||
|
|
||||||
**Describe alternatives**
|
|
||||||
<!-- Please mention any alternative solutions you've considered. -->
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
<!-- Add any other context or screenshots about the feature request here. -->
|
|
||||||
|
|
||||||
**Are you willing to submit a PR?**
|
|
||||||
<!-- We accept pull requests targeting the develop branch. -->
|
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I want to improve [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -5,15 +5,16 @@ 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,
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
> so that the development can be pointed in the intended direction.
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
Related discussion: <!-- Please link the related discussion -->
|
Related issue:
|
||||||
|
|
||||||
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
> Thank you for your contribution.
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
### Description
|
### Description
|
||||||
|
|
||||||
@ -25,12 +26,7 @@ This PR [briefly explain what it does]
|
|||||||
- [ ] I have run `npm run format` before the commit.
|
- [ ] I have run `npm run format` before the commit.
|
||||||
- [ ] I have run `npm run lint` before the commit.
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
- [ ] I have run `npm run release` before the commit.
|
- [ ] I have run `npm run release` before the commit.
|
||||||
- [ ] `npm test` returns with no unit test errors and all code covered.
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
> In case this PR edits any scripts:
|
|
||||||
|
|
||||||
- [ ] I have checked the edited scripts for syntax.
|
|
||||||
- [ ] I have tested the changes in an integration test (If yes, provide workflow YAML and link).
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
- Please target the develop branch when submitting the pull request.
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/FIX.md
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: 🐞 Bug Fix
|
||||||
|
about: You have a fix for a bug?
|
||||||
|
labels: bug
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/IMPROVEMENT.md
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: ⚙ Improvement
|
||||||
|
about: You have some improvement to make setup-php better?
|
||||||
|
labels: enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
Normal file
33
.github/PULL_REQUEST_TEMPLATE/NEW_FEATURE.md
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: 🎉 New Feature
|
||||||
|
about: You have implemented some neat idea that you want to make part of setup-php?
|
||||||
|
labels: enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Pull Request should be associated with an Issue.
|
||||||
|
|
||||||
|
> We wish to have discussions in Issues. A single issue may be targeted by multiple PRs.
|
||||||
|
> If you're offering a new feature or fixing anything, we'd like to know beforehand in Issues,
|
||||||
|
> and potentially we'll be able to point development in a particular direction.
|
||||||
|
|
||||||
|
Related issue:
|
||||||
|
|
||||||
|
> Further notes in [Contribution Guidelines](.github/CONTRIBUTING.md)
|
||||||
|
> Thank you! We are open to PRs, but please understand if for technical reasons we are unable to accept each and any PR
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
This PR [briefly explain what it does]
|
||||||
|
|
||||||
|
> In case this PR introduced TypeScript/JavaScript code changes:
|
||||||
|
|
||||||
|
- [ ] I have written test cases for the changes in this pull request.
|
||||||
|
- [ ] I have run `npm run format` before the commit.
|
||||||
|
- [ ] I have run `npm run lint` before the commit.
|
||||||
|
- [ ] I have run `npm run release` before the commit.
|
||||||
|
- [ ] `npm test` returns with no unit test errors.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
- Please target the develop branch when submitting the pull request.
|
||||||
|
-->
|
25
.github/SECURITY.md
vendored
25
.github/SECURITY.md
vendored
@ -1,25 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
The latest patch versions of `v1` and `v2` releases of this project are supported for security updates.
|
|
||||||
|
|
||||||
## Supported PHP Versions
|
|
||||||
|
|
||||||
This security policy only applies to the latest patches of the following PHP versions.
|
|
||||||
|
|
||||||
| Version | Supported |
|
|
||||||
|---------|--------------------|
|
|
||||||
| 7.4 | :white_check_mark: |
|
|
||||||
| 8.0 | :white_check_mark: |
|
|
||||||
| 8.1 | :white_check_mark: |
|
|
||||||
| 8.2 | :white_check_mark: |
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
If you have found any issues that might have security implications in the versions supported, please send a report privately to [contact@shivammathur.com](mailto:contact@shivammathur.com).
|
|
||||||
Do not report security reports publicly.
|
|
||||||
|
|
||||||
## Tidelift
|
|
||||||
|
|
||||||
If you use this GitHub Action through a Tidelift subscription, please refer to [https://tidelift.com/security](https://tidelift.com/security).
|
|
4
.github/codeql/codeql-configuration.yml
vendored
4
.github/codeql/codeql-configuration.yml
vendored
@ -1,4 +0,0 @@
|
|||||||
name : CodeQL Configuration
|
|
||||||
|
|
||||||
paths:
|
|
||||||
- './src'
|
|
7
.github/dependabot.yml
vendored
7
.github/dependabot.yml
vendored
@ -1,7 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
target-branch: "develop"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
32
.github/workflows/codeql.yml
vendored
32
.github/workflows/codeql.yml
vendored
@ -1,32 +0,0 @@
|
|||||||
name: CodeQL Workflow
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 15 * * 6'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
codeql:
|
|
||||||
permissions:
|
|
||||||
actions: read # for github/codeql-action/init to get workflow details
|
|
||||||
contents: read # for actions/checkout to fetch code
|
|
||||||
security-events: write # for github/codeql-action/autobuild to send a status report
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 2
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
config-file: ./.github/codeql/codeql-configuration.yml
|
|
||||||
languages: javascript
|
|
||||||
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v2
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
92
.github/workflows/docs.yml
vendored
92
.github/workflows/docs.yml
vendored
@ -1,92 +0,0 @@
|
|||||||
name: Docs workflow
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 15 * * 6'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
create:
|
|
||||||
permissions:
|
|
||||||
contents: none
|
|
||||||
name: Create
|
|
||||||
runs-on: ${{ matrix.operating-system }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
operating-system: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2022, macos-11]
|
|
||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
|
||||||
steps:
|
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-versions }}
|
|
||||||
- name: Create for Linux and macOS
|
|
||||||
env:
|
|
||||||
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
|
||||||
version: ${{ matrix.php-versions }}
|
|
||||||
if: matrix.operating-system != 'windows-2022'
|
|
||||||
run: |
|
|
||||||
echo "## PHP $version" >> "$file"
|
|
||||||
printf "\n" >> "$file"
|
|
||||||
echo "\`\`\`" >> "$file"
|
|
||||||
php -m >> "$file"
|
|
||||||
echo "\`\`\`" >> "$file"
|
|
||||||
printf "\n" >> "$file"
|
|
||||||
- name: Create for Windows
|
|
||||||
env:
|
|
||||||
file: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
|
||||||
version: ${{ matrix.php-versions }}
|
|
||||||
if: matrix.operating-system == 'windows-2022'
|
|
||||||
run: |
|
|
||||||
Write-Output "## PHP ${{ matrix.php-versions }}`n" | Out-File -FilePath "$env:file"
|
|
||||||
Write-Output "``````" | Out-File -FilePath "$env:file" -Append
|
|
||||||
php -m | Out-File -FilePath "$env:file" -Append
|
|
||||||
Write-Output "```````n" | Out-File -FilePath "$env:file" -Append
|
|
||||||
- name: Upload artifacts
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: lists
|
|
||||||
path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
|
|
||||||
update:
|
|
||||||
permissions:
|
|
||||||
contents: write # for Git to git push
|
|
||||||
name: Update
|
|
||||||
needs: create
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
repository: ${{ github.repository }}.wiki
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v3
|
|
||||||
with:
|
|
||||||
path: ${{ github.workspace }}
|
|
||||||
- name: Configure Git
|
|
||||||
run : |
|
|
||||||
git config --local user.email "${{ secrets.email }}"
|
|
||||||
git config --local user.name "${{ github.repository_owner }}"
|
|
||||||
- name: Combine
|
|
||||||
run: |
|
|
||||||
for os in ubuntu-22.04 ubuntu-20.04 ubuntu-18.04 windows-2022 windows-2019 macos-11 macos-10.15; do
|
|
||||||
echo "These are extensions which are loaded by default on the following PHP versions. More extensions which are available as packages and available on pecl are supported by setup-php. Refer to [php extension support](https://github.com/shivammathur/setup-php#heavy_plus_sign-php-extension-support) for more details." > Php-extensions-loaded-on-"$os".md
|
|
||||||
for version in 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2; do
|
|
||||||
if [ "$os" = "macos-10.15" ]; then
|
|
||||||
cat lists/php"$version"-macos-11.md >> Php-extensions-loaded-on-"$os".md
|
|
||||||
elif [ "$os" = "windows-2019" ]; then
|
|
||||||
cat lists/php"$version"-windows-2022.md >> Php-extensions-loaded-on-"$os".md
|
|
||||||
else
|
|
||||||
cat lists/php"$version"-"$os".md >> Php-extensions-loaded-on-"$os".md
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
rm -rf ./lists
|
|
||||||
- name: Update
|
|
||||||
run: |
|
|
||||||
if [ "$(git status --porcelain=v1 2>/dev/null | wc -l)" != "0" ]; then
|
|
||||||
git add .
|
|
||||||
git commit -m "Update PHP extensions on wiki - $(date +'%d-%m-%y')"
|
|
||||||
git push -f https://${{ github.repository_owner }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.wiki.git master || true
|
|
||||||
fi
|
|
110
.github/workflows/experimental-workflow.yml
vendored
Normal file
110
.github/workflows/experimental-workflow.yml
vendored
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
name: Experimental workflow
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- verbose
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
- 'examples/**'
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- nightly
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- verbose
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
- 'examples/**'
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
name: Run
|
||||||
|
runs-on: ${{ matrix.operating-system }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
php-versions: ['8.0']
|
||||||
|
env:
|
||||||
|
extensions: xml, opcache, xdebug, pcov
|
||||||
|
key: cache-v2
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Prettier Format Check
|
||||||
|
run: npm run format-check
|
||||||
|
|
||||||
|
- name: ESLint Check
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: Send Coverage
|
||||||
|
continue-on-error: true
|
||||||
|
timeout-minutes: 1
|
||||||
|
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}
|
||||||
|
|
||||||
|
- name: Setup cache environment
|
||||||
|
id: cache-env
|
||||||
|
uses: shivammathur/cache-extensions@develop
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
key: ${{ env.key }}
|
||||||
|
|
||||||
|
- name: Cache extensions
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ${{ steps.cache-env.outputs.dir }}
|
||||||
|
key: ${{ steps.cache-env.outputs.key }}
|
||||||
|
restore-keys: ${{ steps.cache-env.outputs.key }}
|
||||||
|
|
||||||
|
- name: Setup PHP with extensions and custom config
|
||||||
|
run: node dist/index.js
|
||||||
|
env:
|
||||||
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
extensions: ${{ env.extensions }}
|
||||||
|
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata
|
||||||
|
coverage: pcov
|
||||||
|
|
||||||
|
- name: Testing PHP version
|
||||||
|
run: |
|
||||||
|
php -v
|
||||||
|
php -r "if(strpos(phpversion(), '${{ matrix.php-versions }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
||||||
|
|
||||||
|
- name: Testing Composer version
|
||||||
|
run: |
|
||||||
|
composer -V
|
||||||
|
php -r "if(strpos(@exec('composer -V'), 'Composer version') === false) {throw new Exception('Composer not found');}"
|
||||||
|
- name: Testing Extensions
|
||||||
|
run: |
|
||||||
|
php -m
|
||||||
|
php -r "if(! extension_loaded('mbstring')) {throw new Exception('mbstring not found');}"
|
||||||
|
php -r "if(! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
||||||
|
- name: Testing ini values
|
||||||
|
run: |
|
||||||
|
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
||||||
|
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
||||||
|
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
||||||
|
- name: Test JIT
|
||||||
|
run: |
|
||||||
|
php -r "if(! extension_loaded('Zend OPcache')) {throw new Exception('Zend OPcache not found');}"
|
||||||
|
php -r "if(ini_get('opcache.jit_buffer_size')!='256M') {throw new Exception('opcache.jit_buffer_size not set');}"
|
||||||
|
php -r "if(ini_get('opcache.jit')!=1235) {throw new Exception('opcache.jit not set');}"
|
||||||
|
php -r "if(ini_get('pcre.jit')!=1) {throw new Exception('pcre.jit not set');}"
|
||||||
|
- name: Benchmark JIT
|
||||||
|
run: |
|
||||||
|
curl -o bench.php https://raw.githubusercontent.com/php/php-src/master/Zend/bench.php
|
||||||
|
php bench.php
|
63
.github/workflows/node.yml
vendored
63
.github/workflows/node.yml
vendored
@ -1,63 +0,0 @@
|
|||||||
name: Node workflow
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
- verbose
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
- 'examples/**'
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
- verbose
|
|
||||||
paths-ignore:
|
|
||||||
- '**.md'
|
|
||||||
- 'examples/**'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
run:
|
|
||||||
name: Run
|
|
||||||
runs-on: ${{ matrix.operating-system }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 2
|
|
||||||
|
|
||||||
- name: Setup Node.js 16.x
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 16.x
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: npm install
|
|
||||||
|
|
||||||
- name: Prettier Format Check
|
|
||||||
run: npm run format-check
|
|
||||||
|
|
||||||
- name: ESLint Check
|
|
||||||
run: npm run lint
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: npm test
|
|
||||||
|
|
||||||
- name: Run npm audit
|
|
||||||
run: npm audit
|
|
||||||
|
|
||||||
- name: Send Coverage
|
|
||||||
uses: codecov/codecov-action@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
files: coverage/lcov.info
|
|
||||||
name: github-actions-codecov-${{ matrix.operating-system }}
|
|
||||||
fail_ci_if_error: false
|
|
||||||
verbose: true
|
|
62
.github/workflows/publish.yml
vendored
62
.github/workflows/publish.yml
vendored
@ -1,62 +0,0 @@
|
|||||||
name: Publish Package
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [created]
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
skip:
|
|
||||||
description: Skip release to repository
|
|
||||||
required: false
|
|
||||||
tag:
|
|
||||||
description: Tag name
|
|
||||||
required: true
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
packages: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout release
|
|
||||||
if: github.event_name != 'workflow_dispatch'
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Checkout tag
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
with:
|
|
||||||
ref: ${{ github.event.inputs.tag }}
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: '16.x'
|
|
||||||
registry-url: https://registry.npmjs.org
|
|
||||||
|
|
||||||
- name: Install dependencies and add lib
|
|
||||||
run: |
|
|
||||||
npm install
|
|
||||||
npm run build
|
|
||||||
sed -i -e '/lib\//d' .gitignore
|
|
||||||
|
|
||||||
- name: Publish to NPM
|
|
||||||
if: "!contains(github.event.inputs.skip, 'skip-npm')"
|
|
||||||
run: npm publish --access public
|
|
||||||
env:
|
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
|
|
||||||
- name: Change to GitHub Packages registry
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
registry-url: https://npm.pkg.github.com
|
|
||||||
scope: '@shivammathur'
|
|
||||||
|
|
||||||
- name: Patch package.json
|
|
||||||
run: |
|
|
||||||
sed -i 's#"name": "#"name": "@shivammathur/#' package.json
|
|
||||||
|
|
||||||
- name: Publish to GitHub Packages
|
|
||||||
if: "!contains(github.event.inputs.skip, 'skip-github-packages')"
|
|
||||||
run: npm publish
|
|
||||||
env:
|
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@ -1,6 +1,5 @@
|
|||||||
name: Main workflow
|
name: Main workflow
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
@ -17,9 +16,6 @@ on:
|
|||||||
paths-ignore:
|
paths-ignore:
|
||||||
- '**.md'
|
- '**.md'
|
||||||
- 'examples/**'
|
- 'examples/**'
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
run:
|
run:
|
||||||
name: Run
|
name: Run
|
||||||
@ -27,14 +23,36 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2019, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4']
|
||||||
env:
|
env:
|
||||||
extensions: xml, opcache, xdebug, pcov
|
extensions: xml, opcache, xdebug, pcov
|
||||||
key: cache-v5
|
key: cache-v2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Prettier Format Check
|
||||||
|
run: npm run format-check
|
||||||
|
|
||||||
|
- name: ESLint Check
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: Send Coverage
|
||||||
|
continue-on-error: true
|
||||||
|
timeout-minutes: 1
|
||||||
|
run: curl -s https://codecov.io/bash | bash -s -- -t ${{secrets.CODECOV_TOKEN}} -f coverage/clover.xml -n github-actions-codecov-${{ matrix.operating-system }}-php${{ matrix.php-versions }}
|
||||||
|
|
||||||
- name: Setup cache environment
|
- name: Setup cache environment
|
||||||
id: cache-env
|
id: cache-env
|
||||||
@ -45,7 +63,7 @@ jobs:
|
|||||||
key: ${{ env.key }}
|
key: ${{ env.key }}
|
||||||
|
|
||||||
- name: Cache extensions
|
- name: Cache extensions
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.cache-env.outputs.dir }}
|
path: ${{ steps.cache-env.outputs.dir }}
|
||||||
key: ${{ steps.cache-env.outputs.key }}
|
key: ${{ steps.cache-env.outputs.key }}
|
||||||
@ -75,7 +93,6 @@ jobs:
|
|||||||
php -r "if(phpversion()>=7.1 && ! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
php -r "if(phpversion()>=7.1 && ! extension_loaded('pcov')) {throw new Exception('PCOV not found');}"
|
||||||
- name: Testing ini values
|
- name: Testing ini values
|
||||||
run: |
|
run: |
|
||||||
php -r "if(ini_get('memory_limit')!='-1') {throw new Exception('memory_limit not disabled');}"
|
|
||||||
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}"
|
||||||
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}"
|
||||||
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}"
|
@ -1,12 +1,11 @@
|
|||||||
{
|
{
|
||||||
"arrowParens": "avoid",
|
|
||||||
"bracketSpacing": false,
|
|
||||||
"endOfLine": "auto",
|
|
||||||
"parser": "typescript",
|
|
||||||
"printWidth": 80,
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"useTabs": false,
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"tabWidth": 2,
|
|
||||||
"trailingComma": "none",
|
"trailingComma": "none",
|
||||||
"useTabs": false
|
"bracketSpacing": false,
|
||||||
}
|
"arrowParens": "avoid",
|
||||||
|
"parser": "typescript"
|
||||||
|
}
|
2
LICENSE
2
LICENSE
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) shivammathur and contributors
|
Copyright (c) 2019-2020 shivammathur and contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -1,16 +1,52 @@
|
|||||||
import * as config from '../src/config';
|
import * as config from '../src/config';
|
||||||
|
|
||||||
describe('Config tests', () => {
|
describe('Config tests', () => {
|
||||||
it.each`
|
it('checking addINIValuesOnWindows', async () => {
|
||||||
ini_values | os | output
|
let win32: string = await config.addINIValues(
|
||||||
${'a=b, c=d'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=b\nc=d"'}
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
${'a=b, c=d'} | ${'linux'} | ${'echo "a=b\nc=d" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'}
|
'win32'
|
||||||
${'a=b, c=d'} | ${'darwin'} | ${'echo "a=b\nc=d" | sudo tee -a "${pecl_file:-${ini_file[@]}}"'}
|
);
|
||||||
${'a=b & ~c'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=\'b & ~c\'"'}
|
expect(win32).toContain(
|
||||||
${'a="~(b)"'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=\'~(b)\'"'}
|
'Add-Content C:\\tools\\php\\php.ini "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||||
${'a="b, c"'} | ${'win32'} | ${'Add-Content "$php_dir\\php.ini" "a=b, c"'}
|
);
|
||||||
${'a=b, c=d'} | ${'openbsd'} | ${'Platform openbsd is not supported'}
|
|
||||||
`('checking addINIValues on $os', async ({ini_values, os, output}) => {
|
win32 = await config.addINIValues(
|
||||||
expect(await config.addINIValues(ini_values, os)).toContain(output);
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
|
'fedora'
|
||||||
|
);
|
||||||
|
expect(win32).toContain('Platform fedora is not supported');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addINIValuesOnLinux', async () => {
|
||||||
|
let linux: string = await config.addINIValues(
|
||||||
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
|
'linux',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
expect(linux).toContain(
|
||||||
|
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||||
|
);
|
||||||
|
|
||||||
|
linux = await config.addINIValues(
|
||||||
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
|
'fedora'
|
||||||
|
);
|
||||||
|
expect(linux).toContain('Platform fedora is not supported');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addINIValuesOnDarwin', async () => {
|
||||||
|
let darwin: string = await config.addINIValues(
|
||||||
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain(
|
||||||
|
'echo "post_max_size=256M\nshort_open_tag=On\ndate.timezone=Asia/Kolkata"'
|
||||||
|
);
|
||||||
|
|
||||||
|
darwin = await config.addINIValues(
|
||||||
|
'post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata',
|
||||||
|
'fedora'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,44 +1,97 @@
|
|||||||
import * as coverage from '../src/coverage';
|
import * as coverage from '../src/coverage';
|
||||||
|
|
||||||
|
jest.mock('../src/extensions', () => ({
|
||||||
|
addExtension: jest.fn().mockImplementation(extension => {
|
||||||
|
return 'add_extension ' + extension + '\n';
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
|
||||||
describe('Config tests', () => {
|
describe('Config tests', () => {
|
||||||
it.each`
|
it('checking addCoverage with PCOV on windows', async () => {
|
||||||
driver | php | os | output
|
let win32: string = await coverage.addCoverage('PCOV', '7.4', 'win32');
|
||||||
${'PCOV'} | ${'7.4'} | ${'win32'} | ${'Add-Extension pcov,Disable-Extension xdebug false'}
|
expect(win32).toContain('add_extension pcov');
|
||||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'$pcov_version = php -r "echo phpversion(\'pcov\');"'}
|
expect(win32).toContain('Remove-Extension xdebug');
|
||||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'PCOV $pcov_version enabled as coverage driver'}
|
|
||||||
${'pcov'} | ${'7.0'} | ${'win32'} | ${'PHP 7.1 or newer is required'}
|
win32 = await coverage.addCoverage('pcov', '7.0', 'win32');
|
||||||
${'pcov'} | ${'5.6'} | ${'win32'} | ${'PHP 7.1 or newer is required'}
|
expect(win32).toContain('PHP 7.1 or newer is required');
|
||||||
${'pcov'} | ${'7.4'} | ${'win32'} | ${'Add-Extension pcov,Disable-Extension xdebug false'}
|
|
||||||
${'pcov'} | ${'7.4'} | ${'linux'} | ${'add_extension pcov,disable_extension xdebug false'}
|
win32 = await coverage.addCoverage('pcov', '5.6', 'win32');
|
||||||
${'pcov'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension pcov,disable_extension xdebug false'}
|
expect(win32).toContain('PHP 7.1 or newer is required');
|
||||||
${'xdebug'} | ${'7.4'} | ${'win32'} | ${'Add-Extension xdebug'}
|
});
|
||||||
${'xdebug3'} | ${'7.1'} | ${'win32'} | ${'xdebug3 is not supported on PHP 7.1'}
|
|
||||||
${'xdebug2'} | ${'7.4'} | ${'win32'} | ${'Add-Extension xdebug stable 2.9.8'}
|
it('checking addCoverage with PCOV on linux', async () => {
|
||||||
${'xdebug'} | ${'8.0'} | ${'linux'} | ${'add_extension xdebug'}
|
const linux: string = await coverage.addCoverage('pcov', '7.4', 'linux');
|
||||||
${'xdebug3'} | ${'8.0'} | ${'linux'} | ${'add_extension xdebug'}
|
expect(linux).toContain('add_extension pcov');
|
||||||
${'xdebug2'} | ${'7.4'} | ${'linux'} | ${'add_pecl_extension xdebug 2.9.8 zend_extension'}
|
expect(linux).toContain('remove_extension xdebug');
|
||||||
${'xdebug'} | ${'7.4'} | ${'linux'} | ${'xdebug_version="$(php -r "echo phpversion(\'xdebug\');")"'}
|
});
|
||||||
${'xdebug'} | ${'7.4'} | ${'linux'} | ${'Xdebug $xdebug_version enabled as coverage driver'}
|
|
||||||
${'xdebug'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension xdebug'}
|
it('checking addCoverage with PCOV on darwin', async () => {
|
||||||
${'xdebug3'} | ${'7.1'} | ${'darwin'} | ${'xdebug3 is not supported on PHP 7.1'}
|
const darwin: string = await coverage.addCoverage('pcov', '7.4', 'darwin');
|
||||||
${'xdebug2'} | ${'7.4'} | ${'darwin'} | ${'add_brew_extension xdebug2'}
|
expect(darwin).toContain('add_extension pcov');
|
||||||
${'xdebug2'} | ${'8.0'} | ${'darwin'} | ${'xdebug2 is not supported on PHP 8.0'}
|
expect(darwin).toContain('remove_extension xdebug');
|
||||||
${'none'} | ${'7.4'} | ${'win32'} | ${'Disable-Extension xdebug false,Disable-Extension pcov false'}
|
});
|
||||||
${'none'} | ${'7.4'} | ${'linux'} | ${'disable_extension xdebug false,disable_extension pcov false'}
|
|
||||||
${'none'} | ${'7.4'} | ${'darwin'} | ${'disable_extension xdebug false,disable_extension pcov false'}
|
it('checking addCoverage with Xdebug on windows', async () => {
|
||||||
${'nocov'} | ${'7.x'} | ${'any'} | ${''}
|
const win32: string = await coverage.addCoverage('xdebug', '7.4', 'win32');
|
||||||
${''} | ${'7.x'} | ${'any'} | ${''}
|
expect(win32).toContain('add_extension xdebug');
|
||||||
`(
|
});
|
||||||
'checking addCoverage with $driver on $os',
|
|
||||||
async ({driver, php, os, output}) => {
|
it('checking addCoverage with Xdebug on windows', async () => {
|
||||||
const script: string = await coverage.addCoverage(driver, php, os);
|
const win32: string = await coverage.addCoverage('xdebug', '8.0', 'win32');
|
||||||
if (output) {
|
expect(win32).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
||||||
output.split(',').forEach((command: string) => {
|
});
|
||||||
expect(script).toContain(command);
|
|
||||||
});
|
it('checking addCoverage with Xdebug on linux', async () => {
|
||||||
} else {
|
const linux: string = await coverage.addCoverage('xdebug', '7.4', 'linux');
|
||||||
expect(script).toEqual(output);
|
expect(linux).toContain('add_extension xdebug');
|
||||||
}
|
});
|
||||||
}
|
|
||||||
);
|
it('checking addCoverage with Xdebug on linux', async () => {
|
||||||
|
const linux: string = await coverage.addCoverage('xdebug', '8.0', 'linux');
|
||||||
|
expect(linux).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCoverage with Xdebug on darwin', async () => {
|
||||||
|
const darwin: string = await coverage.addCoverage(
|
||||||
|
'xdebug',
|
||||||
|
'7.4',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('add_extension xdebug');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addCoverage with Xdebug on darwin', async () => {
|
||||||
|
const darwin: string = await coverage.addCoverage(
|
||||||
|
'xdebug',
|
||||||
|
'8.0',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('Xdebug currently only supports PHP 7.4 or lower');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking disableCoverage windows', async () => {
|
||||||
|
const win32 = await coverage.addCoverage('none', '7.4', 'win32');
|
||||||
|
expect(win32).toContain('Remove-Extension xdebug');
|
||||||
|
expect(win32).toContain('Remove-Extension pcov');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking disableCoverage on linux', async () => {
|
||||||
|
const linux: string = await coverage.addCoverage('none', '7.4', 'linux');
|
||||||
|
expect(linux).toContain('remove_extension xdebug');
|
||||||
|
expect(linux).toContain('remove_extension pcov');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking disableCoverage on darwin', async () => {
|
||||||
|
const darwin: string = await coverage.addCoverage('none', '7.4', 'darwin');
|
||||||
|
expect(darwin).toContain('remove_extension xdebug');
|
||||||
|
expect(darwin).toContain('remove_extension pcov');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking no or invalid coverage driver', async () => {
|
||||||
|
let nocov: string = await coverage.addCoverage('nocov', '7.x', 'any');
|
||||||
|
expect(nocov).toEqual('');
|
||||||
|
|
||||||
|
nocov = await coverage.addCoverage('', '7.x', 'any');
|
||||||
|
expect(nocov).toEqual('');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,143 +1,152 @@
|
|||||||
import * as fs from 'fs';
|
|
||||||
import * as extensions from '../src/extensions';
|
import * as extensions from '../src/extensions';
|
||||||
|
|
||||||
describe('Extension tests', () => {
|
describe('Extension tests', () => {
|
||||||
it.each`
|
it('checking addExtensionOnWindows', async () => {
|
||||||
extension | version | output
|
let win32: string = await extensions.addExtension(
|
||||||
${'none'} | ${'7.4'} | ${'Disable-AllShared'}
|
'xdebug, pcov, phalcon4, ast-beta, grpc-1.2.3, inotify-1.2.3alpha2',
|
||||||
${':intl'} | ${'7.4'} | ${'Disable-Extension intl'}
|
'7.4',
|
||||||
${'ast-beta'} | ${'7.4'} | ${'Add-Extension ast beta'}
|
'win32'
|
||||||
${'blackfire'} | ${'7.3'} | ${'Add-Blackfire blackfire'}
|
);
|
||||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'Add-Blackfire blackfire-1.31.0'}
|
expect(win32).toContain('Add-Extension xdebug');
|
||||||
${'grpc-1.2.3'} | ${'7.4'} | ${'Add-Extension grpc stable 1.2.3'}
|
expect(win32).toContain('Add-Extension pcov');
|
||||||
${'inotify-1.2.3alpha2'} | ${'7.4'} | ${'Add-Extension inotify alpha 1.2.3'}
|
expect(win32).toContain('phalcon.ps1 phalcon4');
|
||||||
${'ioncube'} | ${'7.4'} | ${'Add-Ioncube'}
|
expect(win32).toContain('Add-Extension ast beta');
|
||||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'Add-Log "$cross" "mongodb-mongodb/mongo-php-driver@master" "mongodb-mongodb/mongo-php-driver@master is not supported on PHP 7.3"'}
|
expect(win32).toContain('Add-Extension grpc stable 1.2.3');
|
||||||
${'mysql'} | ${'7.4'} | ${'Add-Extension mysqli\nAdd-Extension mysqlnd'}
|
expect(win32).toContain('Add-Extension inotify alpha 1.2.3');
|
||||||
${'mysql'} | ${'5.5'} | ${'Add-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd'}
|
|
||||||
${'oci8'} | ${'7.4'} | ${'Add-Oci oci8'}
|
|
||||||
${'pcov'} | ${'5.6'} | ${'Add-Log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
|
||||||
${'pdo_oci'} | ${'7.4'} | ${'Add-Oci pdo_oci'}
|
|
||||||
${'pecl_http'} | ${'7.4'} | ${'Add-Http'}
|
|
||||||
${'phalcon3'} | ${'7.2'} | ${'Add-Phalcon phalcon3'}
|
|
||||||
${'phalcon4'} | ${'7.4'} | ${'Add-Phalcon phalcon4'}
|
|
||||||
${'sqlite'} | ${'7.4'} | ${'Add-Extension sqlite3'}
|
|
||||||
${'sqlsrv-1.2.3preview1'} | ${'7.4'} | ${'Add-Extension sqlsrv devel 1.2.3'}
|
|
||||||
${'Xdebug'} | ${'7.4'} | ${'Add-Extension xdebug'}
|
|
||||||
${'xdebug2'} | ${'7.2'} | ${'Add-Extension xdebug stable 2.9.8'}
|
|
||||||
`(
|
|
||||||
'checking addExtensionOnWindows for extension $extension on version $version',
|
|
||||||
async ({extension, version, output}) => {
|
|
||||||
expect(
|
|
||||||
await extensions.addExtension(extension, version, 'win32')
|
|
||||||
).toContain(output);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
it.each`
|
win32 = await extensions.addExtension(
|
||||||
extension | version | output
|
'phalcon3, does_not_exist',
|
||||||
${'none'} | ${'7.4'} | ${'disable_all_shared'}
|
'7.2',
|
||||||
${':intl'} | ${'7.4'} | ${'disable_extension intl'}
|
'win32',
|
||||||
${'ast-beta'} | ${'7.4'} | ${'add_unstable_extension ast beta extension'}
|
true
|
||||||
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
);
|
||||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
expect(win32).toContain('phalcon.ps1 phalcon3');
|
||||||
${'couchbase'} | ${'7.4'} | ${'add_couchbase'}
|
expect(win32).toContain('Add-Extension does_not_exist');
|
||||||
${'gearman'} | ${'5.6'} | ${'add_gearman'}
|
|
||||||
${'geos'} | ${'7.3'} | ${'add_geos'}
|
|
||||||
${'grpc-1.2.3'} | ${'7.4'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
|
||||||
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
|
||||||
${'intl-65.1'} | ${'5.6'} | ${'add_intl intl-65.1'}
|
|
||||||
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
|
||||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.3'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
|
||||||
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
|
||||||
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6'}
|
|
||||||
${'pdo-odbc'} | ${'7.4'} | ${'add_pdo_extension odbc'}
|
|
||||||
${'pdo_cubrid'} | ${'7.0'} | ${'add_cubrid pdo_cubrid'}
|
|
||||||
${'pdo_cubrid'} | ${'7.4'} | ${'add_pdo_extension cubrid'}
|
|
||||||
${'pdo_mysql'} | ${'7.4'} | ${'add_pdo_extension mysql'}
|
|
||||||
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
|
||||||
${'pdo_sqlsrv'} | ${'7.4'} | ${'add_sqlsrv pdo_sqlsrv'}
|
|
||||||
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
|
||||||
${'phalcon3'} | ${'7.3'} | ${'add_phalcon phalcon3'}
|
|
||||||
${'sqlite'} | ${'7.4'} | ${'add_extension sqlite3'}
|
|
||||||
${'sqlsrv-1.2.3-beta1'} | ${'7.4'} | ${'add_pecl_extension sqlsrv 1.2.3beta1 extension'}
|
|
||||||
${'Xdebug'} | ${'7.4'} | ${'add_extension xdebug'}
|
|
||||||
${'xdebug-alpha'} | ${'7.4'} | ${'add_unstable_extension xdebug alpha zend_extension'}
|
|
||||||
${'xdebug2'} | ${'7.2'} | ${'add_pecl_extension xdebug 2.9.8 zend_extension'}
|
|
||||||
`(
|
|
||||||
'checking addExtensionOnLinux for extension $extension on version $version',
|
|
||||||
async ({extension, version, output}) => {
|
|
||||||
expect(
|
|
||||||
await extensions.addExtension(extension, version, 'linux')
|
|
||||||
).toContain(output);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
it.each`
|
win32 = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
extension | version | output
|
expect(win32).toContain('Platform fedora is not supported');
|
||||||
${'none'} | ${'7.2'} | ${'disable_all_shared'}
|
|
||||||
${':intl'} | ${'7.2'} | ${'disable_extension intl'}
|
|
||||||
${'ast-beta'} | ${'7.2'} | ${'add_unstable_extension ast beta extension'}
|
|
||||||
${'blackfire'} | ${'7.3'} | ${'add_blackfire blackfire'}
|
|
||||||
${'blackfire-1.31.0'} | ${'7.3'} | ${'add_blackfire blackfire-1.31.0'}
|
|
||||||
${'couchbase'} | ${'5.6'} | ${'add_couchbase'}
|
|
||||||
${'does_not_exist'} | ${'7.2'} | ${'add_extension does_not_exist'}
|
|
||||||
${'geos'} | ${'7.3'} | ${'add_geos'}
|
|
||||||
${'grpc-1.2.3'} | ${'7.2'} | ${'add_pecl_extension grpc 1.2.3 extension'}
|
|
||||||
${'http-1.2.3'} | ${'7.3'} | ${'add_http http-1.2.3'}
|
|
||||||
${'imagick'} | ${'5.5'} | ${'add_extension imagick'}
|
|
||||||
${'ioncube'} | ${'7.3'} | ${'add_ioncube'}
|
|
||||||
${'mongodb-mongodb/mongo-php-driver@master'} | ${'7.2'} | ${'add_extension_from_source mongodb https://github.com mongodb mongo-php-driver master extension'}
|
|
||||||
${'oci8'} | ${'7.3'} | ${'add_oci oci8'}
|
|
||||||
${'pcov'} | ${'5.6'} | ${'add_log "$cross" "pcov" "pcov is not supported on PHP 5.6"'}
|
|
||||||
${'pdo_oci'} | ${'7.3'} | ${'add_oci pdo_oci'}
|
|
||||||
${'pecl_http'} | ${'7.3'} | ${'add_http'}
|
|
||||||
${'sqlite'} | ${'7.2'} | ${'add_extension sqlite3'}
|
|
||||||
${'sqlsrv'} | ${'7.3'} | ${'add_sqlsrv sqlsrv'}
|
|
||||||
`(
|
|
||||||
'checking addExtensionOnDarwin for extension $extension on version $version',
|
|
||||||
async ({extension, version, output}) => {
|
|
||||||
expect(
|
|
||||||
await extensions.addExtension(extension, version, 'darwin')
|
|
||||||
).toContain(output);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
const data: string[][] = fs
|
win32 = await extensions.addExtension('blackfire', '7.3', 'win32');
|
||||||
.readFileSync('src/configs/brew_extensions')
|
expect(win32).toContain('blackfire.ps1 7.3 1.31.0');
|
||||||
.toString()
|
|
||||||
.split(/\r?\n/)
|
|
||||||
.filter(Boolean)
|
|
||||||
.map(line => {
|
|
||||||
const [formula, extension]: string[] = line.split('=');
|
|
||||||
const prefix: string =
|
|
||||||
extension == 'xdebug' ? 'zend_extension' : 'extension';
|
|
||||||
const output: string = fs.existsSync(
|
|
||||||
`src/scripts/extensions/${extension}.sh`
|
|
||||||
)
|
|
||||||
? `add_${extension}`
|
|
||||||
: `add_brew_extension ${formula} ${prefix}`;
|
|
||||||
return [formula, '7.3', output];
|
|
||||||
});
|
|
||||||
|
|
||||||
it.each(data)(
|
win32 = await extensions.addExtension('blackfire-1.31.0', '7.3', 'win32');
|
||||||
'checking addExtensionOnDarwin for brew extension %s',
|
expect(win32).toContain('blackfire.ps1 7.3 1.31.0');
|
||||||
async (extension, version, output) => {
|
});
|
||||||
expect(
|
|
||||||
await extensions.addExtension(extension, version, 'darwin')
|
|
||||||
).toContain(output);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
it.each`
|
it('checking addExtensionOnLinux', async () => {
|
||||||
extension | version | output
|
let linux: string = await extensions.addExtension(
|
||||||
${'xdebug'} | ${'7.2'} | ${'Platform openbsd is not supported'}
|
'xdebug, pcov, ast-beta, pdo_mysql, pdo-odbc, xdebug-alpha, grpc-1.2.3',
|
||||||
`(
|
'7.4',
|
||||||
'checking addExtension on openbsd for extension $extension on version $version',
|
'linux'
|
||||||
async ({extension, version, output}) => {
|
);
|
||||||
expect(
|
expect(linux).toContain('update_extension xdebug 2.9.1');
|
||||||
await extensions.addExtension(extension, version, 'openbsd')
|
expect(linux).toContain('sudo $debconf_fix apt-get install -y php7.4-pcov');
|
||||||
).toContain(output);
|
expect(linux).toContain('add_unstable_extension ast beta extension');
|
||||||
}
|
expect(linux).toContain('add_pdo_extension mysql');
|
||||||
);
|
expect(linux).toContain('add_pdo_extension odbc');
|
||||||
|
expect(linux).toContain('add_pecl_extension grpc 1.2.3 extension');
|
||||||
|
expect(linux).toContain(
|
||||||
|
'add_unstable_extension xdebug alpha zend_extension'
|
||||||
|
);
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('gearman', '7.0', 'linux');
|
||||||
|
expect(linux).toContain('gearman.sh 7.0');
|
||||||
|
linux = await extensions.addExtension('gearman', '7.1', 'linux');
|
||||||
|
expect(linux).toContain('gearman.sh 7.1');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('gearman', '7.2', 'linux');
|
||||||
|
expect(linux).toContain('gearman.sh 7.2');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('gearman', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('gearman.sh 7.3');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('gearman', '7.4', 'linux');
|
||||||
|
expect(linux).toContain('gearman.sh 7.4');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
|
expect(linux).toContain('Platform fedora is not supported');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('phalcon3, phalcon4', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('phalcon.sh phalcon3 7.3');
|
||||||
|
expect(linux).toContain('phalcon.sh phalcon4 7.3');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('blackfire', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('blackfire.sh 7.3 1.31.0');
|
||||||
|
|
||||||
|
linux = await extensions.addExtension('blackfire-1.31.0', '7.3', 'linux');
|
||||||
|
expect(linux).toContain('blackfire.sh 7.3 1.31.0');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking addExtensionOnDarwin', async () => {
|
||||||
|
let darwin: string = await extensions.addExtension(
|
||||||
|
'xdebug, pcov, ast-beta, grpc-1.2.3',
|
||||||
|
'7.2',
|
||||||
|
'darwin'
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f pcov');
|
||||||
|
expect(darwin).toContain('add_unstable_extension ast beta extension');
|
||||||
|
expect(darwin).toContain('add_pecl_extension grpc 1.2.3 extension');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('phalcon3', '7.0', 'darwin');
|
||||||
|
expect(darwin).toContain('phalcon_darwin.sh phalcon3 7.0');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('phalcon4', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('phalcon_darwin.sh phalcon4 7.3');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('pcov', '5.6', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f pcov');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('pcov', '7.2', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f pcov');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '5.3', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug-2.2.7');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '5.4', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug-2.4.1');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '5.5', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug-2.5.5');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '5.6', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug-2.5.5');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '7.0', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug-2.9.0');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '7.2', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f xdebug');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('redis', '5.6', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f redis-2.2.8');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('redis', '7.2', 'darwin');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f redis');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('imagick', '5.6', 'darwin');
|
||||||
|
expect(darwin).toContain('brew install pkg-config imagemagick');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f imagick');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('imagick', '7.4', 'darwin');
|
||||||
|
expect(darwin).toContain('brew install pkg-config imagemagick');
|
||||||
|
expect(darwin).toContain('sudo pecl install -f imagick');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('blackfire', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('blackfire_darwin.sh 7.3 1.31.0');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('blackfire-1.31.0', '7.3', 'darwin');
|
||||||
|
expect(darwin).toContain('blackfire_darwin.sh 7.3 1.31.0');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension(
|
||||||
|
'does_not_exist',
|
||||||
|
'7.2',
|
||||||
|
'darwin',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
expect(darwin).toContain('add_extension does_not_exist');
|
||||||
|
|
||||||
|
darwin = await extensions.addExtension('xdebug', '7.2', 'fedora');
|
||||||
|
expect(darwin).toContain('Platform fedora is not supported');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
import * as fetch from '../src/fetch';
|
|
||||||
import nock = require('nock');
|
|
||||||
|
|
||||||
it('checking fetch', async () => {
|
|
||||||
const host_url = 'https://example.com';
|
|
||||||
const manifest_url = host_url + '/manifest';
|
|
||||||
const ping_url = host_url + '/ping';
|
|
||||||
|
|
||||||
nock(host_url)
|
|
||||||
.get('/manifest')
|
|
||||||
.reply(200, {latest: 'latest'})
|
|
||||||
.get('/manifest', '', {
|
|
||||||
reqheaders: {authorization: 'Bearer invalid_token'}
|
|
||||||
})
|
|
||||||
.reply(401, {error: '401: Unauthorized'})
|
|
||||||
.get('/ping')
|
|
||||||
.twice()
|
|
||||||
.reply(301, undefined, {
|
|
||||||
Location: host_url + '/pong'
|
|
||||||
})
|
|
||||||
.get('/pong')
|
|
||||||
.reply(200, 'pong');
|
|
||||||
|
|
||||||
let response: Record<string, string> = await fetch.fetch(manifest_url);
|
|
||||||
expect(response.error).toBe(undefined);
|
|
||||||
expect(response.data).toContain('latest');
|
|
||||||
|
|
||||||
response = await fetch.fetch(ping_url, '', 1);
|
|
||||||
expect(response.error).toBe(undefined);
|
|
||||||
expect(response.data).toContain('pong');
|
|
||||||
|
|
||||||
response = await fetch.fetch(ping_url, '', 0);
|
|
||||||
expect(response.error).toBe('301: Redirect error');
|
|
||||||
expect(response.data).toBe(undefined);
|
|
||||||
|
|
||||||
response = await fetch.fetch(manifest_url, 'invalid_token');
|
|
||||||
expect(response.error).not.toBe(undefined);
|
|
||||||
expect(response.data).toBe(undefined);
|
|
||||||
});
|
|
@ -1,82 +1,179 @@
|
|||||||
import * as install from '../src/install';
|
import * as install from '../src/install';
|
||||||
import * as utils from '../src/utils';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mock install.ts
|
* Mock install.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/install', () => ({
|
jest.mock('../src/install', () => ({
|
||||||
getScript: jest
|
build: jest.fn().mockImplementation(
|
||||||
.fn()
|
async (
|
||||||
.mockImplementation(async (os: string): Promise<string> => {
|
filename: string,
|
||||||
const filename = os + (await utils.scriptExtension(os));
|
version: string,
|
||||||
const version: string = await utils.parseVersion(
|
os_version: string
|
||||||
await utils.getInput('php-version', true)
|
): Promise<string> => {
|
||||||
);
|
|
||||||
const ini_file: string = await utils.parseIniFile(
|
|
||||||
await utils.getInput('ini-file', false)
|
|
||||||
);
|
|
||||||
const extension_csv: string = process.env['extensions'] || '';
|
const extension_csv: string = process.env['extensions'] || '';
|
||||||
const ini_values_csv: string = process.env['ini-values'] || '';
|
const ini_values_csv: string = process.env['ini-values'] || '';
|
||||||
const coverage_driver: string = process.env['coverage'] || '';
|
const coverage_driver: string = process.env['coverage'] || '';
|
||||||
const tools_csv: string = process.env['tools'] || '';
|
let tools_csv: string = process.env['tools'] || '';
|
||||||
let script = await utils.joins(filename, version, ini_file);
|
const pecl: string = process.env['pecl'] || '';
|
||||||
script += extension_csv ? ' install extensions' : '';
|
if (pecl == 'true') {
|
||||||
script += tools_csv ? ' add_tool' : '';
|
tools_csv = 'pecl, ' + tools_csv;
|
||||||
script += coverage_driver ? ' set coverage driver' : '';
|
}
|
||||||
script += ini_values_csv ? ' edit php.ini' : '';
|
|
||||||
|
let script = 'initial script ' + filename + version + os_version;
|
||||||
|
if (tools_csv) {
|
||||||
|
script += 'add_tool';
|
||||||
|
}
|
||||||
|
if (extension_csv) {
|
||||||
|
script += 'install extensions';
|
||||||
|
}
|
||||||
|
if (ini_values_csv) {
|
||||||
|
script += 'edit php.ini';
|
||||||
|
}
|
||||||
|
if (coverage_driver) {
|
||||||
|
script += 'set coverage driver';
|
||||||
|
}
|
||||||
|
|
||||||
return script;
|
return script;
|
||||||
}),
|
}
|
||||||
run: jest.fn().mockImplementation(async (): Promise<string> => {
|
),
|
||||||
const os: string = process.env['RUNNER_OS'] || '';
|
run: jest.fn().mockImplementation(
|
||||||
const tool = await utils.scriptTool(os);
|
async (): Promise<string> => {
|
||||||
return tool + (await install.getScript(os));
|
const os_version: string = process.env['RUNNER_OS'] || '';
|
||||||
})
|
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;
|
||||||
|
}
|
||||||
|
)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mock fetch.ts
|
* Function to set the process.env
|
||||||
|
*
|
||||||
|
* @param version
|
||||||
|
* @param os
|
||||||
|
* @param extension_csv
|
||||||
|
* @param ini_values_csv
|
||||||
|
* @param coverage_driver
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/fetch', () => ({
|
function setEnv(
|
||||||
fetch: jest.fn().mockImplementation(() => {
|
version: string | number,
|
||||||
return {data: '{ "latest": "8.1", "5.x": "5.6" }'};
|
os: string,
|
||||||
})
|
extension_csv: string,
|
||||||
}));
|
ini_values_csv: string,
|
||||||
|
coverage_driver: string,
|
||||||
|
tools: string,
|
||||||
|
pecl: string
|
||||||
|
): void {
|
||||||
|
process.env['php-version'] = version.toString();
|
||||||
|
process.env['RUNNER_OS'] = os;
|
||||||
|
process.env['extensions'] = extension_csv;
|
||||||
|
process.env['ini-values'] = ini_values_csv;
|
||||||
|
process.env['coverage'] = coverage_driver;
|
||||||
|
process.env['tools'] = tools;
|
||||||
|
process.env['pecl'] = pecl;
|
||||||
|
}
|
||||||
|
|
||||||
describe('Install', () => {
|
describe('Install', () => {
|
||||||
it.each`
|
it('Test install on windows', async () => {
|
||||||
version | os | extension_csv | ini_file | ini_values_csv | coverage_driver | tools | output
|
setEnv('7.0', 'win32', '', '', '', '', '');
|
||||||
${'7.3'} | ${'darwin'} | ${''} | ${'production'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 7.3 production'}
|
// @ts-ignore
|
||||||
${'7.3'} | ${'darwin'} | ${'a, b'} | ${'development'} | ${'a=b'} | ${'x'} | ${''} | ${'bash darwin.sh 7.3 development install extensions set coverage driver edit php.ini'}
|
let script: string = await install.run();
|
||||||
${'7.4.1'} | ${'darwin'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 7.4 none'}
|
expect(script).toContain('initial script');
|
||||||
${'8'} | ${'darwin'} | ${''} | ${''} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.0 production'}
|
expect(script).toContain('pwsh script.ps1 7.0 ' + __dirname);
|
||||||
${'8.0'} | ${'darwin'} | ${''} | ${'development'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.0 development'}
|
|
||||||
${'8.1'} | ${'darwin'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash darwin.sh 8.1 none'}
|
setEnv('7.3', 'win32', '', '', '', '', '');
|
||||||
${'7.3'} | ${'linux'} | ${''} | ${'invalid'} | ${''} | ${''} | ${''} | ${'bash linux.sh 7.3 production'}
|
// @ts-ignore
|
||||||
${'7.3'} | ${'linux'} | ${'a, b'} | ${'development'} | ${'a=b'} | ${'x'} | ${'phpunit'} | ${'bash linux.sh 7.3 development install extensions add_tool set coverage driver edit php.ini'}
|
script = await install.run();
|
||||||
${'latest'} | ${'linux'} | ${''} | ${'none'} | ${''} | ${''} | ${''} | ${'bash linux.sh 8.1 none'}
|
expect(script).toContain('initial script');
|
||||||
${'7.0'} | ${'win32'} | ${''} | ${'production'} | ${''} | ${''} | ${''} | ${'pwsh win32.ps1 7.0 production'}
|
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
|
||||||
${'7.3'} | ${'win32'} | ${''} | ${'development'} | ${''} | ${''} | ${''} | ${'pwsh win32.ps1 7.3 development'}
|
|
||||||
${'7.3'} | ${'win32'} | ${'a, b'} | ${'none'} | ${'a=b'} | ${'x'} | ${''} | ${'pwsh win32.ps1 7.3 none install extensions set coverage driver edit php.ini'}
|
setEnv('7.3', 'win32', 'a, b', 'a=b', 'x', '', '');
|
||||||
`(
|
// @ts-ignore
|
||||||
'Test install on $os for $version with extensions=$extension_csv, ini_values=$ini_values_csv, coverage_driver=$coverage_driver, tools=$tools',
|
script = await install.run();
|
||||||
async ({
|
expect(script).toContain('initial script');
|
||||||
version,
|
expect(script).toContain('install extensions');
|
||||||
os,
|
expect(script).toContain('edit php.ini');
|
||||||
extension_csv,
|
expect(script).toContain('set coverage driver');
|
||||||
ini_file,
|
expect(script).toContain('pwsh script.ps1 7.3 ' + __dirname);
|
||||||
ini_values_csv,
|
});
|
||||||
coverage_driver,
|
|
||||||
tools,
|
it('Test install on linux', async () => {
|
||||||
output
|
setEnv('7.3', 'linux', '', '', '', '', '');
|
||||||
}) => {
|
// @ts-ignore
|
||||||
process.env['php-version'] = version.toString();
|
let script: string = await install.run();
|
||||||
process.env['RUNNER_OS'] = os;
|
expect(script).toContain('initial script');
|
||||||
process.env['extensions'] = extension_csv;
|
expect(script).toContain('bash script.sh 7.3 ');
|
||||||
process.env['ini-file'] = ini_file;
|
|
||||||
process.env['ini-values'] = ini_values_csv;
|
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', 'true');
|
||||||
process.env['coverage'] = coverage_driver;
|
// @ts-ignore
|
||||||
process.env['tools'] = tools;
|
script = await install.run();
|
||||||
expect(await install.run()).toBe(output);
|
expect(script).toContain('initial script');
|
||||||
}
|
expect(script).toContain('install extensions');
|
||||||
);
|
expect(script).toContain('edit php.ini');
|
||||||
|
expect(script).toContain('set coverage driver');
|
||||||
|
expect(script).toContain('bash script.sh 7.3');
|
||||||
|
expect(script).toContain('add_tool');
|
||||||
|
|
||||||
|
setEnv('7.3', 'linux', 'a, b', 'a=b', 'x', 'phpunit', '');
|
||||||
|
// @ts-ignore
|
||||||
|
script = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('install extensions');
|
||||||
|
expect(script).toContain('edit php.ini');
|
||||||
|
expect(script).toContain('set coverage driver');
|
||||||
|
expect(script).toContain('bash script.sh 7.3');
|
||||||
|
expect(script).toContain('add_tool');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Test install on darwin', async () => {
|
||||||
|
setEnv('7.3', 'darwin', '', '', '', '', '');
|
||||||
|
// @ts-ignore
|
||||||
|
let script: string = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash script.sh 7.3 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv('7.3', 'darwin', 'a, b', 'a=b', 'x', '', '');
|
||||||
|
// @ts-ignore
|
||||||
|
script = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('install extensions');
|
||||||
|
expect(script).toContain('edit php.ini');
|
||||||
|
expect(script).toContain('set coverage driver');
|
||||||
|
expect(script).toContain('bash script.sh 7.3 ' + __dirname);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Test malformed version inputs', async () => {
|
||||||
|
setEnv('7.4.1', 'darwin', '', '', '', '', '');
|
||||||
|
// @ts-ignore
|
||||||
|
let script: string = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash script.sh 7.4 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv(8.0, 'darwin', '', '', '', '', '');
|
||||||
|
// @ts-ignore
|
||||||
|
script = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
|
||||||
|
|
||||||
|
setEnv(8, 'darwin', '', '', '', '', '');
|
||||||
|
// @ts-ignore
|
||||||
|
script = await install.run();
|
||||||
|
expect(script).toContain('initial script');
|
||||||
|
expect(script).toContain('bash script.sh 8.0 ' + __dirname);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
51
__tests__/matchers.test.ts
Normal file
51
__tests__/matchers.test.ts
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import * as io from '@actions/io';
|
||||||
|
import * as path from 'path';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as matchers from '../src/matchers';
|
||||||
|
|
||||||
|
async function cleanup(path: string): Promise<void> {
|
||||||
|
fs.unlink(path, error => {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
File diff suppressed because it is too large
Load Diff
@ -1,75 +1,37 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as utils from '../src/utils';
|
import * as utils from '../src/utils';
|
||||||
|
|
||||||
/**
|
|
||||||
* Mock @actions/core
|
|
||||||
*/
|
|
||||||
jest.mock('@actions/core', () => ({
|
jest.mock('@actions/core', () => ({
|
||||||
getInput: jest.fn().mockImplementation(key => {
|
getInput: jest.fn().mockImplementation(key => {
|
||||||
return ['setup-php'].indexOf(key) !== -1 ? key : '';
|
return ['setup-php'].indexOf(key) !== -1 ? key : '';
|
||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/**
|
async function cleanup(path: string): Promise<void> {
|
||||||
* Mock fetch.ts
|
fs.unlink(path, error => {
|
||||||
*/
|
if (error) {
|
||||||
jest.mock('../src/fetch', () => ({
|
console.log(error);
|
||||||
fetch: jest.fn().mockImplementation(() => {
|
}
|
||||||
return {data: '{ "latest": "8.1", "5.x": "5.6" }'};
|
});
|
||||||
})
|
}
|
||||||
}));
|
|
||||||
|
|
||||||
describe('Utils tests', () => {
|
describe('Utils tests', () => {
|
||||||
it('checking readEnv', async () => {
|
|
||||||
process.env['test'] = 'setup-php';
|
|
||||||
process.env['test-hyphen'] = 'setup-php';
|
|
||||||
expect(await utils.readEnv('test')).toBe('setup-php');
|
|
||||||
expect(await utils.readEnv('TEST')).toBe('setup-php');
|
|
||||||
expect(await utils.readEnv('test_hyphen')).toBe('setup-php');
|
|
||||||
expect(await utils.readEnv('TEST_HYPHEN')).toBe('setup-php');
|
|
||||||
expect(await utils.readEnv('undefined')).toBe('');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking getInput', async () => {
|
it('checking getInput', async () => {
|
||||||
process.env['test'] = 'setup-php';
|
process.env['test'] = 'setup-php';
|
||||||
|
process.env['undefined'] = '';
|
||||||
expect(await utils.getInput('test', false)).toBe('setup-php');
|
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('setup-php', false)).toBe('setup-php');
|
||||||
expect(await utils.getInput('DoesNotExist', false)).toBe('');
|
expect(await utils.getInput('DoesNotExist', false)).toBe('');
|
||||||
await expect(async () => {
|
|
||||||
await utils.getInput('DoesNotExist', true);
|
|
||||||
}).rejects.toThrow('Input required and not supplied: DoesNotExist');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking getManifestURL', async () => {
|
|
||||||
expect(await utils.getManifestURL()).toContain('php-versions.json');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking parseVersion', async () => {
|
|
||||||
expect(await utils.parseVersion('latest')).toBe('8.1');
|
|
||||||
expect(await utils.parseVersion('7')).toBe('7.0');
|
|
||||||
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
|
||||||
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
|
||||||
expect(await utils.parseVersion('4.x')).toBe(undefined);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking parseIniFile', async () => {
|
|
||||||
expect(await utils.parseIniFile('production')).toBe('production');
|
|
||||||
expect(await utils.parseIniFile('development')).toBe('development');
|
|
||||||
expect(await utils.parseIniFile('none')).toBe('none');
|
|
||||||
expect(await utils.parseIniFile('php.ini-production')).toBe('production');
|
|
||||||
expect(await utils.parseIniFile('php.ini-development')).toBe('development');
|
|
||||||
expect(await utils.parseIniFile('invalid')).toBe('production');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking asyncForEach', async () => {
|
it('checking asyncForEach', async () => {
|
||||||
const array: Array<string> = ['a', 'b', 'c'];
|
const array: Array<string> = ['a', 'b', 'c'];
|
||||||
let concat = '';
|
let concat = '';
|
||||||
await utils.asyncForEach(
|
await utils.asyncForEach(array, async function(str: string): Promise<void> {
|
||||||
array,
|
concat += str;
|
||||||
async function (str: string): Promise<void> {
|
});
|
||||||
concat += str;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
expect(concat).toBe('abc');
|
expect(concat).toBe('abc');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -80,10 +42,45 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.color('warning')).toBe('33');
|
expect(await utils.color('warning')).toBe('33');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('checking readScripts', async () => {
|
||||||
|
const darwin: string = fs.readFileSync(
|
||||||
|
path.join(__dirname, '../src/scripts/darwin.sh'),
|
||||||
|
'utf8'
|
||||||
|
);
|
||||||
|
const linux: string = fs.readFileSync(
|
||||||
|
path.join(__dirname, '../src/scripts/linux.sh'),
|
||||||
|
'utf8'
|
||||||
|
);
|
||||||
|
const win32: string = fs.readFileSync(
|
||||||
|
path.join(__dirname, '../src/scripts/win32.ps1'),
|
||||||
|
'utf8'
|
||||||
|
);
|
||||||
|
expect(await utils.readScript('darwin.sh', '7.4', 'darwin')).toBe(darwin);
|
||||||
|
expect(await utils.readScript('darwin.sh', '7.3', 'darwin')).toBe(darwin);
|
||||||
|
expect(await utils.readScript('linux.sh', '7.4', 'linux')).toBe(linux);
|
||||||
|
expect(await utils.readScript('linux.sh', '7.3', 'linux')).toBe(linux);
|
||||||
|
expect(await utils.readScript('win32.ps1', '7.4', 'win32')).toBe(win32);
|
||||||
|
expect(await utils.readScript('win32.ps1', '7.3', 'win32')).toBe(win32);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checking writeScripts', async () => {
|
||||||
|
const testString = 'sudo apt-get install php';
|
||||||
|
const runner_dir: string = process.env['RUNNER_TOOL_CACHE'] || '';
|
||||||
|
const script_path: string = path.join(runner_dir, 'test.sh');
|
||||||
|
await utils.writeScript('test.sh', testString);
|
||||||
|
await fs.readFile(script_path, function(error: Error | null, data: Buffer) {
|
||||||
|
expect(testString).toBe(data.toString());
|
||||||
|
});
|
||||||
|
await cleanup(script_path);
|
||||||
|
});
|
||||||
|
|
||||||
it('checking extensionArray', async () => {
|
it('checking extensionArray', async () => {
|
||||||
expect(
|
expect(await utils.extensionArray('a, b, php_c, php-d')).toEqual([
|
||||||
await utils.extensionArray('a, :b, php_c, none, php-d, Zend e, :Zend f')
|
'a',
|
||||||
).toEqual(['none', 'a', ':b', 'c', 'd', 'e', ':f']);
|
'b',
|
||||||
|
'c',
|
||||||
|
'd'
|
||||||
|
]);
|
||||||
|
|
||||||
expect(await utils.extensionArray('')).toEqual([]);
|
expect(await utils.extensionArray('')).toEqual([]);
|
||||||
expect(await utils.extensionArray(' ')).toEqual([]);
|
expect(await utils.extensionArray(' ')).toEqual([]);
|
||||||
@ -95,20 +92,6 @@ describe('Utils tests', () => {
|
|||||||
'b=2',
|
'b=2',
|
||||||
'c=3'
|
'c=3'
|
||||||
]);
|
]);
|
||||||
expect(await utils.CSVArray('\'a=1,2\', "b=3, 4", c=5, d=~e~')).toEqual([
|
|
||||||
'a=1,2',
|
|
||||||
'b=3, 4',
|
|
||||||
'c=5',
|
|
||||||
"d='~e~'"
|
|
||||||
]);
|
|
||||||
expect(await utils.CSVArray('a=\'1,2\', b="3, 4", c=5')).toEqual([
|
|
||||||
'a=1,2',
|
|
||||||
'b=3, 4',
|
|
||||||
'c=5'
|
|
||||||
]);
|
|
||||||
expect(
|
|
||||||
await utils.CSVArray('a=E_ALL, b=E_ALL & ~ E_ALL, c="E_ALL", d=\'E_ALL\'')
|
|
||||||
).toEqual(['a=E_ALL', 'b=E_ALL & ~ E_ALL', 'c=E_ALL', 'd=E_ALL']);
|
|
||||||
expect(await utils.CSVArray('')).toEqual([]);
|
expect(await utils.CSVArray('')).toEqual([]);
|
||||||
expect(await utils.CSVArray(' ')).toEqual([]);
|
expect(await utils.CSVArray(' ')).toEqual([]);
|
||||||
});
|
});
|
||||||
@ -143,8 +126,8 @@ describe('Utils tests', () => {
|
|||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'darwin');
|
step_log = await utils.stepLog(message, 'darwin');
|
||||||
expect(step_log).toEqual('step_log "Test message"');
|
expect(step_log).toEqual('step_log "Test message"');
|
||||||
step_log = await utils.stepLog(message, 'openbsd');
|
step_log = await utils.stepLog(message, 'fedora');
|
||||||
expect(step_log).toContain('Platform openbsd is not supported');
|
expect(step_log).toContain('Platform fedora is not supported');
|
||||||
|
|
||||||
let add_log: string = await utils.addLog(
|
let add_log: string = await utils.addLog(
|
||||||
'tick',
|
'tick',
|
||||||
@ -157,8 +140,8 @@ describe('Utils tests', () => {
|
|||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'darwin');
|
||||||
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
expect(add_log).toEqual('add_log "tick" "xdebug" "enabled"');
|
||||||
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'openbsd');
|
add_log = await utils.addLog('tick', 'xdebug', 'enabled', 'fedora');
|
||||||
expect(add_log).toContain('Platform openbsd is not supported');
|
expect(add_log).toContain('Platform fedora is not supported');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getExtensionPrefix', async () => {
|
it('checking getExtensionPrefix', async () => {
|
||||||
@ -167,7 +150,6 @@ describe('Utils tests', () => {
|
|||||||
);
|
);
|
||||||
expect(await utils.getExtensionPrefix('xsl')).toEqual('extension');
|
expect(await utils.getExtensionPrefix('xsl')).toEqual('extension');
|
||||||
expect(await utils.getExtensionPrefix('xdebug')).toEqual('zend_extension');
|
expect(await utils.getExtensionPrefix('xdebug')).toEqual('zend_extension');
|
||||||
expect(await utils.getExtensionPrefix('xdebug3')).toEqual('zend_extension');
|
|
||||||
expect(await utils.getExtensionPrefix('opcache')).toEqual('zend_extension');
|
expect(await utils.getExtensionPrefix('opcache')).toEqual('zend_extension');
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -175,94 +157,18 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
expect(await utils.suppressOutput('win32')).toEqual(' >$null 2>&1');
|
||||||
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('linux')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
expect(await utils.suppressOutput('darwin')).toEqual(' >/dev/null 2>&1');
|
||||||
expect(await utils.suppressOutput('openbsd')).toContain(
|
expect(await utils.suppressOutput('fedora')).toContain(
|
||||||
'Platform openbsd is not supported'
|
'Platform fedora is not supported'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('checking getUnsupportedLog', async () => {
|
it('checking getBlackfireVersion', async () => {
|
||||||
expect(await utils.getUnsupportedLog('ext', '5.6', 'linux')).toContain(
|
expect(await utils.getBlackfireVersion('')).toEqual('1.31.0');
|
||||||
'add_log "$cross" "ext" "ext is not supported on PHP 5.6"'
|
expect(await utils.getBlackfireVersion(undefined)).toEqual('1.31.0');
|
||||||
);
|
expect(await utils.getBlackfireVersion(null)).toEqual('1.31.0');
|
||||||
|
expect(await utils.getBlackfireVersion('1.32.0')).toEqual('1.32.0');
|
||||||
});
|
});
|
||||||
|
it('checking getBlackfireAgentVersion', async () => {
|
||||||
it('checking getCommand', async () => {
|
expect(await utils.getBlackfireAgentVersion()).toEqual('1.32.0');
|
||||||
expect(await utils.getCommand('linux', 'tool')).toBe('add_tool ');
|
|
||||||
expect(await utils.getCommand('darwin', 'tool')).toBe('add_tool ');
|
|
||||||
expect(await utils.getCommand('win32', 'tool')).toBe('Add-Tool ');
|
|
||||||
expect(await utils.getCommand('openbsd', 'tool')).toContain(
|
|
||||||
'Platform openbsd is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking joins', async () => {
|
|
||||||
expect(await utils.joins('a', 'b', 'c')).toBe('a b c');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking scriptExtension', async () => {
|
|
||||||
expect(await utils.scriptExtension('linux')).toBe('.sh');
|
|
||||||
expect(await utils.scriptExtension('darwin')).toBe('.sh');
|
|
||||||
expect(await utils.scriptExtension('win32')).toBe('.ps1');
|
|
||||||
expect(await utils.scriptExtension('openbsd')).toContain(
|
|
||||||
'Platform openbsd is not supported'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
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(
|
|
||||||
script_path + '\nadd_pkg 1.2.3'
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
await utils.customPackage('pdo_pkg', 'ext', '1.2.3', 'linux')
|
|
||||||
).toContain(script_path + '\nadd_pkg 1.2.3');
|
|
||||||
expect(
|
|
||||||
await utils.customPackage('pkg8', 'ext', '1.2.3', 'linux')
|
|
||||||
).toContain(script_path + '\nadd_pkg 1.2.3');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking parseExtensionSource', async () => {
|
|
||||||
expect(
|
|
||||||
await utils.parseExtensionSource(
|
|
||||||
'ext-org-name/repo-name@release',
|
|
||||||
'extension'
|
|
||||||
)
|
|
||||||
).toContain(
|
|
||||||
'\nadd_extension_from_source ext https://github.com org-name repo-name release extension'
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
await utils.parseExtensionSource(
|
|
||||||
'ext-https://sub.domain.tld/org/repo@release',
|
|
||||||
'extension'
|
|
||||||
)
|
|
||||||
).toContain(
|
|
||||||
'\nadd_extension_from_source ext https://sub.domain.tld org repo release extension'
|
|
||||||
);
|
|
||||||
expect(
|
|
||||||
await utils.parseExtensionSource(
|
|
||||||
'ext-https://sub.domain.XN--tld/org/repo@release',
|
|
||||||
'extension'
|
|
||||||
)
|
|
||||||
).toContain(
|
|
||||||
'\nadd_extension_from_source ext https://sub.domain.XN--tld org repo release extension'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('checking setVariable', async () => {
|
|
||||||
let script: string = await utils.setVariable('var', 'command', 'linux');
|
|
||||||
expect(script).toEqual('\nvar="$(command)"\n');
|
|
||||||
script = await utils.setVariable('var', 'command', 'darwin');
|
|
||||||
expect(script).toEqual('\nvar="$(command)"\n');
|
|
||||||
script = await utils.setVariable('var', 'command', 'win32');
|
|
||||||
expect(script).toEqual('\n$var = command\n');
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
13
action.yml
13
action.yml
@ -1,21 +1,17 @@
|
|||||||
name: 'Setup PHP Action'
|
name: 'Setup PHP Action'
|
||||||
author: shivammathur
|
author: shivammathur
|
||||||
description: 'GitHub Action for PHP'
|
description: 'Setup PHP with required extensions, php.ini configuration, code-coverage support and various tools like composer'
|
||||||
branding:
|
branding:
|
||||||
color: 'purple'
|
color: 'purple'
|
||||||
icon: 'play-circle'
|
icon: 'play-circle'
|
||||||
inputs:
|
inputs:
|
||||||
php-version:
|
php-version:
|
||||||
description: 'Setup PHP version.'
|
description: 'Setup PHP version.'
|
||||||
default: '8.1'
|
default: '7.4'
|
||||||
required: true
|
required: true
|
||||||
extensions:
|
extensions:
|
||||||
description: 'Setup PHP extensions.'
|
description: 'Setup PHP extensions.'
|
||||||
required: false
|
required: false
|
||||||
ini-file:
|
|
||||||
description: 'Set base ini file.'
|
|
||||||
default: 'production'
|
|
||||||
required: false
|
|
||||||
ini-values:
|
ini-values:
|
||||||
description: 'Add values to php.ini.'
|
description: 'Add values to php.ini.'
|
||||||
required: false
|
required: false
|
||||||
@ -25,9 +21,6 @@ inputs:
|
|||||||
tools:
|
tools:
|
||||||
description: 'Setup popular tools globally.'
|
description: 'Setup popular tools globally.'
|
||||||
required: false
|
required: false
|
||||||
outputs:
|
|
||||||
php-version:
|
|
||||||
description: 'PHP version in semver format'
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node16'
|
using: 'node12'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.js'
|
||||||
|
6059
dist/index.js
vendored
6059
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
@ -8,31 +8,25 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.1', '7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
- uses: actions/cache@v1
|
||||||
- uses: actions/cache@v3
|
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install -n --prefer-dist
|
||||||
|
|
||||||
- name: PHP test
|
- name: PHP test
|
||||||
run: composer test
|
run: composer test
|
@ -15,22 +15,17 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
# blackfire-player supports PHP >= 5.5
|
# blackfire-player supports PHP >= 5.5
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: blackfire
|
extensions: blackfire
|
||||||
# Setup Blackfire CLI and player
|
tools: blackfire, blackfire-player #Setup Blackfire client, agent and player
|
||||||
tools: blackfire, blackfire-player
|
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|
||||||
# Refer to https://blackfire.io/docs/player/index#usage
|
|
||||||
- name: Play the scenario
|
- name: Play the scenario
|
||||||
run: blackfire-player run scenario.bkf
|
run: blackfire-player run scenario.bkf # Refer to https://blackfire.io/docs/player/index#usage
|
||||||
|
@ -15,23 +15,17 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
# Blackfire supports PHP >= 5.3 on Ubuntu and macOS, and PHP >= 5.4 on Windows
|
# Blackfire supports PHP >= 5.3 on ubuntu and macos and PHP >= 5.4 on windows
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
# Setup Blackfire extension and CLI
|
|
||||||
extensions: blackfire
|
extensions: blackfire
|
||||||
tools: blackfire
|
tools: blackfire #Setup Blackfire client and agent
|
||||||
# Disable Xdebug and PCOV coverage drivers
|
|
||||||
coverage: none
|
coverage: none
|
||||||
|
|
||||||
# Refer to https://blackfire.io/docs/cookbooks/profiling-cli
|
|
||||||
- name: Profile
|
- name: Profile
|
||||||
run: blackfire run php my-script.php
|
run: blackfire run php my-script.php # Refer to https://blackfire.io/docs/cookbooks/profiling-cli
|
||||||
|
@ -6,13 +6,11 @@ jobs:
|
|||||||
tests:
|
tests:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: password
|
||||||
@ -20,7 +18,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 3306/tcp
|
- 3306/tcp
|
||||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -28,9 +25,7 @@ jobs:
|
|||||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
@ -39,30 +34,23 @@ jobs:
|
|||||||
# Install memcached if using ext-memcached
|
# Install memcached if using ext-memcached
|
||||||
extensions: mbstring, intl, redis, pdo_mysql
|
extensions: mbstring, intl, redis, pdo_mysql
|
||||||
coverage: pcov
|
coverage: pcov
|
||||||
|
- name: Start mysql service
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
run: sudo /etc/init.d/mysql start
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd
|
composer run-script post-install-cmd --no-interaction
|
||||||
|
|
||||||
# Add a step to run migrations if required
|
# Add a step to run migrations if required
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
@ -75,31 +63,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -108,31 +90,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
tools: phpstan
|
tools: phpstan
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
@ -6,13 +6,11 @@ jobs:
|
|||||||
tests:
|
tests:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -20,7 +18,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 5432/tcp
|
- 5432/tcp
|
||||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -28,9 +25,7 @@ jobs:
|
|||||||
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
@ -39,30 +34,21 @@ jobs:
|
|||||||
# Install memcached if using ext-memcached
|
# Install memcached if using ext-memcached
|
||||||
extensions: mbstring, intl, redis, pdo_pgsql
|
extensions: mbstring, intl, redis, pdo_pgsql
|
||||||
coverage: pcov
|
coverage: pcov
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd
|
composer run-script post-install-cmd --no-interaction
|
||||||
|
|
||||||
# Add a step to run migrations if required
|
# Add a step to run migrations if required
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
@ -75,31 +61,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -108,31 +88,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
tools: phpstan
|
tools: phpstan
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
@ -7,38 +7,32 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ${{ matrix.operating-system }}
|
runs-on: ${{ matrix.operating-system }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, pdo_sqlite, pdo_mysql
|
extensions: mbstring, intl, pdo_sqlite, pdo_mysql
|
||||||
coverage: pcov
|
coverage: pcov #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
composer run-script post-install-cmd
|
composer run-script post-install-cmd --no-interaction
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
|
|
||||||
@ -47,30 +41,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: PHP CodeSniffer
|
- name: PHP CodeSniffer
|
||||||
run: composer cs-check
|
run: composer cs-check
|
||||||
|
|
||||||
@ -79,31 +68,25 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.1'
|
php-version: '7.3'
|
||||||
extensions: mbstring, intl
|
extensions: mbstring, intl
|
||||||
tools: phpstan
|
tools: phpstan
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Static Analysis using PHPStan
|
- name: Static Analysis using PHPStan
|
||||||
run: phpstan analyse --no-progress src/
|
run: phpstan analyse --no-progress src/
|
||||||
|
@ -6,35 +6,29 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ${{ matrix.operating-system }}
|
runs-on: ${{ matrix.operating-system }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, curl, dom
|
extensions: mbstring, intl, curl, dom
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -12,12 +12,10 @@ jobs:
|
|||||||
BROADCAST_DRIVER: log
|
BROADCAST_DRIVER: log
|
||||||
CACHE_DRIVER: redis
|
CACHE_DRIVER: redis
|
||||||
QUEUE_CONNECTION: redis
|
QUEUE_CONNECTION: redis
|
||||||
SESSION_DRIVER: redis
|
SESSION_DRIVER: redis
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: password
|
||||||
@ -25,7 +23,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 3306/tcp
|
- 3306/tcp
|
||||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -34,56 +31,44 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
run: sudo /etc/init.d/mysql start
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
php artisan key:generate
|
php artisan key:generate
|
||||||
|
|
||||||
- name: Clear Config
|
- name: Clear Config
|
||||||
run: php artisan config:clear
|
run: php artisan config:clear
|
||||||
|
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: php artisan migrate -v
|
run: php artisan migrate -v
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
@ -15,11 +15,9 @@ jobs:
|
|||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
DB_USERNAME: postgres
|
DB_USERNAME: postgres
|
||||||
DB_DATABASE: postgres
|
DB_DATABASE: postgres
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -27,7 +25,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 5432/tcp
|
- 5432/tcp
|
||||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -36,56 +33,42 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, pgsql
|
extensions: mbstring, dom, fileinfo, pgsql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
php artisan key:generate
|
php artisan key:generate
|
||||||
|
|
||||||
- name: Clear Config
|
- name: Clear Config
|
||||||
run: php artisan config:clear
|
run: php artisan config:clear
|
||||||
|
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: php artisan migrate -v
|
run: php artisan migrate -v
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
@ -9,42 +9,34 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo
|
extensions: mbstring, dom, fileinfo
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
php artisan key:generate
|
php artisan key:generate
|
||||||
|
|
||||||
- name: Clear Config
|
- name: Clear Config
|
||||||
run: php artisan config:clear
|
run: php artisan config:clear
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -13,11 +13,9 @@ jobs:
|
|||||||
CACHE_DRIVER: redis
|
CACHE_DRIVER: redis
|
||||||
QUEUE_CONNECTION: redis
|
QUEUE_CONNECTION: redis
|
||||||
SESSION_DRIVER: redis
|
SESSION_DRIVER: redis
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: password
|
||||||
@ -25,7 +23,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 3306/tcp
|
- 3306/tcp
|
||||||
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -34,56 +31,44 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
run: sudo /etc/init.d/mysql start
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
composer require predis/predis illuminate/redis
|
composer require predis/predis illuminate/redis
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
|
||||||
- name: Register Redis as service provider
|
- name: Register Redis as service provider
|
||||||
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
||||||
|
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: php artisan migrate -v
|
run: php artisan migrate -v
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
@ -15,11 +15,9 @@ jobs:
|
|||||||
DB_PASSWORD: postgres
|
DB_PASSWORD: postgres
|
||||||
DB_USERNAME: postgres
|
DB_USERNAME: postgres
|
||||||
DB_DATABASE: postgres
|
DB_DATABASE: postgres
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -27,7 +25,6 @@ jobs:
|
|||||||
ports:
|
ports:
|
||||||
- 5432/tcp
|
- 5432/tcp
|
||||||
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
ports:
|
ports:
|
||||||
@ -36,54 +33,40 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, pgsql
|
extensions: mbstring, dom, fileinfo, pgsql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: |
|
run: |
|
||||||
composer install --no-progress --prefer-dist --optimize-autoloader
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
composer require predis/predis illuminate/redis
|
composer require predis/predis illuminate/redis
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
|
||||||
- name: Register Redis as service provider
|
- name: Register Redis as service provider
|
||||||
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
run: sed -i '$i\$app->register(Illuminate\\Redis\\RedisServiceProvider::class);' bootstrap/app.php
|
||||||
|
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: php artisan migrate -v
|
run: php artisan migrate -v
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
DB_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||||
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
REDIS_PORT: ${{ job.services.redis.ports['6379'] }}
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
||||||
env:
|
env:
|
||||||
|
@ -9,37 +9,30 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, dom, fileinfo, mysql
|
extensions: mbstring, dom, fileinfo, mysql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -16,11 +16,9 @@ jobs:
|
|||||||
DB_PASSWORD: password
|
DB_PASSWORD: password
|
||||||
CODECEPTION_URL: 127.0.0.1
|
CODECEPTION_URL: 127.0.0.1
|
||||||
CODECEPTION_PORT: 8888
|
CODECEPTION_PORT: 8888
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: password
|
MYSQL_ROOT_PASSWORD: password
|
||||||
@ -32,45 +30,34 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.2', '7.3', '7.4']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
# For phalcon 3.x, use
|
# For phalcon 3.x, use
|
||||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
# Use phalcon3 for the phalcon 3.x.
|
extensions: mbstring, dom, zip, phalcon4, mysql #use phalcon3 for the phalcon 3.x.
|
||||||
extensions: mbstring, dom, zip, phalcon4, mysql
|
coverage: xdebug #optional
|
||||||
coverage: xdebug
|
- name: Start mysql service
|
||||||
|
run: sudo /etc/init.d/mysql start
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
|
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: |
|
run: |
|
||||||
if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
|
if [ ! -e phinx.yml ]; then vendor/bin/phinx init; fi
|
||||||
@ -78,11 +65,10 @@ jobs:
|
|||||||
vendor/bin/phinx seed:run
|
vendor/bin/phinx seed:run
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
||||||
|
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: |
|
run: |
|
||||||
(cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
|
(cd public && nohup php -S $CODECEPTION_URL:$CODECEPTION_PORT > phalcon.log 2>&1 &)
|
||||||
vendor/bin/codecept build
|
vendor/bin/codecept build
|
||||||
vendor/bin/codecept run
|
vendor/bin/codecept run
|
||||||
env:
|
env:
|
||||||
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
DB_PORT: ${{ job.services.mysql.ports['3306'] }}
|
@ -17,11 +17,9 @@ jobs:
|
|||||||
CODECEPTION_URL: 127.0.0.1
|
CODECEPTION_URL: 127.0.0.1
|
||||||
CODECEPTION_PORT: 8888
|
CODECEPTION_PORT: 8888
|
||||||
DB_CONNECTION: pgsql
|
DB_CONNECTION: pgsql
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -33,31 +31,22 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.2', '7.3', '7.4']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
# For phalcon 3.x, use
|
# For phalcon 3.x, use
|
||||||
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
# php-versions: ['7.0', '7.1', '7.2', '7.3']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
# Use phalcon3 for the phalcon 3.x
|
extensions: mbstring, dom, zip, phalcon4, pgsql #use phalcon3 for the phalcon 3.x
|
||||||
extensions: mbstring, dom, zip, phalcon4, pgsql
|
coverage: xdebug #optional
|
||||||
coverage: xdebug
|
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
@ -65,7 +54,7 @@ jobs:
|
|||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
|
@ -8,62 +8,50 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.1', '7.2', '7.3', '7.4']
|
||||||
node-versions: [16']
|
node-versions: ['8', '10']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-versions }}
|
node-version: ${{ matrix.node-versions }}
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring
|
extensions: mbstring
|
||||||
|
|
||||||
- name: Check node versions
|
- name: Check node versions
|
||||||
run: node -v
|
run: node -v
|
||||||
|
|
||||||
- name: Get yarn cache
|
- name: Get yarn cache
|
||||||
id: yarn-cache
|
id: yarn-cache
|
||||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
||||||
|
- uses: actions/cache@v1
|
||||||
- uses: actions/cache@v3
|
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.yarn-cache.outputs.dir }}
|
path: ${{ steps.yarn-cache.outputs.dir }}
|
||||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-yarn-
|
restore-keys: ${{ runner.os }}-yarn-
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install yarn dependencies
|
- name: Install yarn dependencies
|
||||||
run: yarn -V
|
run: yarn -V
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install -o --prefer-dist --no-interaction
|
||||||
|
|
||||||
- name: Yarn test and build
|
- name: Yarn test and build
|
||||||
run: |
|
run: |
|
||||||
yarn run test
|
yarn run test
|
||||||
yarn run build
|
yarn run build
|
||||||
yarn run rmdist
|
yarn run rmdist
|
||||||
yarn run "build:production"
|
yarn run "build:production"
|
||||||
|
|
||||||
- name: PHP test
|
- name: PHP test
|
||||||
run: composer test
|
run: composer test
|
@ -6,35 +6,29 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ${{ matrix.operating-system }}
|
runs-on: ${{ matrix.operating-system }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, simplexml, dom
|
extensions: mbstring, simplexml, dom
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -5,11 +5,9 @@ jobs:
|
|||||||
symfony:
|
symfony:
|
||||||
name: Symfony (PHP ${{ matrix.php-versions }})
|
name: Symfony (PHP ${{ matrix.php-versions }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: symfony
|
MYSQL_ROOT_PASSWORD: symfony
|
||||||
@ -20,51 +18,38 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
tools: phpunit-bridge
|
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, mysql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
run: sudo /etc/init.d/mysql start
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: |
|
||||||
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: |
|
run: |
|
||||||
composer require --dev symfony/orm-pack
|
composer require symfony/orm-pack
|
||||||
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
||||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||||
env:
|
env:
|
||||||
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
|
DATABASE_URL: mysql://root:symfony@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/symfony
|
||||||
|
- name: Run Tests
|
||||||
- name: Install PHPUnit
|
run: php bin/phpunit --coverage-text
|
||||||
run: simple-phpunit install
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: simple-phpunit --coverage-text
|
|
@ -5,11 +5,9 @@ jobs:
|
|||||||
symfony:
|
symfony:
|
||||||
name: Symfony (PHP ${{ matrix.php-versions }})
|
name: Symfony (PHP ${{ matrix.php-versions }})
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -20,51 +18,36 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
tools: phpunit-bridge
|
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, pgsql
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, pgsql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: |
|
||||||
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
- name: Run Migration
|
- name: Run Migration
|
||||||
run: |
|
run: |
|
||||||
composer require --dev symfony/orm-pack
|
composer require symfony/orm-pack
|
||||||
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
php bin/console doctrine:schema:update --force || echo "No migrations found or schema update failed"
|
||||||
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
php bin/console doctrine:migrations:migrate || echo "No migrations found or migration failed"
|
||||||
env:
|
env:
|
||||||
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:${{ job.services.postgres.ports[5432] }}/postgres?charset=UTF-8
|
DATABASE_URL: postgres://postgres:postgres@127.0.0.1:${{ job.services.postgres.ports[5432] }}/postgres?charset=UTF-8
|
||||||
|
- name: Run Tests
|
||||||
- name: Install PHPUnit
|
run: php bin/phpunit --coverage-text
|
||||||
run: simple-phpunit install
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: simple-phpunit --coverage-text
|
|
@ -9,38 +9,30 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
tools: phpunit-bridge
|
|
||||||
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite
|
extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: |
|
||||||
|
composer require symfony/orm-pack
|
||||||
- name: Install PHPUnit
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
run: simple-phpunit install
|
- name: Run Tests
|
||||||
|
run: php bin/phpunit --coverage-text
|
||||||
- name: Run tests
|
|
||||||
run: simple-phpunit --coverage-text
|
|
@ -11,11 +11,9 @@ jobs:
|
|||||||
TEST_DB_USERNAME: root
|
TEST_DB_USERNAME: root
|
||||||
TEST_DB_PASSWORD: yii
|
TEST_DB_PASSWORD: yii
|
||||||
DB_CHARSET: utf8
|
DB_CHARSET: utf8
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
mysql:
|
mysql:
|
||||||
image: mysql:latest
|
image: mysql:5.7
|
||||||
env:
|
env:
|
||||||
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
MYSQL_ALLOW_EMPTY_PASSWORD: false
|
||||||
MYSQL_ROOT_PASSWORD: yii
|
MYSQL_ROOT_PASSWORD: yii
|
||||||
@ -26,45 +24,35 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Set Node.js 10.x
|
- name: Set Node.js 10.x
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 10.x
|
node-version: 10.x
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, gd, imagick, zip, dom, mysql
|
extensions: mbstring, intl, gd, imagick, zip, dom, mysql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
- name: Start mysql service
|
||||||
# Local MySQL service in GitHub hosted environments is disabled by default.
|
run: sudo /etc/init.d/mysql start
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start mysql service
|
|
||||||
# run: sudo systemctl start mysql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||||
@ -74,7 +62,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||||
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||||
|
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: |
|
run: |
|
||||||
vendor/bin/codecept build
|
vendor/bin/codecept build
|
||||||
@ -83,4 +70,4 @@ jobs:
|
|||||||
vendor/bin/codecept run
|
vendor/bin/codecept run
|
||||||
env:
|
env:
|
||||||
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
||||||
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
TEST_DB_DSN: mysql:host=127.0.0.1;port=${{ job.services.mysql.ports['3306'] }};dbname=yii
|
@ -11,11 +11,9 @@ jobs:
|
|||||||
TEST_DB_USERNAME: postgres
|
TEST_DB_USERNAME: postgres
|
||||||
TEST_DB_PASSWORD: postgres
|
TEST_DB_PASSWORD: postgres
|
||||||
DB_CHARSET: utf8
|
DB_CHARSET: utf8
|
||||||
|
|
||||||
# Docs: https://docs.github.com/en/actions/using-containerized-services
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:latest
|
image: postgres:10.8
|
||||||
env:
|
env:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
@ -26,45 +24,33 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
php-versions: ['7.4', '8.0']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Set Node.js 10.x
|
- name: Set Node.js 10.x
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 10.x
|
node-version: 10.x
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
extensions: mbstring, intl, gd, imagick, zip, dom, pgsql
|
||||||
coverage: xdebug
|
coverage: xdebug #optional
|
||||||
|
|
||||||
# Local PostgreSQL service in GitHub hosted environments is disabled by default.
|
|
||||||
# If you are using it instead of service containers, make sure you start it.
|
|
||||||
# - name: Start postgresql service
|
|
||||||
# run: sudo systemctl start postgresql.service
|
|
||||||
|
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install Composer dependencies
|
- name: Install Composer dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
- name: Prepare the application
|
- name: Prepare the application
|
||||||
run: |
|
run: |
|
||||||
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
php -r "file_exists('.env') || copy('.env.dist', '.env');"
|
||||||
@ -74,7 +60,6 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||||
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||||
|
|
||||||
- name: Run Tests
|
- name: Run Tests
|
||||||
run: |
|
run: |
|
||||||
vendor/bin/codecept build
|
vendor/bin/codecept build
|
||||||
@ -83,4 +68,4 @@ jobs:
|
|||||||
vendor/bin/codecept run
|
vendor/bin/codecept run
|
||||||
env:
|
env:
|
||||||
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
||||||
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
TEST_DB_DSN: pgsql:host=127.0.0.1;port=${{ job.services.postgres.ports['5432'] }};dbname=postgres
|
@ -1,4 +1,4 @@
|
|||||||
# GitHub Action for Laminas framework MVC projects
|
# GitHub Action for Zend Framework
|
||||||
name: Testing Zend Framework
|
name: Testing Zend Framework
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
jobs:
|
jobs:
|
||||||
@ -6,34 +6,31 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
operating-system: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
php-versions: ['7.4', '8.0', '8.1']
|
php-versions: ['7.2', '7.3', '7.4']
|
||||||
runs-on: ${{ matrix.operating-system }}
|
runs-on: ${{ matrix.operating-system }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v2
|
||||||
|
- name: Setup PHP, with composer and extensions
|
||||||
# Docs: https://github.com/shivammathur/setup-php
|
uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
coverage: xdebug
|
extensions: mbstring, bcmath, curl, intl
|
||||||
|
coverage: xdebug #optional
|
||||||
- name: Get composer cache directory
|
- name: Get composer cache directory
|
||||||
id: composer-cache
|
id: composer-cache
|
||||||
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||||
|
|
||||||
- name: Cache composer dependencies
|
- name: Cache composer dependencies
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.composer-cache.outputs.dir }}
|
path: ${{ steps.composer-cache.outputs.dir }}
|
||||||
# Use composer.json for key, if composer.lock is not committed.
|
# Use composer.json for key, if composer.lock is not committed.
|
||||||
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
# key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
|
||||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-composer-
|
restore-keys: ${{ runner.os }}-composer-
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: composer install --no-progress --prefer-dist --optimize-autoloader
|
run: |
|
||||||
|
composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
|
||||||
|
composer require --dev phpunit/phpunit squizlabs/php_codesniffer zendframework/zend-test
|
||||||
- name: Test with phpunit
|
- name: Test with phpunit
|
||||||
run: vendor/bin/phpunit --coverage-text
|
run: vendor/bin/phpunit --coverage-text
|
@ -9,4 +9,4 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
verbose: true,
|
verbose: true,
|
||||||
collectCoverage: true
|
collectCoverage: true
|
||||||
};
|
};
|
12733
package-lock.json
generated
12733
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
72
package.json
72
package.json
@ -1,25 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "2.20.1",
|
"version": "2.1.1",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Setup PHP for use with GitHub Actions",
|
"description": "Setup PHP for use with GitHub Actions",
|
||||||
"main": "lib/install.js",
|
"main": "dist/index.js",
|
||||||
"types": "lib/install.d.ts",
|
|
||||||
"directories": {
|
|
||||||
"lib": "lib",
|
|
||||||
"test": "__tests__",
|
|
||||||
"src": "src"
|
|
||||||
},
|
|
||||||
"files": [
|
|
||||||
"lib",
|
|
||||||
"src"
|
|
||||||
],
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"lint": "eslint **/src/*.ts **/__tests__/*.ts --cache --fix",
|
"lint": "eslint **/*.ts --cache",
|
||||||
"format": "prettier --write **/src/*.ts **/__tests__/*.ts && git add -f __tests__/ ",
|
"format": "prettier --write **/*.ts && git add .",
|
||||||
"format-check": "prettier --check **/src/*.ts **/__tests__/*.ts",
|
"format-check": "prettier --check **/*.ts",
|
||||||
"release": "ncc build -o dist && git add -f dist/",
|
"release": "ncc build src/install.ts -o dist && git add -f dist/",
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@ -34,33 +24,33 @@
|
|||||||
"author": "shivammathur",
|
"author": "shivammathur",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.9.0",
|
"@actions/core": "^1.2.3",
|
||||||
"@actions/exec": "^1.1.1",
|
"@actions/exec": "^1.0.3",
|
||||||
"@actions/io": "^1.1.2"
|
"@actions/io": "^1.0.2",
|
||||||
|
"fs": "0.0.1-security"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^28.1.4",
|
"@types/jest": "^25.1.4",
|
||||||
"@types/node": "^18.0.3",
|
"@types/node": "^13.9.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
"@typescript-eslint/eslint-plugin": "^2.22.0",
|
||||||
"@typescript-eslint/parser": "^5.30.5",
|
"@typescript-eslint/parser": "^2.22.0",
|
||||||
"@vercel/ncc": "^0.34.0",
|
"@zeit/ncc": "^0.21.1",
|
||||||
"eslint": "^8.19.0",
|
"eslint": "^6.8.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^6.10.0",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.20.1",
|
||||||
"eslint-plugin-jest": "^26.5.3",
|
"eslint-plugin-jest": "^23.8.2",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^3.1.2",
|
||||||
"jest": "^28.1.2",
|
"husky": "^4.2.3",
|
||||||
"jest-circus": "^28.1.2",
|
"jest": "^25.1.0",
|
||||||
"nock": "^13.2.8",
|
"jest-circus": "^25.1.0",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^1.19.1",
|
||||||
"simple-git-hooks": "^2.8.0",
|
"ts-jest": "^25.2.1",
|
||||||
"ts-jest": "^28.0.5",
|
"typescript": "^3.8.3"
|
||||||
"typescript": "^4.7.4"
|
|
||||||
},
|
},
|
||||||
"bugs": {
|
"husky": {
|
||||||
"url": "https://github.com/shivammathur/setup-php/issues"
|
"skipCI": true,
|
||||||
},
|
"hooks": {
|
||||||
"simple-git-hooks": {
|
"pre-commit": "npm run format && npm run lint && npm run build && npm run release"
|
||||||
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
src/bin/php_pcov.dll
Normal file
BIN
src/bin/php_pcov.dll
Normal file
Binary file not shown.
BIN
src/bin/php_ts_pcov.dll
Normal file
BIN
src/bin/php_ts_pcov.dll
Normal file
Binary file not shown.
@ -9,17 +9,12 @@ export async function addINIValuesUnix(
|
|||||||
ini_values_csv: string
|
ini_values_csv: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
||||||
let script = '';
|
let script = '\n';
|
||||||
await utils.asyncForEach(ini_values, async function (line: string) {
|
await utils.asyncForEach(ini_values, async function(line: string) {
|
||||||
script +=
|
script +=
|
||||||
'\n' + (await utils.addLog('$tick', line, 'Added to php.ini', 'linux'));
|
(await utils.addLog('$tick', line, 'Added to php.ini', 'linux')) + '\n';
|
||||||
});
|
});
|
||||||
return (
|
return 'echo "' + ini_values.join('\n') + '" >> $ini_file' + script;
|
||||||
'echo "' +
|
|
||||||
ini_values.join('\n') +
|
|
||||||
'" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' +
|
|
||||||
script
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,12 +27,15 @@ export async function addINIValuesWindows(
|
|||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
await utils.asyncForEach(ini_values, async function (line: string) {
|
await utils.asyncForEach(ini_values, async function(line: string) {
|
||||||
script +=
|
script +=
|
||||||
(await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
|
(await utils.addLog('$tick', line, 'Added to php.ini', 'win32')) + '\n';
|
||||||
});
|
});
|
||||||
return (
|
return (
|
||||||
'Add-Content "$php_dir\\php.ini" "' + ini_values.join('\n') + '"' + script
|
'Add-Content C:\\tools\\php\\php.ini "' +
|
||||||
|
ini_values.join('\n') +
|
||||||
|
'"' +
|
||||||
|
script
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,28 +43,27 @@ export async function addINIValuesWindows(
|
|||||||
* Function to add custom ini values
|
* Function to add custom ini values
|
||||||
*
|
*
|
||||||
* @param ini_values_csv
|
* @param ini_values_csv
|
||||||
* @param os
|
* @param os_version
|
||||||
* @param no_step
|
|
||||||
*/
|
*/
|
||||||
export async function addINIValues(
|
export async function addINIValues(
|
||||||
ini_values_csv: string,
|
ini_values_csv: string,
|
||||||
os: string,
|
os_version: string,
|
||||||
no_step = false
|
no_step = false
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
switch (no_step) {
|
switch (no_step) {
|
||||||
case true:
|
case true:
|
||||||
script +=
|
script +=
|
||||||
(await utils.stepLog('Add php.ini values', os)) +
|
(await utils.stepLog('Add php.ini values', os_version)) +
|
||||||
(await utils.suppressOutput(os)) +
|
(await utils.suppressOutput(os_version)) +
|
||||||
'\n';
|
'\n';
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
default:
|
default:
|
||||||
script += (await utils.stepLog('Add php.ini values', os)) + '\n';
|
script += (await utils.stepLog('Add php.ini values', os_version)) + '\n';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (os) {
|
switch (os_version) {
|
||||||
case 'win32':
|
case 'win32':
|
||||||
return script + (await addINIValuesWindows(ini_values_csv));
|
return script + (await addINIValuesWindows(ini_values_csv));
|
||||||
case 'darwin':
|
case 'darwin':
|
||||||
@ -74,8 +71,8 @@ export async function addINIValues(
|
|||||||
return script + (await addINIValuesUnix(ini_values_csv));
|
return script + (await addINIValuesUnix(ini_values_csv));
|
||||||
default:
|
default:
|
||||||
return await utils.log(
|
return await utils.log(
|
||||||
'Platform ' + os + ' is not supported',
|
'Platform ' + os_version + ' is not supported',
|
||||||
os,
|
os_version,
|
||||||
'error'
|
'error'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
amqp=amqp
|
|
||||||
apcu=apcu
|
|
||||||
couchbase=couchbase
|
|
||||||
event=event
|
|
||||||
expect=expect
|
|
||||||
gnupg=gnupg
|
|
||||||
grpc=grpc
|
|
||||||
igbinary=igbinary
|
|
||||||
imagick=imagick
|
|
||||||
imap=imap
|
|
||||||
mailparse=mailparse
|
|
||||||
mcrypt=mcrypt
|
|
||||||
memcache=memcache
|
|
||||||
memcached=memcached
|
|
||||||
mongodb=mongodb
|
|
||||||
msgpack=msgpack
|
|
||||||
pcov=pcov
|
|
||||||
pecl_http=http
|
|
||||||
phalcon3=phalcon
|
|
||||||
phalcon4=phalcon
|
|
||||||
propro=propro
|
|
||||||
protobuf=protobuf
|
|
||||||
psr=psr
|
|
||||||
raphf=raphf
|
|
||||||
rdkafka=rdkafka
|
|
||||||
redis=redis
|
|
||||||
ssh2=ssh2
|
|
||||||
swoole=swoole
|
|
||||||
vips=vips
|
|
||||||
xdebug=xdebug
|
|
||||||
xdebug2=xdebug
|
|
||||||
xlswriter=xlswriter
|
|
||||||
yaml=yaml
|
|
||||||
zmq=zmq
|
|
@ -1,2 +0,0 @@
|
|||||||
COMPOSER_PROCESS_TIMEOUT=0
|
|
||||||
COMPOSER_NO_INTERACTION=1
|
|
58
src/configs/config.yaml
Normal file
58
src/configs/config.yaml
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
variants:
|
||||||
|
dev:
|
||||||
|
bcmath:
|
||||||
|
calendar:
|
||||||
|
cli:
|
||||||
|
ctype:
|
||||||
|
dom:
|
||||||
|
fileinfo:
|
||||||
|
filter:
|
||||||
|
ipc:
|
||||||
|
iconv:
|
||||||
|
json:
|
||||||
|
mbregex:
|
||||||
|
mbstring:
|
||||||
|
mhash:
|
||||||
|
mcrypt:
|
||||||
|
pcntl:
|
||||||
|
pcre:
|
||||||
|
pdo:
|
||||||
|
phar:
|
||||||
|
posix:
|
||||||
|
sockets:
|
||||||
|
tokenizer:
|
||||||
|
xml:
|
||||||
|
curl:
|
||||||
|
openssl:
|
||||||
|
zip:
|
||||||
|
gd:
|
||||||
|
- --with-freetype
|
||||||
|
- --with-pdo-mysql=mysqlnd
|
||||||
|
- --with-mysqli=mysqlnd
|
||||||
|
- --with-pgsql
|
||||||
|
- --with-pdo-pgsql
|
||||||
|
- --with-gmp=/usr/local/opt/gmp
|
||||||
|
- --with-openssl
|
||||||
|
- --with-pear
|
||||||
|
- --with-zip
|
||||||
|
- --with-libxml
|
||||||
|
- --with-kerberos
|
||||||
|
- --with-gd
|
||||||
|
- --with-ffi
|
||||||
|
- --with-curl
|
||||||
|
- --with-mhash
|
||||||
|
- --with-readline=/usr/local/opt/readline
|
||||||
|
- --with-iconv=/usr/local/opt/libiconv
|
||||||
|
- --with-icu-dir=/usr/local/opt/icu4c
|
||||||
|
- --with-config-file-path=/etc
|
||||||
|
- --enable-intl
|
||||||
|
- --enable-xml
|
||||||
|
- --enable-sysvsem
|
||||||
|
- --enable-sysvshm
|
||||||
|
- --enable-sysvmsg
|
||||||
|
- --enable-phpdbg
|
||||||
|
- --enable-exif
|
||||||
|
- --enable-gd
|
||||||
|
- --enable-soap
|
||||||
|
- --enable-xmlreader
|
||||||
|
- --enable-zend-test=shared
|
@ -1,3 +0,0 @@
|
|||||||
opcache.enable=1
|
|
||||||
opcache.jit_buffer_size=256M
|
|
||||||
opcache.jit=1235
|
|
@ -1,2 +0,0 @@
|
|||||||
date.timezone=UTC
|
|
||||||
memory_limit=-1
|
|
@ -1 +0,0 @@
|
|||||||
xdebug.mode=coverage
|
|
@ -1,19 +0,0 @@
|
|||||||
8,jessie
|
|
||||||
9,stretch
|
|
||||||
10,buster
|
|
||||||
11,bullseye
|
|
||||||
12,bookworm
|
|
||||||
13,trixie
|
|
||||||
16.04 LTS,xenial
|
|
||||||
16.10,yakkety
|
|
||||||
17.04,zesty
|
|
||||||
17.10,artful
|
|
||||||
18.04 LTS,bionic
|
|
||||||
18.10,cosmic
|
|
||||||
19.04,disco
|
|
||||||
19.10,eoan
|
|
||||||
20.04 LTS,focal
|
|
||||||
20.10,groovy
|
|
||||||
21.04,hirsute
|
|
||||||
21.10,impish
|
|
||||||
22.04,jammy
|
|
|
@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"latest": "8.1",
|
|
||||||
"nightly": "8.2",
|
|
||||||
"5.x": "5.6",
|
|
||||||
"7.x": "7.4",
|
|
||||||
"8.x": "8.1"
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
cgi
|
|
||||||
cli
|
|
||||||
curl
|
|
||||||
dev
|
|
||||||
fpm
|
|
||||||
intl
|
|
||||||
mbstring
|
|
||||||
mysql
|
|
||||||
opcache
|
|
||||||
pgsql
|
|
||||||
xml
|
|
||||||
zip
|
|
@ -1,279 +0,0 @@
|
|||||||
{
|
|
||||||
"churn": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "bmitch/churn-php",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"composer-normalize": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "ergebnis/composer-normalize",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"cs2pr": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "staabm/annotate-pull-request-from-checkstyle",
|
|
||||||
"extension": "",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"infection": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "infection/infection",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"phan": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "phan/phan",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-v"
|
|
||||||
},
|
|
||||||
"parallel-lint": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "php-parallel-lint/PHP-Parallel-Lint",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "v",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"php-cs-fixer": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "FriendsOfPHP/PHP-CS-Fixer",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"fetch_latest": "true",
|
|
||||||
"version_prefix": "v",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"phpcbf": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "squizlabs/PHP_CodeSniffer",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpcs": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "squizlabs/PHP_CodeSniffer",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpDocumentor": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "phpDocumentor/phpDocumentor",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"alias": "phpdoc",
|
|
||||||
"version_prefix": "v",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpmd": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "phpmd/phpmd",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpspec": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "phpspec/phpspec",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"phpstan": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "phpstan/phpstan",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"psalm": {
|
|
||||||
"type": "phar",
|
|
||||||
"repository": "vimeo/psalm",
|
|
||||||
"extension": ".phar",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-v"
|
|
||||||
},
|
|
||||||
"behat": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "behat/behat",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"codeception": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "codeception/codeception",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"automatic-composer-prefetcher": {
|
|
||||||
"type": "composer",
|
|
||||||
"alias": "composer-prefetcher",
|
|
||||||
"repository": "narrowspark/automatic-composer-prefetcher",
|
|
||||||
"scope": "global"
|
|
||||||
},
|
|
||||||
"composer-require-checker": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "maglnet/composer-require-checker",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"composer-unused": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "icanhazstring/composer-unused",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"flex": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "symfony/flex",
|
|
||||||
"scope": "global"
|
|
||||||
},
|
|
||||||
"phinx": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "robmorgan/phinx",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"phplint": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "overtrue/phplint",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"phpunit-bridge": {
|
|
||||||
"alias": "simple-phpunit",
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "symfony/phpunit-bridge",
|
|
||||||
"scope": "global"
|
|
||||||
},
|
|
||||||
"phpunit-polyfills": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "yoast/phpunit-polyfills",
|
|
||||||
"scope": "global"
|
|
||||||
},
|
|
||||||
"prestissimo": {
|
|
||||||
"type": "composer",
|
|
||||||
"repository": "hirak/prestissimo",
|
|
||||||
"scope": "global"
|
|
||||||
},
|
|
||||||
"vapor-cli": {
|
|
||||||
"type": "composer",
|
|
||||||
"alias": "vapor",
|
|
||||||
"repository": "laravel/vapor-cli",
|
|
||||||
"scope": "scoped"
|
|
||||||
},
|
|
||||||
"blackfire": {
|
|
||||||
"type": "custom-package",
|
|
||||||
"alias": "blackfire-agent"
|
|
||||||
},
|
|
||||||
"grpc_php_plugin": {
|
|
||||||
"type": "custom-package",
|
|
||||||
"repository": "grpc/grpc",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "v"
|
|
||||||
},
|
|
||||||
"protoc": {
|
|
||||||
"type": "custom-package",
|
|
||||||
"repository": "protocolbuffers/protobuf",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "v"
|
|
||||||
},
|
|
||||||
"symfony-cli": {
|
|
||||||
"alias": "symfony",
|
|
||||||
"type": "custom-package",
|
|
||||||
"repository": "symfony-cli/symfony-cli",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"version_prefix": "-V"
|
|
||||||
},
|
|
||||||
"blackfire-player": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"domain": "https://get.blackfire.io",
|
|
||||||
"function": "blackfire_player",
|
|
||||||
"version_prefix": "v",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"composer": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"domain": "https://getcomposer.org",
|
|
||||||
"repository": "composer/composer",
|
|
||||||
"function": "composer"
|
|
||||||
},
|
|
||||||
"deployer": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"domain": "https://deployer.org",
|
|
||||||
"repository": "deployphp/deployer",
|
|
||||||
"function": "deployer",
|
|
||||||
"version_prefix": "v",
|
|
||||||
"version_parameter": "-V"
|
|
||||||
},
|
|
||||||
"pecl": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"function": "pecl"
|
|
||||||
},
|
|
||||||
"phing": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"domain": "https://www.phing.info",
|
|
||||||
"repository": "phingofficial/phing",
|
|
||||||
"function": "phing",
|
|
||||||
"extension": ".phar",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "-v"
|
|
||||||
},
|
|
||||||
"phive": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"repository": "phar-io/phive",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"function": "phive",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "status"
|
|
||||||
},
|
|
||||||
"phpcpd": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"repository": "sebastianbergmann/phpcpd",
|
|
||||||
"domain": "https://phar.phpunit.de",
|
|
||||||
"function": "phpcpd",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpunit": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"repository": "sebastianbergmann/phpunit",
|
|
||||||
"domain": "https://phar.phpunit.de",
|
|
||||||
"function": "phpunit",
|
|
||||||
"version_prefix": "",
|
|
||||||
"version_parameter": "--version"
|
|
||||||
},
|
|
||||||
"phpize": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"function": "dev_tools",
|
|
||||||
"alias": "php-config"
|
|
||||||
},
|
|
||||||
"php-config": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"function": "dev_tools"
|
|
||||||
},
|
|
||||||
"wp-cli": {
|
|
||||||
"type": "custom-function",
|
|
||||||
"function": "wp_cli",
|
|
||||||
"repository": "wp-cli/wp-cli",
|
|
||||||
"domain": "https://github.com",
|
|
||||||
"alias": "wp",
|
|
||||||
"extension": ".phar",
|
|
||||||
"version_parameter": "--version",
|
|
||||||
"version_prefix": "v"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,126 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
||||||
"$id": "https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/tools_schema.json",
|
|
||||||
"type": "object",
|
|
||||||
"title": "Tools",
|
|
||||||
"default": {},
|
|
||||||
"examples": [
|
|
||||||
{
|
|
||||||
"tool": {
|
|
||||||
"alias": "tool_alias",
|
|
||||||
"domain": "https://example.com",
|
|
||||||
"extension": ".ext",
|
|
||||||
"fetch_latest": "true",
|
|
||||||
"function": "function_name",
|
|
||||||
"repository": "user/tool",
|
|
||||||
"scope": "global, scoped",
|
|
||||||
"type": "phar, composer, custom-package or custom-function",
|
|
||||||
"version_parameter": "--version",
|
|
||||||
"version_prefix": "v"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"items": {
|
|
||||||
"properties": {
|
|
||||||
"alias": {
|
|
||||||
"$id": "#/items/properties/alias",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The alias schema",
|
|
||||||
"description": "Alias for a tool.",
|
|
||||||
"examples": [
|
|
||||||
"tool_alias"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"domain": {
|
|
||||||
"$id": "#/items/properties/domain",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The domain schema",
|
|
||||||
"description": "Domain URL of the tool.",
|
|
||||||
"examples": [
|
|
||||||
"https://example.com"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"extension": {
|
|
||||||
"$id": "#/items/properties/extension",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The extension schema",
|
|
||||||
"description": "File extension of the tool.",
|
|
||||||
"examples": [
|
|
||||||
".ext"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fetch_latest": {
|
|
||||||
"$id": "#/items/properties/fetch_latest",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The fetch_latest schema",
|
|
||||||
"description": "Fetch the latest version from GitHub releases.",
|
|
||||||
"enum": [
|
|
||||||
"true",
|
|
||||||
"false"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"function": {
|
|
||||||
"$id": "#/items/properties/function",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The function schema",
|
|
||||||
"description": "Function name in tools.ts which returns the script to setup the tool.",
|
|
||||||
"examples": [
|
|
||||||
"function_name"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"$id": "#/items/properties/repository",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The repository schema",
|
|
||||||
"description": "GitHub repository of the tool.",
|
|
||||||
"examples": [
|
|
||||||
"user/tool"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scope": {
|
|
||||||
"$id": "#/items/properties/scope",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The scope schema",
|
|
||||||
"description": "Scope of tool installation: global or scoped",
|
|
||||||
"enum": [
|
|
||||||
"global",
|
|
||||||
"scoped"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"$id": "#/items/properties/type",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The type schema",
|
|
||||||
"description": "Type of tool: phar, composer, custom-package or custom-function.",
|
|
||||||
"enum": [
|
|
||||||
"phar",
|
|
||||||
"composer",
|
|
||||||
"custom-package",
|
|
||||||
"custom-function"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"version_parameter": {
|
|
||||||
"$id": "#/items/properties/version_parameter",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The version_parameter schema",
|
|
||||||
"description": "Parameter to get the tool version.",
|
|
||||||
"examples": [
|
|
||||||
"--version"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"version_prefix": {
|
|
||||||
"$id": "#/items/properties/version_prefix",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The version_prefix schema",
|
|
||||||
"description": "Prefix of the version in the download URL.",
|
|
||||||
"examples": [
|
|
||||||
"v"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": [
|
|
||||||
"type"
|
|
||||||
],
|
|
||||||
"additionalProperties": true
|
|
||||||
}
|
|
||||||
}
|
|
141
src/coverage.ts
141
src/coverage.ts
@ -2,86 +2,84 @@ import * as utils from './utils';
|
|||||||
import * as extensions from './extensions';
|
import * as extensions from './extensions';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
|
|
||||||
export async function checkXdebugError(
|
|
||||||
extension: string,
|
|
||||||
version: string
|
|
||||||
): Promise<string> {
|
|
||||||
if (
|
|
||||||
(/^5\.[3-6]$|^7\.[0-1]$/.test(version) && extension == 'xdebug3') ||
|
|
||||||
(/^8\.[0-9]$/.test(version) && extension == 'xdebug2')
|
|
||||||
) {
|
|
||||||
return extension + ' is not supported on PHP ' + version;
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to setup Xdebug
|
* Function to setup Xdebug
|
||||||
*
|
*
|
||||||
* @param extension
|
|
||||||
* @param version
|
* @param version
|
||||||
* @param os
|
* @param os_version
|
||||||
* @param pipe
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addCoverageXdebug(
|
export async function addCoverageXdebug(
|
||||||
extension: string,
|
|
||||||
version: string,
|
version: string,
|
||||||
os: string,
|
os_version: string,
|
||||||
pipe: string
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let script = '\n';
|
switch (version) {
|
||||||
let message: string = await checkXdebugError(extension, version);
|
case '8.0':
|
||||||
let status = '$cross';
|
return (
|
||||||
if (!message) {
|
'\n' +
|
||||||
script +=
|
(await utils.addLog(
|
||||||
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
'$cross',
|
||||||
extension = extension == 'xdebug3' ? 'xdebug' : extension;
|
'xdebug',
|
||||||
script +=
|
'Xdebug currently only supports PHP 7.4 or lower',
|
||||||
(await extensions.addExtension(extension, version, os, true)) + pipe;
|
os_version
|
||||||
script += await utils.setVariable(
|
))
|
||||||
'xdebug_version',
|
);
|
||||||
'php -r "echo phpversion(\'xdebug\');"',
|
case '7.4':
|
||||||
os
|
default:
|
||||||
);
|
return (
|
||||||
message = 'Xdebug $xdebug_version enabled as coverage driver';
|
(await extensions.addExtension('xdebug', version, os_version, true)) +
|
||||||
status = '$tick';
|
pipe +
|
||||||
|
'\n' +
|
||||||
|
(await utils.addLog(
|
||||||
|
'$tick',
|
||||||
|
'xdebug',
|
||||||
|
'Xdebug enabled as coverage driver',
|
||||||
|
os_version
|
||||||
|
))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
script += await utils.addLog(status, extension, message, os);
|
|
||||||
return script;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to setup PCOV
|
* Function to setup PCOV
|
||||||
*
|
*
|
||||||
* @param version
|
* @param version
|
||||||
* @param os
|
* @param os_version
|
||||||
* @param pipe
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addCoveragePCOV(
|
export async function addCoveragePCOV(
|
||||||
version: string,
|
version: string,
|
||||||
os: string,
|
os_version: string,
|
||||||
pipe: string
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
switch (true) {
|
switch (true) {
|
||||||
default:
|
default:
|
||||||
script +=
|
script +=
|
||||||
(await extensions.addExtension(':xdebug:false', version, os, true)) +
|
(await extensions.addExtension('pcov', version, os_version, true)) +
|
||||||
pipe;
|
pipe +
|
||||||
|
'\n';
|
||||||
script +=
|
script +=
|
||||||
(await extensions.addExtension('pcov', version, os, true)) + pipe;
|
(await config.addINIValues('pcov.enabled=1', os_version, true)) + '\n';
|
||||||
script += (await config.addINIValues('pcov.enabled=1', os, true)) + '\n';
|
|
||||||
script += await utils.setVariable(
|
// add command to disable xdebug and enable pcov
|
||||||
'pcov_version',
|
switch (os_version) {
|
||||||
'php -r "echo phpversion(\'pcov\');"',
|
case 'linux':
|
||||||
os
|
case 'darwin':
|
||||||
);
|
script += 'remove_extension xdebug' + pipe + '\n';
|
||||||
|
break;
|
||||||
|
case 'win32':
|
||||||
|
script += 'Remove-Extension xdebug' + pipe + '\n';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// success
|
// success
|
||||||
script += await utils.addLog(
|
script += await utils.addLog(
|
||||||
'$tick',
|
'$tick',
|
||||||
'coverage: pcov',
|
'coverage: pcov',
|
||||||
'PCOV $pcov_version enabled as coverage driver',
|
'PCOV enabled as coverage driver',
|
||||||
os
|
os_version
|
||||||
);
|
);
|
||||||
// version is not supported
|
// version is not supported
|
||||||
break;
|
break;
|
||||||
@ -91,7 +89,7 @@ export async function addCoveragePCOV(
|
|||||||
'$cross',
|
'$cross',
|
||||||
'pcov',
|
'pcov',
|
||||||
'PHP 7.1 or newer is required',
|
'PHP 7.1 or newer is required',
|
||||||
os
|
os_version
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -103,20 +101,32 @@ export async function addCoveragePCOV(
|
|||||||
* Function to disable Xdebug and PCOV
|
* Function to disable Xdebug and PCOV
|
||||||
*
|
*
|
||||||
* @param version
|
* @param version
|
||||||
* @param os
|
* @param os_version
|
||||||
* @param pipe
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function disableCoverage(
|
export async function disableCoverage(
|
||||||
version: string,
|
version: string,
|
||||||
os: string,
|
os_version: string,
|
||||||
pipe: string
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
script +=
|
switch (os_version) {
|
||||||
(await extensions.addExtension(':pcov:false', version, os, true)) + pipe;
|
case 'linux':
|
||||||
script +=
|
case 'darwin':
|
||||||
(await extensions.addExtension(':xdebug:false', version, os, true)) + pipe;
|
script += 'remove_extension xdebug' + pipe + '\n';
|
||||||
script += await utils.addLog('$tick', 'none', 'Disabled Xdebug and PCOV', os);
|
script += 'remove_extension pcov' + pipe + '\n';
|
||||||
|
break;
|
||||||
|
case 'win32':
|
||||||
|
script += 'Remove-Extension xdebug' + pipe + '\n';
|
||||||
|
script += 'Remove-Extension pcov' + pipe + '\n';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
script += await utils.addLog(
|
||||||
|
'$tick',
|
||||||
|
'none',
|
||||||
|
'Disabled Xdebug and PCOV',
|
||||||
|
os_version
|
||||||
|
);
|
||||||
|
|
||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
@ -126,27 +136,24 @@ export async function disableCoverage(
|
|||||||
*
|
*
|
||||||
* @param coverage_driver
|
* @param coverage_driver
|
||||||
* @param version
|
* @param version
|
||||||
* @param os
|
* @param os_version
|
||||||
*/
|
*/
|
||||||
export async function addCoverage(
|
export async function addCoverage(
|
||||||
coverage_driver: string,
|
coverage_driver: string,
|
||||||
version: string,
|
version: string,
|
||||||
os: string
|
os_version: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
coverage_driver = coverage_driver.toLowerCase();
|
coverage_driver = coverage_driver.toLowerCase();
|
||||||
const script: string = '\n' + (await utils.stepLog('Setup Coverage', os));
|
const script: string =
|
||||||
const pipe: string = (await utils.suppressOutput(os)) + '\n';
|
'\n' + (await utils.stepLog('Setup Coverage', os_version));
|
||||||
|
const pipe: string = await utils.suppressOutput(os_version);
|
||||||
switch (coverage_driver) {
|
switch (coverage_driver) {
|
||||||
case 'pcov':
|
case 'pcov':
|
||||||
return script + (await addCoveragePCOV(version, os, pipe));
|
return script + (await addCoveragePCOV(version, os_version, pipe));
|
||||||
case 'xdebug':
|
case 'xdebug':
|
||||||
case 'xdebug2':
|
return script + (await addCoverageXdebug(version, os_version, pipe));
|
||||||
case 'xdebug3':
|
|
||||||
return (
|
|
||||||
script + (await addCoverageXdebug(coverage_driver, version, os, pipe))
|
|
||||||
);
|
|
||||||
case 'none':
|
case 'none':
|
||||||
return script + (await disableCoverage(version, os, pipe));
|
return script + (await disableCoverage(version, os_version, pipe));
|
||||||
default:
|
default:
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import * as path from 'path';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -5,101 +6,94 @@ import * as utils from './utils';
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addExtensionDarwin(
|
export async function addExtensionDarwin(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string
|
version: string,
|
||||||
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
||||||
let add_script = '\n';
|
let script = '\n';
|
||||||
let remove_script = '';
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||||
await utils.asyncForEach(extensions, async function (extension: string) {
|
extension = extension.toLowerCase();
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
const [ext_name, ext_version]: string[] = extension.split('-');
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
const prefix = await utils.getExtensionPrefix(ext_name);
|
||||||
|
let install_command = '';
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// match :extension
|
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
case /^:/.test(ext_name):
|
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||||
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
return;
|
|
||||||
// Match none
|
|
||||||
case /^none$/.test(ext_name):
|
|
||||||
add_script += '\ndisable_all_shared';
|
|
||||||
return;
|
|
||||||
// match extensions for compiling from source
|
|
||||||
case /.+-.+\/.+@.+/.test(extension):
|
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
||||||
return;
|
|
||||||
// match 5.3blackfire...8.1blackfire
|
|
||||||
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
||||||
// match couchbase, event, geos, pdo_oci, oci8, http, pecl_http
|
|
||||||
// match 5.3ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /^couchbase|^event|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
install_command =
|
||||||
extension
|
'bash ' +
|
||||||
):
|
path.join(__dirname, '../src/scripts/ext/blackfire_darwin.sh') +
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
' ' +
|
||||||
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
version +
|
||||||
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
' ' +
|
||||||
add_script += await utils.customPackage(
|
(await utils.getBlackfireVersion(ext_version));
|
||||||
ext_name,
|
|
||||||
'extensions',
|
|
||||||
extension,
|
|
||||||
'darwin'
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match pre-release versions. For example - xdebug-beta
|
|
||||||
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nadd_unstable_extension',
|
|
||||||
ext_name,
|
|
||||||
ext_version,
|
|
||||||
ext_prefix
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match semver
|
|
||||||
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nadd_pecl_extension',
|
|
||||||
ext_name,
|
|
||||||
ext_version,
|
|
||||||
ext_prefix
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match 5.3pcov to 7.0pcov
|
|
||||||
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
||||||
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
|
||||||
return;
|
|
||||||
// match 5.6 and newer - amqp, apcu, expect, gnupg, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
|
||||||
// match 7.1 and newer - pcov
|
|
||||||
// match 5.6 to 7.4 - propro
|
|
||||||
// match 7.0 and newer - vips, xlswriter
|
|
||||||
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
||||||
version_extension
|
|
||||||
):
|
|
||||||
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
|
||||||
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
||||||
case /(?<!5\.[3-6])(vips|xlswriter)/.test(version_extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nadd_brew_extension',
|
|
||||||
ext_name,
|
|
||||||
ext_prefix
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match sqlite
|
|
||||||
case /^sqlite$/.test(extension):
|
|
||||||
extension = 'sqlite3';
|
|
||||||
break;
|
break;
|
||||||
|
// match pre-release versions
|
||||||
|
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||||
|
script +=
|
||||||
|
'\nadd_unstable_extension ' +
|
||||||
|
ext_name +
|
||||||
|
' ' +
|
||||||
|
ext_version +
|
||||||
|
' ' +
|
||||||
|
prefix;
|
||||||
|
return;
|
||||||
|
// match exact versions
|
||||||
|
case /.*-\d+\.\d+\.\d+.*/.test(version_extension):
|
||||||
|
script +=
|
||||||
|
'\nadd_pecl_extension ' + ext_name + ' ' + ext_version + ' ' + prefix;
|
||||||
|
return;
|
||||||
|
case /5\.3xdebug/.test(version_extension):
|
||||||
|
install_command = 'sudo pecl install -f xdebug-2.2.7' + pipe;
|
||||||
|
break;
|
||||||
|
case /5\.4xdebug/.test(version_extension):
|
||||||
|
install_command = 'sudo pecl install -f xdebug-2.4.1' + pipe;
|
||||||
|
break;
|
||||||
|
case /5\.[5-6]xdebug/.test(version_extension):
|
||||||
|
install_command = 'sudo pecl install -f xdebug-2.5.5' + pipe;
|
||||||
|
break;
|
||||||
|
case /7\.0xdebug/.test(version_extension):
|
||||||
|
install_command = 'sudo pecl install -f xdebug-2.9.0' + pipe;
|
||||||
|
break;
|
||||||
|
case /5\.6redis/.test(version_extension):
|
||||||
|
install_command = 'sudo pecl install -f redis-2.2.8' + pipe;
|
||||||
|
break;
|
||||||
|
case /[5-9]\.\dimagick/.test(version_extension):
|
||||||
|
install_command =
|
||||||
|
'brew install pkg-config imagemagick' +
|
||||||
|
pipe +
|
||||||
|
' && sudo pecl install -f imagick' +
|
||||||
|
pipe;
|
||||||
|
break;
|
||||||
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
|
script +=
|
||||||
|
'sh ' +
|
||||||
|
path.join(__dirname, '../src/scripts/ext/phalcon_darwin.sh') +
|
||||||
|
' ' +
|
||||||
|
extension +
|
||||||
|
' ' +
|
||||||
|
version;
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
|
install_command = 'sudo pecl install -f ' + extension + pipe;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
script +=
|
||||||
|
'\nadd_extension ' +
|
||||||
|
extension +
|
||||||
|
' "' +
|
||||||
|
install_command +
|
||||||
|
'" ' +
|
||||||
|
(await utils.getExtensionPrefix(extension));
|
||||||
});
|
});
|
||||||
return add_script + remove_script;
|
return script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -107,114 +101,68 @@ export async function addExtensionDarwin(
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addExtensionWindows(
|
export async function addExtensionWindows(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string
|
version: string,
|
||||||
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
||||||
let add_script = '\n';
|
let script = '\n';
|
||||||
let remove_script = '';
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||||
await utils.asyncForEach(extensions, async function (extension: string) {
|
extension = extension.toLowerCase();
|
||||||
const [ext_name, ext_version]: string[] = extension.split('-');
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
let matches: RegExpExecArray;
|
let matches: RegExpExecArray;
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// Match :extension
|
// match 5.4blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
case /^:/.test(ext_name):
|
// match 5.4blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||||
remove_script += '\nDisable-Extension' + ext_name.replace(/:/g, ' ');
|
case /^(5\.[4-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
break;
|
|
||||||
// Match none
|
|
||||||
case /^none$/.test(ext_name):
|
|
||||||
add_script += '\nDisable-AllShared';
|
|
||||||
break;
|
|
||||||
// match 5.3blackfire...8.1blackfire
|
|
||||||
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
||||||
// match pdo_oci and oci8
|
|
||||||
// match 5.3ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
// match 7.1pecl_http...8.1pecl_http and 7.1http...8.1http
|
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.1)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
script +=
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
'\n& ' +
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
path.join(__dirname, '../src/scripts/ext/blackfire.ps1') +
|
||||||
case /^(7\.[1-4]|8\.1)(pecl_)?http/.test(version_extension):
|
' ' +
|
||||||
add_script += await utils.customPackage(
|
version +
|
||||||
ext_name,
|
' ' +
|
||||||
'extensions',
|
(await utils.getBlackfireVersion(ext_version));
|
||||||
extension,
|
|
||||||
'win32'
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
// match pre-release versions. For example - xdebug-beta
|
// match pre-release versions
|
||||||
case /.+-(stable|beta|alpha|devel|snapshot)/.test(extension):
|
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||||
add_script += await utils.joins(
|
script += '\nAdd-Extension ' + ext_name + ' ' + ext_version;
|
||||||
'\nAdd-Extension',
|
|
||||||
ext_name,
|
|
||||||
ext_version.replace('stable', '')
|
|
||||||
);
|
|
||||||
break;
|
break;
|
||||||
// match extensions for compiling from source
|
// match exact versions
|
||||||
case /.+-.+\/.+@.+/.test(extension):
|
case /.*-\d+\.\d+\.\d+$/.test(version_extension):
|
||||||
add_script += await utils.getUnsupportedLog(
|
script += '\nAdd-Extension ' + ext_name + ' stable ' + ext_version;
|
||||||
extension,
|
return;
|
||||||
version,
|
case /.*-(\d+\.\d+\.\d)+(beta|alpha|devel|snapshot)\d*/.test(
|
||||||
'win32'
|
version_extension
|
||||||
);
|
):
|
||||||
break;
|
matches = /.*-(\d+\.\d+\.\d)+(beta|alpha|devel|snapshot)\d*/.exec(
|
||||||
// match semver without state
|
|
||||||
case /.+-\d+\.\d+\.\d+$/.test(extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nAdd-Extension',
|
|
||||||
ext_name,
|
|
||||||
'stable',
|
|
||||||
ext_version
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
// match semver with state
|
|
||||||
case /.+-\d+\.\d+\.\d+[a-zA-Z]+\d*/.test(extension):
|
|
||||||
matches = /.+-(\d+\.\d+\.\d+)([a-zA-Z]+)\d*/.exec(
|
|
||||||
version_extension
|
version_extension
|
||||||
) as RegExpExecArray;
|
) as RegExpExecArray;
|
||||||
add_script += await utils.joins(
|
script +=
|
||||||
'\nAdd-Extension',
|
'\nAdd-Extension ' + ext_name + ' ' + matches[2] + ' ' + matches[1];
|
||||||
ext_name,
|
return;
|
||||||
matches[2].replace('preview', 'devel'),
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
||||||
matches[1]
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
);
|
script +=
|
||||||
break;
|
'\n& ' +
|
||||||
// match 7.2xdebug2 to 7.4xdebug2
|
path.join(__dirname, '../src/scripts/ext/phalcon.ps1') +
|
||||||
case /7\.[2-4]xdebug2/.test(version_extension):
|
' ' +
|
||||||
add_script += '\nAdd-Extension xdebug stable 2.9.8';
|
extension +
|
||||||
break;
|
' ' +
|
||||||
// match 5.3pcov to 7.0pcov
|
version +
|
||||||
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
'\n';
|
||||||
add_script += await utils.getUnsupportedLog('pcov', version, 'win32');
|
|
||||||
break;
|
|
||||||
// match 5.3 to 5.6 - mysql, mysqli, mysqlnd
|
|
||||||
case /^5\.[3-6](?<!pdo_)(mysql|mysqli|mysqlnd)$/.test(version_extension):
|
|
||||||
add_script +=
|
|
||||||
'\nAdd-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
|
||||||
break;
|
|
||||||
// match 7.0 and newer mysql, mysqli and mysqlnd
|
|
||||||
case /(?<!5\.[3-6])(?<!pdo_)(mysql|mysqli|mysqlnd)$/.test(
|
|
||||||
version_extension
|
|
||||||
):
|
|
||||||
add_script += '\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
|
||||||
break;
|
|
||||||
// match sqlite
|
|
||||||
case /^sqlite$/.test(extension):
|
|
||||||
extension = 'sqlite3';
|
|
||||||
add_script += await utils.joins('\nAdd-Extension', extension);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
add_script += '\nAdd-Extension ' + extension;
|
script += '\nAdd-Extension ' + extension;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return add_script + remove_script;
|
return script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -222,106 +170,96 @@ export async function addExtensionWindows(
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
|
* @param pipe
|
||||||
*/
|
*/
|
||||||
export async function addExtensionLinux(
|
export async function addExtensionLinux(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string
|
version: string,
|
||||||
|
pipe: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
||||||
let add_script = '\n';
|
let script = '\n';
|
||||||
let remove_script = '';
|
await utils.asyncForEach(extensions, async function(extension: string) {
|
||||||
await utils.asyncForEach(extensions, async function (extension: string) {
|
extension = extension.toLowerCase();
|
||||||
const version_extension: string = version + extension;
|
const version_extension: string = version + extension;
|
||||||
const [ext_name, ext_version]: string[] = extension
|
const [ext_name, ext_version]: string[] = extension.split('-');
|
||||||
.split(/-(.+)/)
|
const prefix = await utils.getExtensionPrefix(ext_name);
|
||||||
.filter(Boolean);
|
let install_command = '';
|
||||||
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
// Match :extension
|
// match 5.3blackfire...5.6blackfire, 7.0blackfire...7.4blackfire
|
||||||
case /^:/.test(ext_name):
|
// match 5.3blackfire-1.31.0...5.6blackfire-1.31.0, 7.0blackfire-1.31.0...7.4blackfire-1.31.0
|
||||||
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
case /^(5\.[3-6]|7\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
return;
|
|
||||||
// Match none
|
|
||||||
case /^none$/.test(ext_name):
|
|
||||||
add_script += '\ndisable_all_shared';
|
|
||||||
return;
|
|
||||||
// match extensions for compiling from source
|
|
||||||
case /.+-.+\/.+@.+/.test(extension):
|
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
||||||
return;
|
|
||||||
// match 5.3blackfire...8.1blackfire
|
|
||||||
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
||||||
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
|
||||||
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
||||||
// match 5.3ioncube...7.4ioncube
|
|
||||||
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
install_command =
|
||||||
version_extension
|
'bash ' +
|
||||||
):
|
path.join(__dirname, '../src/scripts/ext/blackfire.sh') +
|
||||||
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
' ' +
|
||||||
extension
|
version +
|
||||||
):
|
' ' +
|
||||||
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
(await utils.getBlackfireVersion(ext_version));
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
break;
|
||||||
|
// match pre-release versions
|
||||||
|
case /.*-(beta|alpha|devel|snapshot)/.test(version_extension):
|
||||||
|
script +=
|
||||||
|
'\nadd_unstable_extension ' +
|
||||||
|
ext_name +
|
||||||
|
' ' +
|
||||||
|
ext_version +
|
||||||
|
' ' +
|
||||||
|
prefix;
|
||||||
|
return;
|
||||||
|
// match exact versions
|
||||||
|
case /.*-\d+\.\d+\.\d+.*/.test(version_extension):
|
||||||
|
script +=
|
||||||
|
'\nadd_pecl_extension ' + ext_name + ' ' + ext_version + ' ' + prefix;
|
||||||
|
return;
|
||||||
|
// match 5.6gearman..7.4gearman
|
||||||
|
case /^((5\.6)|(7\.[0-4]))gearman$/.test(version_extension):
|
||||||
|
install_command =
|
||||||
|
'sh ' +
|
||||||
|
path.join(__dirname, '../src/scripts/ext/gearman.sh') +
|
||||||
|
' ' +
|
||||||
|
version +
|
||||||
|
pipe;
|
||||||
|
break;
|
||||||
|
// match 7.0phalcon3...7.3phalcon3 or 7.2phalcon4...7.4phalcon4
|
||||||
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
||||||
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
script +=
|
||||||
add_script += await utils.customPackage(
|
'\nsh ' +
|
||||||
ext_name,
|
path.join(__dirname, '../src/scripts/ext/phalcon.sh') +
|
||||||
'extensions',
|
' ' +
|
||||||
extension,
|
extension +
|
||||||
'linux'
|
' ' +
|
||||||
);
|
version;
|
||||||
return;
|
return;
|
||||||
// match pre-release versions. For example - xdebug-beta
|
// match 7.0xdebug..7.4xdebug
|
||||||
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
case /^7\.[0-4]xdebug$/.test(version_extension):
|
||||||
add_script += await utils.joins(
|
script +=
|
||||||
'\nadd_unstable_extension',
|
'\nupdate_extension xdebug 2.9.1' +
|
||||||
ext_name,
|
pipe +
|
||||||
ext_version,
|
'\n' +
|
||||||
ext_prefix
|
(await utils.addLog('$tick', 'xdebug', 'Enabled', 'linux'));
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match semver versions
|
|
||||||
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nadd_pecl_extension',
|
|
||||||
ext_name,
|
|
||||||
ext_version,
|
|
||||||
ext_prefix
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
// match 5.3pcov to 7.0pcov
|
|
||||||
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
||||||
add_script += await utils.getUnsupportedLog('pcov', version, 'linux');
|
|
||||||
return;
|
|
||||||
// match 7.2xdebug2...7.4xdebug2
|
|
||||||
case /^7\.[2-4]xdebug2$/.test(version_extension):
|
|
||||||
add_script += await utils.joins(
|
|
||||||
'\nadd_pecl_extension',
|
|
||||||
'xdebug',
|
|
||||||
'2.9.8',
|
|
||||||
ext_prefix
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
// match pdo extensions
|
// match pdo extensions
|
||||||
case /^pdo[_-].+/.test(extension):
|
case /.*pdo[_-].*/.test(version_extension):
|
||||||
extension = extension.replace(/pdo[_-]|3/, '');
|
script +=
|
||||||
add_script += '\nadd_pdo_extension ' + extension;
|
'\nadd_pdo_extension ' +
|
||||||
|
extension.replace('pdo_', '').replace('pdo-', '');
|
||||||
return;
|
return;
|
||||||
// match sqlite
|
|
||||||
case /^sqlite$/.test(extension):
|
|
||||||
extension = 'sqlite3';
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
|
install_command =
|
||||||
|
'sudo $debconf_fix apt-get install -y php' +
|
||||||
|
version +
|
||||||
|
'-' +
|
||||||
|
extension +
|
||||||
|
pipe;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
script +=
|
||||||
|
'\nadd_extension ' + extension + ' "' + install_command + '" ' + prefix;
|
||||||
});
|
});
|
||||||
return add_script + remove_script;
|
return script;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -329,38 +267,38 @@ export async function addExtensionLinux(
|
|||||||
*
|
*
|
||||||
* @param extension_csv
|
* @param extension_csv
|
||||||
* @param version
|
* @param version
|
||||||
* @param os
|
* @param os_version
|
||||||
* @param no_step
|
* @param log_prefix
|
||||||
*/
|
*/
|
||||||
export async function addExtension(
|
export async function addExtension(
|
||||||
extension_csv: string,
|
extension_csv: string,
|
||||||
version: string,
|
version: string,
|
||||||
os: string,
|
os_version: string,
|
||||||
no_step = false
|
no_step = false
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const log: string = await utils.stepLog('Setup Extensions', os);
|
const pipe: string = await utils.suppressOutput(os_version);
|
||||||
let script = '\n';
|
let script = '\n';
|
||||||
switch (no_step) {
|
switch (no_step) {
|
||||||
case true:
|
case true:
|
||||||
script += log + (await utils.suppressOutput(os));
|
script += (await utils.stepLog('Setup Extensions', os_version)) + pipe;
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
default:
|
default:
|
||||||
script += log;
|
script += await utils.stepLog('Setup Extensions', os_version);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (os) {
|
switch (os_version) {
|
||||||
case 'win32':
|
case 'win32':
|
||||||
return script + (await addExtensionWindows(extension_csv, version));
|
return script + (await addExtensionWindows(extension_csv, version, pipe));
|
||||||
case 'darwin':
|
case 'darwin':
|
||||||
return script + (await addExtensionDarwin(extension_csv, version));
|
return script + (await addExtensionDarwin(extension_csv, version, pipe));
|
||||||
case 'linux':
|
case 'linux':
|
||||||
return script + (await addExtensionLinux(extension_csv, version));
|
return script + (await addExtensionLinux(extension_csv, version, pipe));
|
||||||
default:
|
default:
|
||||||
return await utils.log(
|
return await utils.log(
|
||||||
'Platform ' + os + ' is not supported',
|
'Platform ' + os_version + ' is not supported',
|
||||||
os,
|
os_version,
|
||||||
'error'
|
'error'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
55
src/fetch.ts
55
src/fetch.ts
@ -1,55 +0,0 @@
|
|||||||
import {IncomingMessage, OutgoingHttpHeaders} from 'http';
|
|
||||||
import * as https from 'https';
|
|
||||||
import * as url from 'url';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to fetch a URL
|
|
||||||
*
|
|
||||||
* @param input_url
|
|
||||||
* @param auth_token
|
|
||||||
* @param redirect_count
|
|
||||||
*/
|
|
||||||
export async function fetch(
|
|
||||||
input_url: string,
|
|
||||||
auth_token?: string,
|
|
||||||
redirect_count = 5
|
|
||||||
): Promise<Record<string, string>> {
|
|
||||||
const fetch_promise: Promise<Record<string, string>> = new Promise(
|
|
||||||
resolve => {
|
|
||||||
const url_object: url.UrlObject = new url.URL(input_url);
|
|
||||||
const headers: OutgoingHttpHeaders = {
|
|
||||||
'User-Agent': `Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`
|
|
||||||
};
|
|
||||||
if (auth_token) {
|
|
||||||
headers.authorization = 'Bearer ' + auth_token;
|
|
||||||
}
|
|
||||||
const options: https.RequestOptions = {
|
|
||||||
hostname: url_object.hostname,
|
|
||||||
path: url_object.pathname,
|
|
||||||
headers: headers
|
|
||||||
};
|
|
||||||
const req = https.get(options, (res: IncomingMessage) => {
|
|
||||||
if (res.statusCode === 200) {
|
|
||||||
let body = '';
|
|
||||||
res.setEncoding('utf8');
|
|
||||||
res.on('data', chunk => (body += chunk));
|
|
||||||
res.on('end', () => resolve({data: `${body}`}));
|
|
||||||
} else if (
|
|
||||||
[301, 302, 303, 307, 308].includes(res.statusCode as number)
|
|
||||||
) {
|
|
||||||
if (redirect_count > 0 && res.headers.location) {
|
|
||||||
fetch(res.headers.location, auth_token, redirect_count--).then(
|
|
||||||
resolve
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
resolve({error: `${res.statusCode}: Redirect error`});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
resolve({error: `${res.statusCode}: ${res.statusMessage}`});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
req.end();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return await fetch_promise;
|
|
||||||
}
|
|
@ -1,66 +1,83 @@
|
|||||||
import path from 'path';
|
import {exec} from '@actions/exec/lib/exec';
|
||||||
import fs from 'fs';
|
|
||||||
import {exec} from '@actions/exec';
|
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
import * as coverage from './coverage';
|
import * as coverage from './coverage';
|
||||||
import * as extensions from './extensions';
|
import * as extensions from './extensions';
|
||||||
import * as tools from './tools';
|
import * as tools from './tools';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils';
|
||||||
|
import * as matchers from './matchers';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the script
|
* Build the script
|
||||||
*
|
*
|
||||||
* @param os
|
* @param filename
|
||||||
|
* @param version
|
||||||
|
* @param os_version
|
||||||
*/
|
*/
|
||||||
export async function getScript(os: string): Promise<string> {
|
export async function build(
|
||||||
const url = 'https://setup-php.com/support-ukraine';
|
filename: string,
|
||||||
const filename = os + (await utils.scriptExtension(os));
|
version: string,
|
||||||
const script_path = path.join(__dirname, '../src/scripts', filename);
|
os_version: string
|
||||||
const run_path = script_path.replace(os, 'run');
|
): Promise<string> {
|
||||||
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
|
// 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 ini_values_csv: string = await utils.getInput('ini-values', false);
|
||||||
const coverage_driver: string = await utils.getInput('coverage', false);
|
const coverage_driver: string = await utils.getInput('coverage', false);
|
||||||
const tools_csv: string = await utils.getInput('tools', false);
|
const pecl: string = await utils.getInput('pecl', false);
|
||||||
const version: string = await utils.parseVersion(
|
let tools_csv: string = await utils.getInput('tools', false);
|
||||||
await utils.getInput('php-version', true)
|
if (
|
||||||
);
|
pecl == 'true' ||
|
||||||
const ini_file: string = await utils.parseIniFile(
|
/.*-(beta|alpha|devel|snapshot).*/.test(extension_csv) ||
|
||||||
await utils.getInput('ini-file', false)
|
/.*-(\d+\.\d+\.\d+).*/.test(extension_csv)
|
||||||
);
|
) {
|
||||||
let script = await utils.joins('.', script_path, version, ini_file);
|
tools_csv = 'pecl, ' + tools_csv;
|
||||||
if (extension_csv) {
|
|
||||||
script += await extensions.addExtension(extension_csv, version, os);
|
|
||||||
}
|
}
|
||||||
script += await tools.addTools(tools_csv, version, os);
|
|
||||||
if (coverage_driver) {
|
let script: string = await utils.readScript(filename, version, os_version);
|
||||||
script += await coverage.addCoverage(coverage_driver, version, os);
|
script += await tools.addTools(tools_csv, version, os_version);
|
||||||
|
|
||||||
|
if (extension_csv) {
|
||||||
|
script += await extensions.addExtension(extension_csv, version, os_version);
|
||||||
}
|
}
|
||||||
if (ini_values_csv) {
|
if (ini_values_csv) {
|
||||||
script += await config.addINIValues(ini_values_csv, os);
|
script += await config.addINIValues(ini_values_csv, os_version);
|
||||||
|
}
|
||||||
|
if (coverage_driver) {
|
||||||
|
script += await coverage.addCoverage(coverage_driver, version, os_version);
|
||||||
}
|
}
|
||||||
script += '\n' + (await utils.stepLog(`#StandWithUkraine`, os));
|
|
||||||
script += '\n' + (await utils.addLog('$tick', 'read-more', url, os));
|
|
||||||
|
|
||||||
fs.writeFileSync(run_path, script, {mode: 0o755});
|
return await utils.writeScript(filename, script);
|
||||||
|
|
||||||
return run_path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run the script
|
* Run the script
|
||||||
*/
|
*/
|
||||||
export async function run(): Promise<void> {
|
export async function run(): Promise<void> {
|
||||||
const os: string = process.platform;
|
try {
|
||||||
const tool = await utils.scriptTool(os);
|
let version: string = await utils.getInput('php-version', true);
|
||||||
const run_path = await getScript(os);
|
version = version.length > 1 ? version.slice(0, 3) : version + '.0';
|
||||||
await exec(tool + run_path);
|
const os_version: string = process.platform;
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// call the run function
|
// call the run function
|
||||||
(async () => {
|
run();
|
||||||
await run();
|
|
||||||
})().catch(error => {
|
|
||||||
core.setFailed(error.message);
|
|
||||||
});
|
|
||||||
|
13
src/matchers.ts
Normal file
13
src/matchers.ts
Normal 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);
|
||||||
|
}
|
@ -1,306 +1,202 @@
|
|||||||
# Function to setup environment for self-hosted runners.
|
# Function to log start of a operation
|
||||||
self_hosted_helper() {
|
step_log() {
|
||||||
if ! command -v brew >/dev/null; then
|
message=$1
|
||||||
step_log "Setup Brew"
|
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
||||||
get -q -e "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/master/install.sh" && /tmp/install.sh >/dev/null 2>&1
|
}
|
||||||
add_log "${tick:?}" "Brew" "Installed Homebrew"
|
|
||||||
|
# Function to log result of a operation
|
||||||
|
add_log() {
|
||||||
|
mark=$1
|
||||||
|
subject=$2
|
||||||
|
message=$3
|
||||||
|
if [ "$mark" = "$tick" ]; then
|
||||||
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
else
|
||||||
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Disable dependency extensions
|
# Function to remove extensions
|
||||||
disable_dependency_extensions() {
|
remove_extension() {
|
||||||
local extension=$1
|
extension=$1
|
||||||
formula_file="$tap_dir/$ext_tap/Formula/$extension@${version:?}.rb"
|
sudo sed -i '' "/$extension/d" "$ini_file"
|
||||||
if [ -e "$formula_file" ]; then
|
sudo rm -rf "$scan_dir"/*"$extension"* >/dev/null 2>&1
|
||||||
IFS=" " read -r -a dependency_extensions <<< "$(grep -Eo "shivammathur.*@" "$formula_file" | xargs -I {} -n 1 basename '{}' | cut -d '@' -f 1 | tr '\n' ' ')"
|
sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
|
||||||
for dependency_extension in "${dependency_extensions[@]}"; do
|
}
|
||||||
sudo sed -Ei '' "/=(.*\/)?\"?$dependency_extension(.so)?$/d" "${ini_file:?}"
|
|
||||||
done
|
# Function to test if extension is loaded
|
||||||
|
check_extension() {
|
||||||
|
extension=$1
|
||||||
|
php -m | grep -i -q -w "$extension"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fuction to get the PECL version
|
||||||
|
get_pecl_version() {
|
||||||
|
extension=$1
|
||||||
|
stability=$2
|
||||||
|
pecl_rest='https://pecl.php.net/rest/r/'
|
||||||
|
response=$(curl -q -sSL "$pecl_rest$extension"/allreleases.xml)
|
||||||
|
pecl_version=$(echo "$response" | grep -m 1 -Eo "(\d*\.\d*\.\d*$stability\d*)")
|
||||||
|
if [ ! "$pecl_version" ]; then
|
||||||
|
pecl_version=$(echo "$response" | grep -m 1 -Eo "(\d*\.\d*\.\d*)")
|
||||||
|
fi
|
||||||
|
echo "$pecl_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install a PECL version
|
||||||
|
add_pecl_extension() {
|
||||||
|
extension=$1
|
||||||
|
pecl_version=$2
|
||||||
|
prefix=$3
|
||||||
|
if ! check_extension "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
||||||
|
echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"
|
||||||
|
fi
|
||||||
|
ext_version=$(php -r "echo phpversion('$extension');")
|
||||||
|
if [ "$ext_version" = "$pecl_version" ]; then
|
||||||
|
add_log "$tick" "$extension" "Enabled"
|
||||||
|
else
|
||||||
|
remove_extension "$extension"
|
||||||
|
(
|
||||||
|
sudo pecl install -f "$extension-$pecl_version" >/dev/null 2>&1 &&
|
||||||
|
check_extension "$extension" &&
|
||||||
|
add_log "$tick" "$extension" "Installed and enabled"
|
||||||
|
) || add_log "$cross" "$extension" "Could not install $extension-$pecl_version on PHP $semver"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to disable an extension.
|
# Function to setup extensions
|
||||||
disable_extension_helper() {
|
add_extension() {
|
||||||
local extension=$1
|
extension=$1
|
||||||
local disable_dependents=${2:-false}
|
install_command=$2
|
||||||
get_extension_map
|
prefix=$3
|
||||||
if [ "$disable_dependents" = "true" ]; then
|
if ! check_extension "$extension" && [ -e "$ext_dir/$extension.so" ]; then
|
||||||
disable_extension_dependents "$extension"
|
echo "$prefix=$ext_dir/$extension.so" >>"$ini_file" && add_log "$tick" "$extension" "Enabled"
|
||||||
fi
|
elif check_extension "$extension"; then
|
||||||
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
add_log "$tick" "$extension" "Enabled"
|
||||||
sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions
|
elif ! check_extension "$extension"; then
|
||||||
mkdir -p /tmp/extdisabled/"$version"
|
eval "$install_command" >/dev/null 2>&1 &&
|
||||||
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
if [[ "$version" =~ $old_versions ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
||||||
}
|
(check_extension "$extension" && add_log "$tick" "$extension" "Installed and enabled") ||
|
||||||
|
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
||||||
# Function to fetch a brew tap.
|
|
||||||
fetch_brew_tap() {
|
|
||||||
tap=$1
|
|
||||||
tap_user=$(dirname "$tap")
|
|
||||||
tap_name=$(basename "$tap")
|
|
||||||
mkdir -p "$tap_dir/$tap_user"
|
|
||||||
get -s -n "" "https://github.com/$tap/archive/master.tar.gz" | sudo tar -xzf - -C "$tap_dir/$tap_user"
|
|
||||||
if [ -d "$tap_dir/$tap_user/$tap_name-master" ]; then
|
|
||||||
sudo mv "$tap_dir/$tap_user/$tap_name-master" "$tap_dir/$tap_user/$tap_name"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to add a brew tap.
|
# Function to pre-release extensions using PECL
|
||||||
add_brew_tap() {
|
add_unstable_extension() {
|
||||||
tap=$1
|
extension=$1
|
||||||
if ! [ -d "$tap_dir/$tap" ]; then
|
stability=$2
|
||||||
if [ "${runner:?}" = "self-hosted" ]; then
|
prefix=$3
|
||||||
brew tap "$tap" >/dev/null 2>&1
|
pecl_version=$(get_pecl_version "$extension" "$stability")
|
||||||
else
|
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
||||||
fetch_brew_tap "$tap" >/dev/null 2>&1
|
}
|
||||||
if ! [ -d "$tap_dir/$tap" ]; then
|
|
||||||
brew tap "$tap" >/dev/null 2>&1
|
# Function to setup a remote tool
|
||||||
fi
|
add_tool() {
|
||||||
|
url=$1
|
||||||
|
tool=$2
|
||||||
|
tool_path="$tool_path_dir/$tool"
|
||||||
|
if [ ! -e "$tool_path" ]; then
|
||||||
|
rm -rf "$tool_path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
status_code=$(sudo curl -s -w "%{http_code}" -o "$tool_path" -L "$url")
|
||||||
|
if [ "$status_code" = "200" ]; then
|
||||||
|
sudo chmod a+x "$tool_path"
|
||||||
|
if [ "$tool" = "composer" ]; then
|
||||||
|
composer -q global config process-timeout 0
|
||||||
|
elif [ "$tool" = "phive" ]; then
|
||||||
|
add_extension curl "sudo pecl install -f curl" extension >/dev/null 2>&1
|
||||||
|
add_extension mbstring "sudo pecl install -f mbstring" extension >/dev/null 2>&1
|
||||||
|
add_extension xml "sudo pecl install -f xml" extension >/dev/null 2>&1
|
||||||
|
elif [ "$tool" = "cs2pr" ]; then
|
||||||
|
sudo sed -i '' 's/exit(9)/exit(0)/' "$tool_path"
|
||||||
|
tr -d '\r' <"$tool_path" | sudo tee "$tool_path.tmp" >/dev/null 2>&1 && sudo mv "$tool_path.tmp" "$tool_path"
|
||||||
|
sudo chmod a+x "$tool_path"
|
||||||
|
elif [ "$tool" = "wp-cli" ]; then
|
||||||
|
sudo cp -p "$tool_path" "$tool_path_dir"/wp
|
||||||
fi
|
fi
|
||||||
fi
|
add_log "$tick" "$tool" "Added"
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get extension name from brew formula.
|
|
||||||
get_extension_from_formula() {
|
|
||||||
local formula=$1
|
|
||||||
local extension
|
|
||||||
extension=$(grep "$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
|
||||||
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
||||||
echo "$extension"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to copy extension binaries to the extension directory.
|
|
||||||
copy_brew_extensions() {
|
|
||||||
local formula=$1
|
|
||||||
formula_file="$tap_dir/$ext_tap/Formula/$formula@$version.rb"
|
|
||||||
deps="$(grep -Eo 'depends_on "shivammathur[^"]+' "$formula_file" | cut -d '/' -f 3 | tr '\n' ' ')"
|
|
||||||
IFS=' ' read -r -a deps <<< "$formula@$version $deps"
|
|
||||||
for dependency in "${deps[@]}"; do
|
|
||||||
extension_file="$brew_prefix/opt/$dependency/$(get_extension_from_formula "${dependency%@*}").so"
|
|
||||||
[ -e "$extension_file" ] && sudo cp "$extension_file" "$ext_dir"
|
|
||||||
done
|
|
||||||
sudo find -- "$brew_prefix"/Cellar/"$formula"@"$version" -name "*.dylib" -exec cp {} "$ext_dir" \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to install a php extension from shivammathur/extensions tap.
|
|
||||||
add_brew_extension() {
|
|
||||||
formula=$1
|
|
||||||
prefix=$2
|
|
||||||
extension="$(get_extension_from_formula "$formula")"
|
|
||||||
enable_extension "$extension" "$prefix"
|
|
||||||
if check_extension "$extension"; then
|
|
||||||
add_log "${tick:?}" "$extension" "Enabled"
|
|
||||||
else
|
else
|
||||||
add_brew_tap "$php_tap"
|
add_log "$cross" "$tool" "Could not setup $tool"
|
||||||
add_brew_tap "$ext_tap"
|
|
||||||
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$core_repo/Formula/" 2>/dev/null || true
|
|
||||||
update_dependencies >/dev/null 2>&1
|
|
||||||
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
|
||||||
brew install -f "$ext_tap/$formula@$version" >/dev/null 2>&1
|
|
||||||
copy_brew_extensions "$formula"
|
|
||||||
add_extension_log "$extension" "Installed and enabled"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to add an extension.
|
# Function to add a tool using composer
|
||||||
add_extension_helper() {
|
add_composertool() {
|
||||||
local extension=$1
|
|
||||||
prefix=$2
|
|
||||||
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
|
||||||
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
pecl_install "$extension" >/dev/null 2>&1 &&
|
|
||||||
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
|
||||||
fi
|
|
||||||
add_extension_log "$extension" "Installed and enabled"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to handle request to add phpize and php-config.
|
|
||||||
add_devtools() {
|
|
||||||
tool=$1
|
tool=$1
|
||||||
add_log "${tick:?}" "$tool" "Added $tool $semver"
|
release=$2
|
||||||
|
prefix=$3
|
||||||
|
(
|
||||||
|
composer global require "$prefix$release" >/dev/null 2>&1 &&
|
||||||
|
sudo ln -sf "$(composer -q global config home)"/vendor/bin/"$tool" /usr/local/bin/"$tool" &&
|
||||||
|
add_log "$tick" "$tool" "Added"
|
||||||
|
) || add_log "$cross" "$tool" "Could not setup $tool"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to handle request to add PECL.
|
add_blackfire() {
|
||||||
add_pecl() {
|
sudo mkdir -p usr/local/var/run
|
||||||
enable_extension xml extension >/dev/null 2>&1
|
brew tap blackfireio/homebrew-blackfire >/dev/null 2>&1
|
||||||
configure_pecl >/dev/null 2>&1
|
brew install blackfire-agent >/dev/null 2>&1
|
||||||
pear_version=$(get_tool_version "pecl" "version")
|
sudo blackfire-agent --register --server-id="$BLACKFIRE_SERVER_ID" --server-token="$BLACKFIRE_SERVER_TOKEN" >/dev/null 2>&1
|
||||||
add_log "${tick:?}" "PECL" "Found PECL $pear_version"
|
brew services start blackfire-agent >/dev/null 2>&1
|
||||||
|
sudo blackfire --config --client-id="$BLACKFIRE_CLIENT_ID" --client-token="$BLACKFIRE_CLIENT_TOKEN" >/dev/null 2>&1
|
||||||
|
add_log "$tick" "blackfire" "Added"
|
||||||
|
add_log "$tick" "blackfire-agent" "Added"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to link all libraries of a formula.
|
# Function to configure PECL
|
||||||
link_libraries() {
|
configure_pecl() {
|
||||||
formula=$1
|
for tool in pear pecl; do
|
||||||
formula_prefix="$(brew --prefix "$formula")"
|
sudo "$tool" config-set php_ini "$ini_file" >/dev/null 2>&1
|
||||||
sudo mkdir -p "$formula_prefix"/lib
|
sudo "$tool" config-set auto_discover 1 >/dev/null 2>&1
|
||||||
for lib in "$formula_prefix"/lib/*.dylib; do
|
sudo "$tool" channel-update "$tool".php.net >/dev/null 2>&1
|
||||||
lib_name=$(basename "$lib")
|
|
||||||
sudo cp -a "$lib" "$brew_prefix/lib/$lib_name" 2>/dev/null || true
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Patch brew to overwrite packages.
|
# Function to log PECL, it is installed along with PHP
|
||||||
patch_brew() {
|
add_pecl() {
|
||||||
formula_installer="$brew_repo"/Library/Homebrew/formula_installer.rb
|
add_log "$tick" "PECL" "Added"
|
||||||
code=" keg.link\(verbose: verbose\?"
|
|
||||||
sudo sed -Ei '' "s/$code.*/$code, overwrite: true\)/" "$formula_installer"
|
|
||||||
# shellcheck disable=SC2064
|
|
||||||
trap "sudo sed -Ei '' 's/$code.*/$code, overwrite: overwrite?\)/' $formula_installer" exit
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to update the dependencies.
|
# Function to setup PHP >=5.6
|
||||||
update_dependencies_helper() {
|
|
||||||
dependency=$1
|
|
||||||
get -q -n "$core_repo/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
|
|
||||||
link_libraries "$dependency"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to update dependencies.
|
|
||||||
update_dependencies() {
|
|
||||||
patch_brew
|
|
||||||
if ! [ -e /tmp/update_dependencies ]; then
|
|
||||||
if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
|
||||||
while read -r dependency; do
|
|
||||||
update_dependencies_helper "$dependency" &
|
|
||||||
to_wait+=($!)
|
|
||||||
done <"$tap_dir/$php_tap/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
|
||||||
wait "${to_wait[@]}"
|
|
||||||
else
|
|
||||||
git -C "$core_repo" fetch origin master && git -C "$core_repo" reset --hard origin/master
|
|
||||||
fi
|
|
||||||
echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to fix dependencies on install PHP version.
|
|
||||||
fix_dependencies() {
|
|
||||||
broken_deps_paths=$(php -v 2>&1 | grep -Eo '/opt/[a-zA-Z0-9@\.]+')
|
|
||||||
if [ "x$broken_deps_paths" != "x" ]; then
|
|
||||||
update_dependencies
|
|
||||||
IFS=" " read -r -a formulae <<< "$(echo "$broken_deps_paths" | tr '\n' ' ' | sed 's|/opt/||g' 2>&1)$php_formula"
|
|
||||||
brew reinstall "${formulae[@]}"
|
|
||||||
brew link --force --overwrite "$php_formula" || true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get PHP version if it is already installed using Homebrew.
|
|
||||||
get_brewed_php() {
|
|
||||||
php_cellar="$brew_prefix"/Cellar/php
|
|
||||||
if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
|
||||||
php_semver | cut -c 1-3
|
|
||||||
else
|
|
||||||
echo 'false';
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup PHP 5.6 and newer using Homebrew.
|
|
||||||
add_php() {
|
|
||||||
action=$1
|
|
||||||
existing_version=$2
|
|
||||||
add_brew_tap "$php_tap"
|
|
||||||
update_dependencies
|
|
||||||
if [ "$existing_version" != "false" ]; then
|
|
||||||
([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
|
|
||||||
else
|
|
||||||
brew install -f "$php_formula"
|
|
||||||
fi
|
|
||||||
brew link --force --overwrite "$php_formula"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get extra version.
|
|
||||||
php_extra_version() {
|
|
||||||
php_formula_file="$tap_dir"/"$php_tap"/Formula/php@"$version".rb
|
|
||||||
if [ -e "$php_formula_file" ] && ! grep -q "deprecate!" "$php_formula_file" && grep -Eq "archive/[0-9a-zA-Z]+" "$php_formula_file"; then
|
|
||||||
echo " ($(grep -Eo "archive/[0-9a-zA-Z]+" "$php_formula_file" | cut -d'/' -f 2))"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to set php.ini
|
|
||||||
add_php_config() {
|
|
||||||
if ! [ -e "$ini_dir"/php.ini-development ]; then
|
|
||||||
sudo cp "$ini_dir"/php.ini "$ini_dir"/php.ini-development
|
|
||||||
fi
|
|
||||||
if [[ "$ini" = "production" || "$ini" = "development" ]]; then
|
|
||||||
sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini
|
|
||||||
elif [ "$ini" = "none" ]; then
|
|
||||||
echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get scan directory.
|
|
||||||
get_scan_dir() {
|
|
||||||
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
||||||
php --ini | grep additional | sed -e "s|.*: s*||"
|
|
||||||
else
|
|
||||||
echo "$ini_dir"/conf.d
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to Setup PHP.
|
|
||||||
setup_php() {
|
setup_php() {
|
||||||
step_log "Setup PHP"
|
action=$1
|
||||||
php_config="$(command -v php-config 2>/dev/null)"
|
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE >/dev/null 2>&1
|
||||||
existing_version=$(get_brewed_php)
|
brew tap shivammathur/homebrew-php >/dev/null 2>&1
|
||||||
if [[ "$version" =~ ${old_versions:?} ]]; then
|
brew "$action" shivammathur/php/php@"$version" >/dev/null 2>&1
|
||||||
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
brew link --force --overwrite php@"$version" >/dev/null 2>&1
|
||||||
status="Installed"
|
|
||||||
elif [ "$existing_version" != "$version" ]; then
|
|
||||||
add_php "install" "$existing_version" >/dev/null 2>&1
|
|
||||||
status="Installed"
|
|
||||||
elif [ "$existing_version" = "$version" ] && [ "${update:?}" = "true" ]; then
|
|
||||||
add_php "upgrade" "$existing_version" >/dev/null 2>&1
|
|
||||||
status="Updated to"
|
|
||||||
else
|
|
||||||
status="Found"
|
|
||||||
fix_dependencies >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
php_config="$(command -v php-config)"
|
|
||||||
ext_dir="$(grep 'extension_dir=' "$php_config" | cut -d "'" -f 2)"
|
|
||||||
ini_dir="$(php_ini_path)"
|
|
||||||
scan_dir="$(get_scan_dir)"
|
|
||||||
ini_file="$ini_dir"/php.ini
|
|
||||||
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
||||||
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
|
||||||
semver="$(php_semver)"
|
|
||||||
extra_version="$(php_extra_version)"
|
|
||||||
configure_php
|
|
||||||
set_output "php-version" "$semver"
|
|
||||||
if [ "${semver%.*}" != "$version" ]; then
|
|
||||||
add_log "${cross:?}" "PHP" "Could not setup PHP $version"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
|
||||||
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
version=${1:-'8.1'}
|
tick="✓"
|
||||||
ini=${2:-'production'}
|
cross="✗"
|
||||||
src=${0%/*}/..
|
version=$1
|
||||||
php_formula=shivammathur/php/php@"$version"
|
nodot_version=${1/./}
|
||||||
brew_path="$(command -v brew)"
|
old_versions="5.[3-5]"
|
||||||
brew_path_dir="$(dirname "$brew_path")"
|
tool_path_dir="/usr/local/bin"
|
||||||
brew_prefix="$brew_path_dir"/..
|
existing_version=$(php-config --version | cut -c 1-3)
|
||||||
brew_repo="$brew_path_dir/$(dirname "$(readlink "$brew_path")")"/..
|
[[ -z "${update}" ]] && update='false' || update="${update}"
|
||||||
tap_dir="$brew_repo"/Library/Taps
|
|
||||||
core_repo="$tap_dir"/homebrew/homebrew-core
|
|
||||||
scripts="$src"/scripts
|
|
||||||
ext_tap=shivammathur/homebrew-extensions
|
|
||||||
php_tap=shivammathur/homebrew-php
|
|
||||||
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
||||||
export HOMEBREW_DEVELOPER=1
|
|
||||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
|
||||||
export HOMEBREW_NO_ENV_HINTS=1
|
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
||||||
|
|
||||||
# shellcheck source=.
|
# Setup PHP
|
||||||
. "${scripts:?}"/unix.sh
|
step_log "Setup PHP"
|
||||||
. "${scripts:?}"/tools/add_tools.sh
|
if [[ "$version" =~ $old_versions ]]; then
|
||||||
. "${scripts:?}"/extensions/source.sh
|
curl -sSL https://github.com/shivammathur/php5-darwin/releases/latest/download/install.sh | bash -s "$nodot_version" >/dev/null 2>&1 &&
|
||||||
. "${scripts:?}"/extensions/add_extensions.sh
|
status="Installed"
|
||||||
read_env
|
elif [ "$existing_version" != "$version" ]; then
|
||||||
self_hosted_setup
|
setup_php "install"
|
||||||
setup_php
|
status="Installed"
|
||||||
|
elif [ "$existing_version" = "$version" ] && [ "$update" = "true" ]; then
|
||||||
|
setup_php "upgrade"
|
||||||
|
status="Updated to"
|
||||||
|
else
|
||||||
|
status="Found"
|
||||||
|
fi
|
||||||
|
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
||||||
|
sudo chmod 777 "$ini_file" "$tool_path_dir"
|
||||||
|
echo "date.timezone=UTC" >>"$ini_file"
|
||||||
|
ext_dir=$(php -i | grep -Ei "extension_dir => /" | sed -e "s|.*=> s*||")
|
||||||
|
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; fi
|
||||||
|
add_log "$tick" "PHP" "$status PHP $semver"
|
||||||
|
30
src/scripts/ext/blackfire.ps1
Normal file
30
src/scripts/ext/blackfire.ps1
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[string]
|
||||||
|
$version,
|
||||||
|
[Parameter(Position = 2, Mandatory = $false)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[string]
|
||||||
|
$extension_version
|
||||||
|
)
|
||||||
|
|
||||||
|
$tick = ([char]8730)
|
||||||
|
$php_dir = 'C:\tools\php'
|
||||||
|
$ext_dir = $php_dir + '\ext'
|
||||||
|
$arch='x64'
|
||||||
|
if ($version -lt '7.0') { $arch='x86' }
|
||||||
|
$version = $version.replace('.', '')
|
||||||
|
|
||||||
|
if (Test-Path $ext_dir\blackfire.dll) {
|
||||||
|
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||||
|
$status="Enabled"
|
||||||
|
} else {
|
||||||
|
$installed = Get-Php -Path $php_dir
|
||||||
|
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1
|
||||||
|
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||||
|
$status="Installed and enabled"
|
||||||
|
}
|
||||||
|
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick "blackfire" "$status"
|
||||||
|
|
7
src/scripts/ext/blackfire.sh
Normal file
7
src/scripts/ext/blackfire.sh
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version=${1/./}
|
||||||
|
extension_version=$2
|
||||||
|
ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
|
||||||
|
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
||||||
|
ini_file="$scan_dir/50-blackfire.ini"
|
||||||
|
sudo curl -o $ext_dir/blackfire.so -SL https://packages.blackfire.io/binaries/blackfire-php/$extension_version/blackfire-php-linux_amd64-php-$version.so
|
||||||
|
echo "extension=blackfire.so" | sudo tee -a "$ini_file"
|
7
src/scripts/ext/blackfire_darwin.sh
Normal file
7
src/scripts/ext/blackfire_darwin.sh
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
version=${1/./}
|
||||||
|
extension_version=$2
|
||||||
|
ext_dir=$(php -i | grep -Ei "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
||||||
|
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
||||||
|
ini_file="$scan_dir/50-blackfire.ini"
|
||||||
|
sudo curl -o $ext_dir/blackfire.so -SL https://packages.blackfire.io/binaries/blackfire-php/$extension_version/blackfire-php-darwin_amd64-php-$version.so
|
||||||
|
echo "extension=blackfire.so" | sudo tee -a "$ini_file"
|
9
src/scripts/ext/gearman.sh
Normal file
9
src/scripts/ext/gearman.sh
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
release_version=$(lsb_release -s -r)
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:ondrej/pkg-gearman -y
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
||||||
|
|
||||||
|
if [ "$release_version" = "18.04" ]; then
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y libgearman-dev php"$1"-gearman
|
||||||
|
elif [ "$release_version" = "16.04" ]; then
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-fast install -y php"$1"-gearman
|
||||||
|
fi
|
5
src/scripts/ext/pcov.sh
Normal file
5
src/scripts/ext/pcov.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
cd ~ && git clone --depth=1 https://github.com/krakjoe/pcov.git
|
||||||
|
cd pcov && phpize
|
||||||
|
./configure --enable-pcov
|
||||||
|
make
|
||||||
|
sudo make install
|
56
src/scripts/ext/phalcon.ps1
Normal file
56
src/scripts/ext/phalcon.ps1
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
Param (
|
||||||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateSet('phalcon3', 'phalcon4')]
|
||||||
|
[string]
|
||||||
|
$extension,
|
||||||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||||||
|
[ValidateNotNull()]
|
||||||
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
|
[string]
|
||||||
|
$version
|
||||||
|
)
|
||||||
|
|
||||||
|
# Function to install phalcon
|
||||||
|
Function Install-Phalcon() {
|
||||||
|
if ($extension_version -eq '4') {
|
||||||
|
Install-Phpextension phalcon -MinimumStability stable -Path $php_dir
|
||||||
|
} else {
|
||||||
|
$installed = Get-Php -Path $php_dir
|
||||||
|
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
||||||
|
$match = Invoke-WebRequest -UseBasicParsing -Uri $domain/phalcon/cphalcon/releases | Select-String -Pattern "href=`"(.*phalcon_x64_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)`""
|
||||||
|
$zip_file = $match.Matches[0].Groups[1].Value
|
||||||
|
Invoke-WebRequest -UseBasicParsing -Uri $domain/$zip_file -OutFile $ENV:RUNNER_TOOL_CACHE\phalcon.zip > $null 2>&1
|
||||||
|
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\phalcon.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\phalcon -Force > $null 2>&1
|
||||||
|
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\phalcon\php_phalcon.dll" -Destination "$ext_dir\php_phalcon.dll"
|
||||||
|
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||||
|
}
|
||||||
|
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick $extension "Installed and enabled"
|
||||||
|
}
|
||||||
|
|
||||||
|
$tick = ([char]8730)
|
||||||
|
$domain = 'https://github.com'
|
||||||
|
$php_dir = 'C:\tools\php'
|
||||||
|
$ext_dir = $php_dir + '\ext'
|
||||||
|
$extension_version = $extension.substring($extension.Length - 1)
|
||||||
|
|
||||||
|
if($extension_version -eq '4') {
|
||||||
|
if (Test-Path $ext_dir\php_psr.dll) {
|
||||||
|
Enable-PhpExtension -Extension psr -Path $php_dir
|
||||||
|
} else {
|
||||||
|
Install-Phpextension psr -MinimumStability stable -Path $php_dir
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Test-Path $ext_dir\php_phalcon.dll) {
|
||||||
|
$phalcon = Get-PhpExtension $ext_dir\php_phalcon.dll
|
||||||
|
if($phalcon.Version[0] -eq $extension_version) {
|
||||||
|
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||||
|
printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "32" $tick $extension "Enabled"
|
||||||
|
} else {
|
||||||
|
Remove-Item $ext_dir\php_phalcon.dll
|
||||||
|
Install-Phalcon
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Install-Phalcon
|
||||||
|
}
|
72
src/scripts/ext/phalcon.sh
Normal file
72
src/scripts/ext/phalcon.sh
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Function to log result of a operation
|
||||||
|
add_log() {
|
||||||
|
mark=$1
|
||||||
|
subject=$2
|
||||||
|
message=$3
|
||||||
|
if [ "$mark" = "$tick" ]; then
|
||||||
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
else
|
||||||
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to update php ppa
|
||||||
|
update_ppa() {
|
||||||
|
if [ "$ppa_updated" = "false" ]; then
|
||||||
|
find /etc/apt/sources.list.d -type f -name 'ondrej-ubuntu-php*.list' -exec sudo DEBIAN_FRONTEND=noninteractive apt-get update -o Dir::Etc::sourcelist="{}" ';' >/dev/null 2>&1
|
||||||
|
ppa_updated="true"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install phalcon
|
||||||
|
install_phalcon() {
|
||||||
|
extension=$1
|
||||||
|
version=$2
|
||||||
|
(sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "php$version-$extension" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
||||||
|
(update_ppa && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y "php$version-$extension" >/dev/null 2>&1 && add_log "$tick" "$extension" "Installed and enabled") ||
|
||||||
|
add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
||||||
|
}
|
||||||
|
|
||||||
|
ini_file="/etc/php/$2/cli/conf.d/50-phalcon.ini"
|
||||||
|
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
||||||
|
semver=$(php -v | head -n 1 | cut -f 2 -d ' ' | cut -f 1 -d '-')
|
||||||
|
extension_major_version=$(echo "$1" | grep -i -Po '\d')
|
||||||
|
ppa_updated="false"
|
||||||
|
tick="✓"
|
||||||
|
cross="✗"
|
||||||
|
|
||||||
|
if [ "$extension_major_version" = "4" ]; then
|
||||||
|
if [ -e "$ext_dir/psr.so" ]; then
|
||||||
|
echo "extension=psr.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "$ext_dir/phalcon.so" ]; then
|
||||||
|
if php -m | grep -i -q -w psr; then
|
||||||
|
phalcon_version=$(php -d="extension=phalcon" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
|
install_phalcon "$1" "$2"
|
||||||
|
else
|
||||||
|
echo "extension=phalcon.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
||||||
|
add_log "$tick" "$1" "Enabled"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
install_phalcon "$1" "$2"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
install_phalcon "$1" "$2"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$extension_major_version" = "3" ]; then
|
||||||
|
if [ -e "$ext_dir/phalcon.so" ]; then
|
||||||
|
phalcon_version=$(php -d="extension=phalcon.so" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
|
if [ "$phalcon_version" != "$extension_major_version" ]; then
|
||||||
|
install_phalcon "$1" "$2"
|
||||||
|
else
|
||||||
|
echo "extension=phalcon.so" | sudo tee -a "$ini_file" >/dev/null 2>&1
|
||||||
|
add_log "$tick" "$1" "Enabled"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
install_phalcon "$1" "$2"
|
||||||
|
fi
|
||||||
|
fi
|
43
src/scripts/ext/phalcon_darwin.sh
Normal file
43
src/scripts/ext/phalcon_darwin.sh
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Function to log result of a operation
|
||||||
|
add_log() {
|
||||||
|
mark=$1
|
||||||
|
subject=$2
|
||||||
|
message=$3
|
||||||
|
if [ "$mark" = "$tick" ]; then
|
||||||
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
else
|
||||||
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to install phalcon
|
||||||
|
install_phalcon() {
|
||||||
|
(
|
||||||
|
brew tap shivammathur/homebrew-phalcon >/dev/null 2>&1
|
||||||
|
brew install phalcon@"$php_version"_"$extension_major" >/dev/null 2>&1
|
||||||
|
sudo cp /usr/local/opt/psr@"$php_version"/psr.so "$ext_dir" >/dev/null 2>&1
|
||||||
|
sudo cp /usr/local/opt/phalcon@"$php_version"_"$extension_major"/phalcon.so "$ext_dir" >/dev/null 2>&1
|
||||||
|
add_log "$tick" "$extension" "Installed and enabled"
|
||||||
|
) || add_log "$cross" "$extension" "Could not install $extension on PHP $semver"
|
||||||
|
}
|
||||||
|
|
||||||
|
tick="✓"
|
||||||
|
cross="✗"
|
||||||
|
extension=$1
|
||||||
|
extension_major=${extension: -1}
|
||||||
|
php_version=$2
|
||||||
|
semver=$(php -v | head -n 1 | cut -f 2 -d ' ')
|
||||||
|
ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
|
||||||
|
ext_dir=$(php -i | grep "extension_dir => /usr" | sed -e "s|.*=> s*||")
|
||||||
|
if [ -e "$ext_dir/psr.so" ] && [ -e "$ext_dir/phalcon.so" ]; then
|
||||||
|
phalcon_version=$(php -d="extension=psr.so" -d="extension=phalcon.so" -r "echo phpversion('phalcon');" | cut -d'.' -f 1)
|
||||||
|
if [ "$phalcon_version" != "$extension_major" ]; then
|
||||||
|
install_phalcon
|
||||||
|
else
|
||||||
|
echo "extension=psr.so" >>"$ini_file"
|
||||||
|
echo "extension=phalcon.so" >>"$ini_file"
|
||||||
|
add_log "$tick" "$extension" "Enabled"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
install_phalcon
|
||||||
|
fi
|
3
src/scripts/ext/xdebug.sh
Normal file
3
src/scripts/ext/xdebug.sh
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
cd ~ && git clone --depth=1 https://github.com/xdebug/xdebug.git
|
||||||
|
cd xdebug || echo "Failed to clone Xdebug"
|
||||||
|
sudo ./rebuild.sh
|
6
src/scripts/ext/xdebug_darwin.sh
Normal file
6
src/scripts/ext/xdebug_darwin.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
cd ~ && git clone --depth=1 https://github.com/xdebug/xdebug.git
|
||||||
|
cd xdebug || echo "Failed to clone Xdebug"
|
||||||
|
sudo phpize
|
||||||
|
sudo ./configure
|
||||||
|
sudo make
|
||||||
|
sudo cp modules/xdebug.so "$(php -i | grep "extension_dir => /opt" | sed -e "s|.*=> s*||")"
|
@ -1,194 +0,0 @@
|
|||||||
# Function to link dependencies to PHP directory.
|
|
||||||
Function Set-ExtensionPrerequisites
|
|
||||||
{
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$deps_dir
|
|
||||||
)
|
|
||||||
$deps = Get-ChildItem -Recurse -Path $deps_dir
|
|
||||||
if ($deps.Count -ne 0) {
|
|
||||||
# Symlink dependencies instead of adding the directory to PATH ...
|
|
||||||
# as other actions change the PATH thus breaking extensions.
|
|
||||||
$deps | ForEach-Object {
|
|
||||||
New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force > $null 2>&1
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Remove-Item $deps_dir -Recurse -Force
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add PHP extensions.
|
|
||||||
Function Add-Extension {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension,
|
|
||||||
[Parameter(Position = 1, Mandatory = $false)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateSet('stable', 'beta', 'alpha', 'devel', 'snapshot')]
|
|
||||||
[string]
|
|
||||||
$stability = 'stable',
|
|
||||||
[Parameter(Position = 2, Mandatory = $false)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidatePattern('^\d+(\.\d+){0,2}$')]
|
|
||||||
[string]
|
|
||||||
$extension_version = ''
|
|
||||||
)
|
|
||||||
try {
|
|
||||||
$extension_info = Get-PhpExtension -Path $php_dir | Where-Object { $_.Name -eq $extension -or $_.Handle -eq $extension }
|
|
||||||
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
|
|
||||||
New-Item $deps_dir -Type Directory -Force > $null 2>&1
|
|
||||||
if ($null -ne $extension_info) {
|
|
||||||
switch ($extension_info.State) {
|
|
||||||
'Builtin' {
|
|
||||||
Add-Log $tick $extension "Enabled"
|
|
||||||
}
|
|
||||||
'Enabled' {
|
|
||||||
Add-Log $tick $extension "Enabled"
|
|
||||||
}
|
|
||||||
default {
|
|
||||||
Enable-ExtensionDependencies $extension
|
|
||||||
Enable-PhpExtension -Extension $extension_info.Handle -Path $php_dir
|
|
||||||
Set-ExtensionPrerequisites $deps_dir
|
|
||||||
Add-Log $tick $extension "Enabled"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
# Patch till PHP 8.1 DLLs are released as stable.
|
|
||||||
$minimumStability = $stability
|
|
||||||
if($version -eq '8.1' -and $stability -eq 'stable') {
|
|
||||||
$minimumStability = 'snapshot'
|
|
||||||
}
|
|
||||||
|
|
||||||
$params = @{ Extension = $extension; MinimumStability = $minimumStability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true }
|
|
||||||
if($extension_version -ne '') {
|
|
||||||
$params["Version"] = $extension_version
|
|
||||||
}
|
|
||||||
Install-PhpExtension @params
|
|
||||||
Set-ExtensionPrerequisites $deps_dir
|
|
||||||
Add-Log $tick $extension "Installed and enabled"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get a map of extensions and their dependent shared extensions.
|
|
||||||
Function Get-ExtensionMap {
|
|
||||||
php -d'error_reporting=0' $src\scripts\extensions\extension_map.php $env:TEMP\map$version.orig
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to enable extension dependencies which are also extensions.
|
|
||||||
Function Enable-ExtensionDependencies {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension
|
|
||||||
)
|
|
||||||
if (-not(Test-Path $env:TEMP\extdisabled\$extension)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Get-ExtensionMap
|
|
||||||
$entry = findstr /r "$extension`:.*" $env:TEMP\map$version.orig
|
|
||||||
if($entry) {
|
|
||||||
$entry.split(':')[1].trim().split(' ') | ForEach-Object {
|
|
||||||
if (-not(php -m | findstr -i $_)) {
|
|
||||||
Enable-PhpExtension -Extension $_ -Path $php_dir
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Remove-Item $env:TEMP\extdisabled\$extension -Force
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable dependent extensions.
|
|
||||||
Function Disable-DependentExtensions() {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension
|
|
||||||
)
|
|
||||||
Select-String -Pattern ".*:.*\s$extension(\s|$)" $env:TEMP\map$version.orig | ForEach-Object {
|
|
||||||
$dependent = $_.Matches[0].Value.split(':')[0];
|
|
||||||
Disable-ExtensionHelper -Extension $dependent -DisableDependents
|
|
||||||
Add-Log $tick ":$extension" "Disabled $dependent as it depends on $extension"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Helper function to disable an extension.
|
|
||||||
Function Disable-ExtensionHelper() {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension,
|
|
||||||
[switch] $DisableDependents
|
|
||||||
)
|
|
||||||
Get-ExtensionMap
|
|
||||||
if($DisableDependents) {
|
|
||||||
Disable-DependentExtensions $extension
|
|
||||||
}
|
|
||||||
Disable-PhpExtension -Extension $extension -Path $php_dir
|
|
||||||
New-Item $env:TEMP\extdisabled -Type Directory -Force > $null 2>&1
|
|
||||||
New-Item $env:TEMP\extdisabled\$extension -Type File -Force > $null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable an extension.
|
|
||||||
Function Disable-Extension() {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$extension,
|
|
||||||
[Parameter(Position = 1, Mandatory = $false)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
|
||||||
[string]
|
|
||||||
$DisableDependents
|
|
||||||
)
|
|
||||||
if(php -m | findstr -i $extension) {
|
|
||||||
if(Test-Path $ext_dir\php_$extension.dll) {
|
|
||||||
try {
|
|
||||||
$params = @{ Extension = $extension; DisableDependents = ($DisableDependents -ne 'false') }
|
|
||||||
Disable-ExtensionHelper @params
|
|
||||||
Add-Log $tick ":$extension" "Disabled"
|
|
||||||
} catch {
|
|
||||||
Add-Log $cross ":$extension" "Could not disable $extension on PHP $($installed.FullVersion)"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Add-Log $cross ":$extension" "Could not disable $extension on PHP $($installed.FullVersion) as it not a shared extension"
|
|
||||||
}
|
|
||||||
} elseif(Test-Path $ext_dir\php_$extension.dll) {
|
|
||||||
Add-Log $tick ":$extension" "Disabled"
|
|
||||||
} else {
|
|
||||||
Add-Log $tick ":$extension" "Could not find $extension on PHP $($installed.FullVersion)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable shared extensions.
|
|
||||||
Function Disable-AllShared() {
|
|
||||||
Get-ExtensionMap
|
|
||||||
(Get-Content $php_dir\php.ini) | Where-Object {$_ -notmatch '^(zend_)?extension\s*='} | Set-Content $php_dir\php.ini
|
|
||||||
New-Item $env:TEMP\extdisabled\$version -Type Directory -Force > $null 2>&1
|
|
||||||
Get-Childitem $ext_dir\*.dll | ForEach-Object {
|
|
||||||
New-Item ("$env:TEMP\extdisabled\$version\" + ($_.Name.split('.')[0].split('_')[1])) -Type File -Force > $null 2>&1
|
|
||||||
}
|
|
||||||
Add-Log $tick "none" "Disabled all shared extensions"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to handle request to add PECL.
|
|
||||||
Function Add-Pecl() {
|
|
||||||
Add-Log $tick "PECL" "Use extensions input to setup PECL extensions on windows"
|
|
||||||
}
|
|
@ -1,199 +0,0 @@
|
|||||||
# Function to log result of installing extension.
|
|
||||||
add_extension_log() {
|
|
||||||
(
|
|
||||||
check_extension "$(echo "$1" | cut -d '-' -f 1)" && add_log "${tick:?}" "$1" "$2"
|
|
||||||
) || add_log "${cross:?}" "$1" "Could not install $1 on PHP ${semver:?}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to test if extension is loaded.
|
|
||||||
check_extension() {
|
|
||||||
local extension=$1
|
|
||||||
local extension_list=/tmp/php${version:?}_extensions
|
|
||||||
if [ ! -e "$extension_list" ]; then
|
|
||||||
php -m > "$extension_list"
|
|
||||||
fi
|
|
||||||
if [ "$extension" != "mysql" ]; then
|
|
||||||
grep -i -q -w "$extension" "$extension_list" || php -m | grep -i -q -w "$extension"
|
|
||||||
else
|
|
||||||
grep -i -q "$extension" "$extension_list" || php -m | grep -i -q "$extension"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to check if extension is shared
|
|
||||||
shared_extension() {
|
|
||||||
[ -e "${ext_dir:?}/$1.so" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to enable cached extension's dependencies.
|
|
||||||
enable_cache_extension_dependencies() {
|
|
||||||
if [ -d /tmp/extcache ] && shared_extension "$1"; then
|
|
||||||
cache_dir=$(find /tmp/extcache -maxdepth 1 -type d -regex ".*$1[0-9]*")
|
|
||||||
if [[ -n "$cache_dir" ]]; then
|
|
||||||
IFS=" " read -r -a deps <<<"$(find "$cache_dir" -maxdepth 1 -type f -name "*" -exec basename {} \; | tr '\n' ' ')"
|
|
||||||
IFS="#" read -r -a deps_enable <<<"$(printf -- "-d ${2}=%s.so#" "${deps[@]}")"
|
|
||||||
if [[ -n "${deps[*]}" ]] && php "${deps_enable[@]}" -d "${2}=$1.so" -m 2>/dev/null | grep -i -q "$1"; then
|
|
||||||
for ext in "${deps[@]}"; do
|
|
||||||
sudo rm -rf /tmp/extcache/"$ext"
|
|
||||||
enable_extension "$ext" "$2"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to enable existing extensions.
|
|
||||||
enable_extension() {
|
|
||||||
if ! check_extension "$1" && shared_extension "$1"; then
|
|
||||||
modules_dir="/var/lib/php/modules/${version:?}"
|
|
||||||
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
|
||||||
enable_extension_dependencies "$1" "$2"
|
|
||||||
enable_cache_extension_dependencies "$1" "$2"
|
|
||||||
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to enable array of extensions
|
|
||||||
enable_extensions() {
|
|
||||||
local extensions=("$@")
|
|
||||||
to_wait=()
|
|
||||||
for ext in "${extensions[@]}"; do
|
|
||||||
enable_extension "$ext" extension >/dev/null 2>&1 &
|
|
||||||
to_wait+=($!)
|
|
||||||
done
|
|
||||||
wait "${to_wait[@]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get a map of extensions and their dependent shared extensions.
|
|
||||||
get_extension_map() {
|
|
||||||
php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to enable extension dependencies which are also extensions.
|
|
||||||
enable_extension_dependencies() {
|
|
||||||
local extension=$1
|
|
||||||
local prefix=$2
|
|
||||||
[ -e /tmp/extdisabled/"$version"/"$extension" ] || return;
|
|
||||||
get_extension_map
|
|
||||||
for dependency in $(grep "$extension:" /tmp/map"$version".orig | cut -d ':' -f 2 | tr '\n' ' '); do
|
|
||||||
enable_extension "$dependency" "$prefix"
|
|
||||||
done
|
|
||||||
rm /tmp/extdisabled/"$version"/"$extension"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable dependent extensions.
|
|
||||||
disable_extension_dependents() {
|
|
||||||
local extension=$1
|
|
||||||
for dependent in $(grep -E ".*:.*\s$extension(\s|$)" /tmp/map"$version".orig | cut -d ':' -f 1 | tr '\n' ' '); do
|
|
||||||
disable_extension_helper "$dependent" true
|
|
||||||
add_log "${tick:?}" ":$extension" "Disabled $dependent as it depends on $extension"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable an extension.
|
|
||||||
disable_extension() {
|
|
||||||
local extension=$1
|
|
||||||
if check_extension "$extension"; then
|
|
||||||
if shared_extension "$extension"; then
|
|
||||||
disable_extension_helper "$extension" true
|
|
||||||
(! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Disabled") ||
|
|
||||||
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP ${semver:?}"
|
|
||||||
else
|
|
||||||
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP $semver as it not a shared extension"
|
|
||||||
fi
|
|
||||||
elif shared_extension "$extension"; then
|
|
||||||
add_log "${tick:?}" ":$extension" "Disabled"
|
|
||||||
else
|
|
||||||
add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to disable shared extensions.
|
|
||||||
disable_all_shared() {
|
|
||||||
get_extension_map
|
|
||||||
sudo sed -i.orig -E -e "/^(zend_)?extension\s*=/d" "${ini_file[@]}" "$pecl_file" 2>/dev/null || true
|
|
||||||
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
|
||||||
mkdir -p /tmp/extdisabled/"$version"
|
|
||||||
sudo rm -f /tmp/php"$version"_extensions
|
|
||||||
sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -n 1 -I{} touch /tmp/extdisabled/"$version"/{}
|
|
||||||
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to configure PECL.
|
|
||||||
configure_pecl() {
|
|
||||||
if ! [ -e /tmp/pecl_config ]; then
|
|
||||||
for script in pear pecl; do
|
|
||||||
sudo "$script" config-set php_ini "${pecl_file:-${ini_file[@]}}"
|
|
||||||
sudo "$script" channel-update "$script".php.net
|
|
||||||
done
|
|
||||||
echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add an extension.
|
|
||||||
add_extension() {
|
|
||||||
local extension=$1
|
|
||||||
local prefix=$2
|
|
||||||
enable_extension "$extension" "$prefix"
|
|
||||||
if check_extension "$extension"; then
|
|
||||||
add_log "${tick:?}" "$extension" "Enabled"
|
|
||||||
else
|
|
||||||
add_extension_helper "$extension" "$prefix"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to get the PECL version of an extension.
|
|
||||||
get_pecl_version() {
|
|
||||||
local extension=$1
|
|
||||||
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
|
||||||
pecl_rest='https://pecl.php.net/rest/r/'
|
|
||||||
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Eio "([0-9]+\.[0-9]+\.[0-9]+${stability}[0-9]+)")
|
|
||||||
if [ ! "$pecl_version" ]; then
|
|
||||||
pecl_version=$(echo "$response" | grep -m 1 -Eo "([0-9]+\.[0-9]+\.[0-9]+)")
|
|
||||||
fi
|
|
||||||
echo "$pecl_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to install PECL extensions and accept default options
|
|
||||||
pecl_install() {
|
|
||||||
local extension=$1
|
|
||||||
add_pecl >/dev/null 2>&1
|
|
||||||
cpu_count="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo '1')"
|
|
||||||
prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS) MAKEFLAGS='-j $cpu_count'"
|
|
||||||
suffix_opts="$(parse_args "$extension" CONFIGURE_OPTS) $(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"
|
|
||||||
IFS=' ' read -r -a libraries <<<"$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)"
|
|
||||||
(( ${#libraries[@]} )) && add_libs "${libraries[@]}" >/dev/null 2>&1
|
|
||||||
if [ "$version" = "5.3" ]; then
|
|
||||||
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to install a specific version of PECL extension.
|
|
||||||
add_pecl_extension() {
|
|
||||||
local extension=$1
|
|
||||||
local pecl_version=$2
|
|
||||||
local prefix=$3
|
|
||||||
enable_extension "$extension" "$prefix"
|
|
||||||
if [[ $pecl_version =~ .*(alpha|beta|rc|snapshot|preview).* ]]; then
|
|
||||||
pecl_version=$(get_pecl_version "$extension" "$pecl_version")
|
|
||||||
fi
|
|
||||||
ext_version=$(php -r "echo phpversion('$extension');")
|
|
||||||
if [ "${ext_version/-/}" = "$pecl_version" ]; then
|
|
||||||
add_log "${tick:?}" "$extension" "Enabled"
|
|
||||||
else
|
|
||||||
disable_extension_helper "$extension" >/dev/null 2>&1
|
|
||||||
pecl_install "$extension-$pecl_version"
|
|
||||||
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup pre-release extensions using PECL.
|
|
||||||
add_unstable_extension() {
|
|
||||||
local extension=$1
|
|
||||||
local stability=$2
|
|
||||||
local prefix=$3
|
|
||||||
pecl_version=$(get_pecl_version "$extension" "$stability")
|
|
||||||
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
# Function to install blackfire extension.
|
|
||||||
Function Add-Blackfire() {
|
|
||||||
Param (
|
|
||||||
[Parameter(Position = 0, Mandatory = $true)]
|
|
||||||
[ValidateNotNull()]
|
|
||||||
[string]
|
|
||||||
$extension
|
|
||||||
)
|
|
||||||
try {
|
|
||||||
$no_dot_version = $version.replace('.', '')
|
|
||||||
$extension_version = $extension.split('-')[1]
|
|
||||||
if ($extension_version -notmatch "\S") {
|
|
||||||
if($version -lt '7.0') {
|
|
||||||
$extension_version = '1.50.0'
|
|
||||||
} else {
|
|
||||||
$extension_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).probe.php
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Test-Path $ext_dir\blackfire.dll) {
|
|
||||||
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
|
||||||
$status="Enabled"
|
|
||||||
} else {
|
|
||||||
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
|
||||||
Invoke-WebRequest -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${no_dot_version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1
|
|
||||||
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
|
||||||
$status="Installed and enabled"
|
|
||||||
}
|
|
||||||
Add-Log $tick $extension $status
|
|
||||||
} catch {
|
|
||||||
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
# Function to install blackfire extension.
|
|
||||||
add_blackfire() {
|
|
||||||
local extension=$1
|
|
||||||
version=${version:?}
|
|
||||||
no_dot_version=${version/./}
|
|
||||||
platform=$(uname -s | tr '[:upper:]' '[:lower:]')
|
|
||||||
extension_version=$(echo "$extension" | cut -d '-' -f 2)
|
|
||||||
status='Enabled'
|
|
||||||
if ! shared_extension blackfire; then
|
|
||||||
status='Installed and enabled'
|
|
||||||
if [ "$extension_version" = "blackfire" ]; then
|
|
||||||
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
|
||||||
extension_version='1.50.0'
|
|
||||||
else
|
|
||||||
extension_version=$(get -s -n "" https://blackfire.io/api/v1/releases | grep -Eo 'php":"([0-9]+.[0-9]+.[0-9]+)' | cut -d '"' -f 3)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
enable_extension blackfire extension
|
|
||||||
add_extension_log blackfire "$status"
|
|
||||||
}
|
|
@ -1,76 +0,0 @@
|
|||||||
# Function to install libraries required by couchbase
|
|
||||||
add_couchbase_clibs() {
|
|
||||||
ext=$1
|
|
||||||
trunk="https://github.com/couchbase/libcouchbase/releases"
|
|
||||||
if [[ "$ext" =~ couchbase-2.+ ]]; then
|
|
||||||
release="2.10.9"
|
|
||||||
else
|
|
||||||
release="$(curl -sL $trunk/latest | grep -Eo "libcouchbase-[0-9]+\.[0-9]+\.[0-9]+" | head -n 1 | cut -d'-' -f 2)"
|
|
||||||
fi
|
|
||||||
[ "$VERSION_ID" = "22.04" ] && vid=20.04 || vid="$VERSION_ID"
|
|
||||||
[ "$VERSION_CODENAME" = "jammy" ] && vcn=focal || vcn="$VERSION_CODENAME"
|
|
||||||
deb_url="$trunk/download/$release/libcouchbase-${release}_ubuntu${vid/./}_${vcn}_amd64.tar"
|
|
||||||
get -q -n /tmp/libcouchbase.tar "$deb_url"
|
|
||||||
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
|
||||||
install_packages libev4 libevent-dev
|
|
||||||
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
|
||||||
}
|
|
||||||
|
|
||||||
add_couchbase_cxxlibs() {
|
|
||||||
if [ "$VERSION_ID" = "18.04" ]; then
|
|
||||||
if ! command -v gcc-8 >/dev/null || ! command -v g++-8 >/dev/null; then
|
|
||||||
install_packages gcc-8 g++-8 -y
|
|
||||||
fi
|
|
||||||
printf "gcc g++" | xargs -d ' ' -I {} sudo update-alternatives --install /usr/bin/{} {} /usr/bin/{}-8 8
|
|
||||||
fi
|
|
||||||
if [ "${runner:?}" = "self-hosted" ]; then
|
|
||||||
add_list cmake https://apt.kitware.com/ubuntu/ https://apt.kitware.com/keys/kitware-archive-latest.asc "$VERSION_CODENAME" main
|
|
||||||
fi
|
|
||||||
install_packages cmake ccache
|
|
||||||
}
|
|
||||||
|
|
||||||
get_couchbase_version() {
|
|
||||||
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
|
||||||
echo couchbase-2.2.3
|
|
||||||
elif [[ "${version:?}" =~ 5.6|7.[0-1] ]]; then
|
|
||||||
echo couchbase-2.6.2
|
|
||||||
elif [ "${version:?}" = '7.2' ]; then
|
|
||||||
echo couchbase-3.0.4
|
|
||||||
elif [ "${version:?}" = '7.3' ]; then
|
|
||||||
echo couchbase-3.2.2
|
|
||||||
else
|
|
||||||
echo couchbase
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add couchbase.
|
|
||||||
add_couchbase() {
|
|
||||||
ext=$1
|
|
||||||
if [ "$(uname -s)" = "Linux" ]; then
|
|
||||||
if [ "$ext" = "couchbase" ]; then
|
|
||||||
ext=$(get_couchbase_version)
|
|
||||||
fi
|
|
||||||
if [[ "$ext" =~ couchbase-[2-3].+ ]]; then
|
|
||||||
add_couchbase_clibs "$ext" >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
add_couchbase_cxxlibs >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
enable_extension "couchbase" "extension"
|
|
||||||
if check_extension "couchbase"; then
|
|
||||||
add_log "${tick:?}" "couchbase" "Enabled"
|
|
||||||
else
|
|
||||||
if [ "$ext" = "couchbase" ]; then
|
|
||||||
ext="couchbase-$(get_pecl_version "couchbase" "stable")"
|
|
||||||
add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
pecl_install "${ext}" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
add_extension_log "couchbase" "Installed and enabled"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ -e "${ext_dir:?}"/libcouchbase_php_core.dylib ]; then
|
|
||||||
sudo cp "${ext_dir:?}"/libcouchbase_php_core.dylib ${brew_prefix:?}/lib
|
|
||||||
fi
|
|
||||||
add_brew_extension couchbase extension
|
|
||||||
fi
|
|
||||||
}
|
|
@ -1,60 +0,0 @@
|
|||||||
# Function to log license details.
|
|
||||||
add_license_log() {
|
|
||||||
printf "$GROUP\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "$ext" "Click to read the $ext related license information"
|
|
||||||
printf "Cubrid CCI package is required for %s extension.\n" "$ext"
|
|
||||||
printf "The extension %s and Cubrid CCI are provided under the license linked below.\n" "$ext"
|
|
||||||
printf "Refer to: \033[35;1m%s \033[0m\n" "https://github.com/CUBRID/cubrid-cci/blob/develop/COPYING"
|
|
||||||
echo "$END_GROUP"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to setup gcc-7 and g++-7
|
|
||||||
setup_compiler() {
|
|
||||||
if ! command -v gcc-7 >/dev/null || ! command -v g++-7 >/dev/null; then
|
|
||||||
add_ppa ubuntu-toolchain-r/test
|
|
||||||
add_packages gcc-7 g++-7 -y
|
|
||||||
fi
|
|
||||||
printf "gcc g++" | xargs -d ' ' -I {} sudo update-alternatives --install /usr/bin/{} {} /usr/bin/{}-7 7
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to set cubrid repo for the extension.
|
|
||||||
set_cubrid_repo() {
|
|
||||||
case "${ext:?}" in
|
|
||||||
"cubrid") cubrid_repo="cubrid-php";;
|
|
||||||
"pdo_cubrid") cubrid_repo="cubrid-pdo";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to set cubrid branch for a PHP version.
|
|
||||||
set_cubrid_branch() {
|
|
||||||
case "${version:?}" in
|
|
||||||
5.[3-6]) cubrid_branch="RB-9.3.0";;
|
|
||||||
*) cubrid_branch="develop";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
add_cubrid_helper() {
|
|
||||||
ext=$1
|
|
||||||
enable_extension "$ext" extension
|
|
||||||
if ! check_extension "$ext"; then
|
|
||||||
status='Installed and enabled'
|
|
||||||
set_cubrid_repo
|
|
||||||
set_cubrid_branch
|
|
||||||
patch_phpize
|
|
||||||
read -r "${ext}_PREFIX_CONFIGURE_OPTS" <<< "CFLAGS=-Wno-implicit-function-declaration"
|
|
||||||
read -r "${ext}_CONFIGURE_OPTS" <<< "--with-php-config=$(command -v php-config)"
|
|
||||||
add_extension_from_source "$ext" https://github.com CUBRID "$cubrid_repo" "$cubrid_branch" extension
|
|
||||||
restore_phpize
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add cubrid and pdo_cubrid.
|
|
||||||
add_cubrid() {
|
|
||||||
ext=$1
|
|
||||||
status='Enabled'
|
|
||||||
add_cubrid_helper "$ext" >/dev/null 2>&1
|
|
||||||
add_extension_log "$ext" "$status"
|
|
||||||
check_extension "$ext" && add_license_log
|
|
||||||
}
|
|
||||||
|
|
||||||
# shellcheck source=.
|
|
||||||
. "${scripts:?}"/extensions/patches/phpize.sh
|
|
@ -1,50 +0,0 @@
|
|||||||
# Function to get event configure options
|
|
||||||
get_event_configure_opts() {
|
|
||||||
event_opts=(
|
|
||||||
--with-event-core
|
|
||||||
--with-event-extra
|
|
||||||
--with-event-openssl
|
|
||||||
--enable-event-sockets
|
|
||||||
)
|
|
||||||
if [ "$os" = 'Linux' ]; then
|
|
||||||
event_opts+=(
|
|
||||||
--with-openssl-dir=yes
|
|
||||||
--with-event-libevent-dir=/usr
|
|
||||||
)
|
|
||||||
else
|
|
||||||
event_opts+=(
|
|
||||||
--with-openssl-dir="$(brew --prefix openssl@1.1)"
|
|
||||||
--with-event-libevent-dir="$(brew --prefix libevent)"
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Helper function to compile and install event
|
|
||||||
add_event_helper() {
|
|
||||||
local ext=$1
|
|
||||||
[[ "$ext" =~ ^event$ ]] && ext="event-$(get_pecl_version "event" "stable")"
|
|
||||||
event_opts=() && get_event_configure_opts
|
|
||||||
export EVENT_LINUX_LIBS='libevent-dev'
|
|
||||||
export EVENT_DARWIN_LIBS='libevent'
|
|
||||||
event_configure_opts="--with-php-config=$(command -v php-config) ${event_opts[*]}"
|
|
||||||
export EVENT_CONFIGURE_OPTS="$event_configure_opts"
|
|
||||||
add_extension_from_source event https://pecl.php.net event event "${ext##*-}" extension pecl
|
|
||||||
}
|
|
||||||
|
|
||||||
# Function to add event
|
|
||||||
add_event() {
|
|
||||||
local ext=$1
|
|
||||||
enable_extension "event" "extension"
|
|
||||||
if check_extension "event"; then
|
|
||||||
add_log "${tick:?}" "event" "Enabled"
|
|
||||||
else
|
|
||||||
if ! [[ "${version:?}" =~ ${old_versions:?} ]] && [ "$os" = "Darwin" ]; then
|
|
||||||
add_brew_extension event extension >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
add_event_helper "$ext" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
add_extension_log "event" "Installed and enabled"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
os="$(uname -s)"
|
|
@ -1,132 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for a map of extensions and their dependent extensions.
|
|
||||||
*
|
|
||||||
* Class ExtensionMap
|
|
||||||
*/
|
|
||||||
class ExtensionMap {
|
|
||||||
/** @var string Directory in which shared extensions are stored. */
|
|
||||||
private $extension_dir;
|
|
||||||
|
|
||||||
/** @var string File extension for PHP extension file. */
|
|
||||||
private $file_extension;
|
|
||||||
|
|
||||||
/** @var string Prefix in PHP extension file. */
|
|
||||||
private $file_prefix;
|
|
||||||
|
|
||||||
/** @var array Array to store the map */
|
|
||||||
private $map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ExtensionMap constructor.
|
|
||||||
*/
|
|
||||||
function __construct() {
|
|
||||||
$this->extension_dir = ini_get('extension_dir');
|
|
||||||
$this->file_extension = (PHP_OS == 'WINNT' ? '.dll' : '.so');
|
|
||||||
$this->file_prefix = (PHP_OS == 'WINNT' ? 'php_' : '');
|
|
||||||
$this->map = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to read the extension map.
|
|
||||||
*/
|
|
||||||
private function parseMap($path) {
|
|
||||||
if(file_exists($path)) {
|
|
||||||
$handle = fopen($path, "r");
|
|
||||||
if ($handle) {
|
|
||||||
while (($line = fgets($handle)) !== false) {
|
|
||||||
$line_parts = explode(':', $line);
|
|
||||||
$this->map[$line_parts[0]] = explode(' ', trim($line_parts[1]));
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to check if a shared extension file exists.
|
|
||||||
*
|
|
||||||
* @param string $extension
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
private function checkSharedExtension($extension) {
|
|
||||||
$extension_file = $this->extension_dir. DIRECTORY_SEPARATOR . $this->file_prefix . $extension . $this->file_extension;
|
|
||||||
return file_exists($extension_file);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to get all shared extensions.
|
|
||||||
*
|
|
||||||
* @return string[]
|
|
||||||
*/
|
|
||||||
private function getSharedExtensions() {
|
|
||||||
$files = scandir($this->extension_dir);
|
|
||||||
$extensions = array_diff($files, array('.','..'));
|
|
||||||
$filter_pattern = "/$this->file_extension|$this->file_prefix/";
|
|
||||||
return array_map(function ($extension) use($filter_pattern) {
|
|
||||||
return preg_replace($filter_pattern, '', $extension);
|
|
||||||
}, $extensions);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to patch dependencies if there are any bugs in Reflection data.
|
|
||||||
*
|
|
||||||
* @param string $extension
|
|
||||||
* @param array $dependencies
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function patchDependencies($extension, $dependencies) {
|
|
||||||
// memcached 2.2.0 has no dependencies in reflection data.
|
|
||||||
if($extension == 'memcached') {
|
|
||||||
$dependencies = array_unique(array_merge($dependencies, array('igbinary', 'json', 'msgpack')));
|
|
||||||
}
|
|
||||||
return $dependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to add extension to the map.
|
|
||||||
*
|
|
||||||
* @param string $extension
|
|
||||||
* @throws ReflectionException
|
|
||||||
*/
|
|
||||||
private function addExtensionToMap($extension) {
|
|
||||||
if($this->map && array_key_exists($extension, $this->map) && !empty($this->map[$extension])) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// PHP 5.3 does not allow using $this.
|
|
||||||
$self = $this;
|
|
||||||
|
|
||||||
$ref = new ReflectionExtension($extension);
|
|
||||||
$dependencies = array_keys(array_map('strtolower', $ref->getDependencies()));
|
|
||||||
$dependencies = $this->patchDependencies($extension, $dependencies);
|
|
||||||
$dependencies = array_filter($dependencies, function ($dependency) use ($self) {
|
|
||||||
return $self->checkSharedExtension($dependency);
|
|
||||||
});
|
|
||||||
$self->map[$extension] = $dependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function to write the map of shared extensions and their dependent extensions.
|
|
||||||
*/
|
|
||||||
public function write() {
|
|
||||||
$path = $_SERVER['argv'][1];
|
|
||||||
$this->parseMap($path);
|
|
||||||
$extensions = array_map('strtolower', $this->getSharedExtensions());
|
|
||||||
foreach ($extensions as $extension) {
|
|
||||||
try {
|
|
||||||
$this->addExtensionToMap($extension);
|
|
||||||
} catch (ReflectionException $e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$map_string = '';
|
|
||||||
foreach($this->map as $extension => $dependencies) {
|
|
||||||
$map_string .= $extension . ': ' . implode(' ', $dependencies) . PHP_EOL;
|
|
||||||
}
|
|
||||||
file_put_contents($path, $map_string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$extension_map = new ExtensionMap();
|
|
||||||
$extension_map->write();
|
|
@ -1,20 +0,0 @@
|
|||||||
Function Add-Choco() {
|
|
||||||
try {
|
|
||||||
if($null -eq (Get-Command -Name choco.exe -ErrorAction SilentlyContinue)) {
|
|
||||||
# Source: https://docs.chocolatey.org/en-us/choco/setup
|
|
||||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
||||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
|
||||||
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
|
||||||
}
|
|
||||||
} catch { }
|
|
||||||
}
|
|
||||||
|
|
||||||
Function Add-Firebird() {
|
|
||||||
Add-Choco > $null 2>&1
|
|
||||||
choco install firebird -params '/ClientAndDevTools' -y --force > $null 2>&1
|
|
||||||
if((Get-ChildItem $env:ProgramFiles\**\**\fbclient.dll | Measure-Object).Count -eq 1) {
|
|
||||||
Add-Extension pdo_firebird
|
|
||||||
} else {
|
|
||||||
Add-Log $cross pdo_firebird "Could not install pdo_firebird on PHP $( $installed.FullVersion )"
|
|
||||||
}
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user