mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-11-04 00:46:36 +07:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2ed2e6e7ad | 
							
								
								
									
										11
									
								
								.github/SECURITY.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/SECURITY.md
									
									
									
									
										vendored
									
									
								
							@ -2,20 +2,23 @@
 | 
			
		||||
 | 
			
		||||
## Supported Versions
 | 
			
		||||
 | 
			
		||||
The latest patch version of `v2` release of this project is supported for security updates.
 | 
			
		||||
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 patch releases of the following PHP versions.
 | 
			
		||||
This security policy only applies to the latest patches of the following PHP versions.
 | 
			
		||||
 | 
			
		||||
| Version | Supported          |
 | 
			
		||||
|---------|--------------------|
 | 
			
		||||
| 8.1     | :white_check_mark: |
 | 
			
		||||
| 8.2     | :white_check_mark: |
 | 
			
		||||
| 8.3     | :white_check_mark: |
 | 
			
		||||
| 8.4     | :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@setup-php.com](mailto:contact@setup-php.com).
 | 
			
		||||
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).
 | 
			
		||||
							
								
								
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							@ -21,13 +21,13 @@ jobs:
 | 
			
		||||
          fetch-depth: 2
 | 
			
		||||
 | 
			
		||||
      - name: Initialize CodeQL
 | 
			
		||||
        uses: github/codeql-action/init@v4
 | 
			
		||||
        uses: github/codeql-action/init@v3
 | 
			
		||||
        with:
 | 
			
		||||
          config-file: ./.github/codeql/codeql-configuration.yml
 | 
			
		||||
          languages: javascript
 | 
			
		||||
 | 
			
		||||
      - name: Autobuild
 | 
			
		||||
        uses: github/codeql-action/autobuild@v4
 | 
			
		||||
        uses: github/codeql-action/autobuild@v3
 | 
			
		||||
 | 
			
		||||
      - name: Perform CodeQL Analysis
 | 
			
		||||
        uses: github/codeql-action/analyze@v4
 | 
			
		||||
        uses: github/codeql-action/analyze@v3
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								.github/workflows/docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/docs.yml
									
									
									
									
										vendored
									
									
								
							@ -16,8 +16,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        operating-system: [ubuntu-24.04, ubuntu-22.04, windows-2022, macos-15-intel]
 | 
			
		||||
        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', '8.3', '8.4', '8.5', '8.6']
 | 
			
		||||
        operating-system: [ubuntu-24.04, ubuntu-22.04, windows-2022, macos-13]
 | 
			
		||||
        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', '8.3', '8.4', '8.5']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
        uses: shivammathur/setup-php@v2
 | 
			
		||||
@ -88,7 +88,7 @@ jobs:
 | 
			
		||||
          Remove-Item "$env:file.all" -Force
 | 
			
		||||
          Remove-Item "$env:file.builtin" -Force
 | 
			
		||||
      - name: Upload artifacts
 | 
			
		||||
        uses: actions/upload-artifact@v5
 | 
			
		||||
        uses: actions/upload-artifact@v4
 | 
			
		||||
        with:
 | 
			
		||||
          name: lists-php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
 | 
			
		||||
          path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md
 | 
			
		||||
@ -105,7 +105,7 @@ jobs:
 | 
			
		||||
        with:
 | 
			
		||||
          repository: ${{ github.repository }}.wiki
 | 
			
		||||
      - name: Download artifacts
 | 
			
		||||
        uses: actions/download-artifact@v6
 | 
			
		||||
        uses: actions/download-artifact@v5
 | 
			
		||||
        with:
 | 
			
		||||
          path: ${{ github.workspace }}/lists
 | 
			
		||||
          pattern: lists-*
 | 
			
		||||
@ -116,11 +116,11 @@ jobs:
 | 
			
		||||
          git config --local user.name "${{ github.repository_owner }}"
 | 
			
		||||
      - name: Combine
 | 
			
		||||
        run: |
 | 
			
		||||
          for os in ubuntu-24.04 ubuntu-22.04 windows-2025 windows-2022 windows-2019 macos-13 macos-14 macos-15 macos-26; do
 | 
			
		||||
          for os in ubuntu-24.04 ubuntu-22.04 windows-2022 windows-2019 macos-13 macos-14 macos-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 8.3 8.4 8.5 8.6; do
 | 
			
		||||
            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 8.3 8.4 8.5; do
 | 
			
		||||
              if [[ "${os%-*}" = "macos" ]]; then
 | 
			
		||||
                cat lists/php"$version"-macos-15-intel.md >> Php-extensions-loaded-on-"$os".md
 | 
			
		||||
                cat lists/php"$version"-macos-13.md >> Php-extensions-loaded-on-"$os".md
 | 
			
		||||
              elif [ "${os%-*}" = "windows" ]; then
 | 
			
		||||
                cat lists/php"$version"-windows-2022.md >> Php-extensions-loaded-on-"$os".md
 | 
			
		||||
              else
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/node.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/node.yml
									
									
									
									
										vendored
									
									
								
							@ -34,7 +34,7 @@ jobs:
 | 
			
		||||
          fetch-depth: 2
 | 
			
		||||
 | 
			
		||||
      - name: Setup Node.js 20.x
 | 
			
		||||
        uses: actions/setup-node@v6
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 20.x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/php.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/php.yml
									
									
									
									
										vendored
									
									
								
							@ -28,8 +28,8 @@ jobs:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
      matrix:
 | 
			
		||||
        operating-system: [ubuntu-24.04, ubuntu-22.04, windows-2022, macos-15-intel]
 | 
			
		||||
        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', '8.3', '8.4', '8.5', '8.6']
 | 
			
		||||
        operating-system: [ubuntu-24.04, ubuntu-22.04, windows-2022, macos-13]
 | 
			
		||||
        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', '8.3', '8.4', '8.5']
 | 
			
		||||
        include:
 | 
			
		||||
          - operating-system: ubuntu-24.04
 | 
			
		||||
            php-versions: ''
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								.github/workflows/publish.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/publish.yml
									
									
									
									
										vendored
									
									
								
							@ -28,7 +28,7 @@ jobs:
 | 
			
		||||
          ref: ${{ github.event.inputs.tag }}
 | 
			
		||||
 | 
			
		||||
      - name: Setup Node.js
 | 
			
		||||
        uses: actions/setup-node@v6
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: '20.x'
 | 
			
		||||
          registry-url: https://registry.npmjs.org
 | 
			
		||||
@ -46,7 +46,7 @@ jobs:
 | 
			
		||||
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Change to GitHub Packages registry
 | 
			
		||||
        uses: actions/setup-node@v6
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        with:
 | 
			
		||||
          registry-url: https://npm.pkg.github.com
 | 
			
		||||
          scope: '@shivammathur'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										75
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								README.md
									
									
									
									
									
								
							@ -10,7 +10,7 @@
 | 
			
		||||
  <a href="https://github.com/shivammathur/setup-php" title="GitHub action to setup PHP"><img alt="GitHub Actions status" src="https://github.com/shivammathur/setup-php/workflows/Main%20workflow/badge.svg"></a>
 | 
			
		||||
  <a href="https://codecov.io/gh/shivammathur/setup-php" title="Code coverage"><img alt="Codecov Code Coverage" src="https://img.shields.io/codecov/c/github/shivammathur/setup-php?logo=codecov"></a>
 | 
			
		||||
  <a href="https://github.com/shivammathur/setup-php/blob/main/LICENSE" title="license"><img alt="LICENSE" src="https://img.shields.io/badge/license-MIT-428f7e.svg?logo=open%20source%20initiative&logoColor=white&labelColor=555555"></a>
 | 
			
		||||
  <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.6-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
 | 
			
		||||
  <a href="#tada-php-support" title="PHP Versions Supported"><img alt="PHP Versions Supported" src="https://img.shields.io/badge/php-5.3%20to%208.5-777bb3.svg?logo=php&logoColor=white&labelColor=555555"></a>
 | 
			
		||||
</p>
 | 
			
		||||
<p align="center">
 | 
			
		||||
  <a href="https://reddit.com/r/setup_php" title="setup-php reddit"><img alt="setup-php reddit" src="https://img.shields.io/badge/reddit-join-FF5700?logo=reddit&logoColor=FF5700&labelColor=555555"></a>
 | 
			
		||||
@ -68,20 +68,19 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
 | 
			
		||||
 | 
			
		||||
### GitHub-Hosted Runners
 | 
			
		||||
 | 
			
		||||
| Virtual environment | Arch    | YAML workflow label                | Pre-installed PHP |
 | 
			
		||||
|---------------------|---------|------------------------------------|-------------------|
 | 
			
		||||
| Ubuntu 24.04        | x86_64  | `ubuntu-latest` or `ubuntu-24.04`  | `PHP 8.3`         |
 | 
			
		||||
| Ubuntu 22.04        | x86_64  | `ubuntu-22.04`                     | `PHP 8.1`         |
 | 
			
		||||
| Ubuntu 24.04        | aarch64 | `ubuntu-24.04-arm`                 | `PHP 8.3`         |
 | 
			
		||||
| Ubuntu 22.04        | aarch64 | `ubuntu-22.04-arm`                 | `PHP 8.1`         |
 | 
			
		||||
| Windows Server 2025 | x64     | `windows-2025`                     | `PHP 8.3`         |
 | 
			
		||||
| Windows Server 2022 | x64     | `windows-latest` or `windows-2022` | `PHP 8.3`         |
 | 
			
		||||
| Windows Server 2019 | x64     | `windows-2019`                     | `PHP 8.3`         |
 | 
			
		||||
| macOS Tahoe 26.x    | arm64   | `macos-26`                         | -                 |
 | 
			
		||||
| macOS Sequoia 15.x  | arm64   | `macos-latest` or `macos-15`       | -                 |
 | 
			
		||||
| macOS Sonoma 14.x   | arm64   | `macos-14`                         | -                 |
 | 
			
		||||
| macOS Sequoia 15.x  | x86_64  | `macos-15-intel`                   | `PHP 8.3`         |
 | 
			
		||||
| macOS Ventura 13.x  | x86_64  | `macos-13`                         | `PHP 8.3`         |
 | 
			
		||||
| Virtual environment | Arch    | YAML workflow label                | Pre-installed PHP      |
 | 
			
		||||
|---------------------|---------|------------------------------------|------------------------|
 | 
			
		||||
| Ubuntu 24.04        | x86_64  | `ubuntu-latest` or `ubuntu-24.04`  | `PHP 8.3`              |
 | 
			
		||||
| Ubuntu 22.04        | x86_64  | `ubuntu-22.04`                     | `PHP 8.1`              |
 | 
			
		||||
| Ubuntu 24.04        | aarch64 | `ubuntu-24.04-arm`                 | `PHP 8.3`              |
 | 
			
		||||
| Ubuntu 22.04        | aarch64 | `ubuntu-22.04-arm`                 | `PHP 8.1`              |
 | 
			
		||||
| Windows Server 2025 | x64     | `windows-2025`                     | `PHP 8.3`              |
 | 
			
		||||
| Windows Server 2022 | x64     | `windows-latest` or `windows-2022` | `PHP 8.3`              |
 | 
			
		||||
| Windows Server 2019 | x64     | `windows-2019`                     | `PHP 8.3`              |
 | 
			
		||||
| macOS Tahoe 26.x    | arm64   | `macos-26`                         | -                      |
 | 
			
		||||
| macOS Sequoia 15.x  | arm64   | `macos-latest` or `macos-15`       | -                      |
 | 
			
		||||
| macOS Sonoma 14.x   | arm64   | `macos-14`                         | -                      |
 | 
			
		||||
| macOS Ventura 13.x  | x86_64  | `macos-13`                         | `PHP 8.3`              |
 | 
			
		||||
 | 
			
		||||
### Self-Hosted Runners
 | 
			
		||||
 | 
			
		||||
@ -104,11 +103,11 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
 | 
			
		||||
 | 
			
		||||
## :tada: PHP Support
 | 
			
		||||
 | 
			
		||||
On all supported OS/Platforms, the following PHP versions can be set up as per the runner.
 | 
			
		||||
On all supported OS/Platforms the following PHP versions can be set up as per the runner.
 | 
			
		||||
 | 
			
		||||
- PHP 5.3 to PHP 8.6 on GitHub-hosted runners, except for macOS ARM64 runners (macos-14).
 | 
			
		||||
- PHP 5.6 to PHP 8.6 on GitHub-hosted macOS ARM64 runners (macos-14).
 | 
			
		||||
- PHP 5.6 to PHP 8.6 on self-hosted runners.
 | 
			
		||||
- PHP 5.3 to PHP 8.5 on GitHub-hosted runners, except for macOS ARM64 runners (macos-14).
 | 
			
		||||
- PHP 5.6 to PHP 8.5 on GitHub-hosted macOS ARM64 runners (macos-14).
 | 
			
		||||
- PHP 5.6 to PHP 8.5 on self-hosted runners.
 | 
			
		||||
 | 
			
		||||
| PHP Version | Stability | Release Support       | Runner Support                 |
 | 
			
		||||
|-------------|-----------|-----------------------|--------------------------------|
 | 
			
		||||
@ -127,11 +126,10 @@ On all supported OS/Platforms, the following PHP versions can be set up as per t
 | 
			
		||||
| `8.3`       | `Stable`  | `Active`              | `GitHub-hosted`, `self-hosted` |
 | 
			
		||||
| `8.4`       | `Stable`  | `Active`              | `GitHub-hosted`, `self-hosted` |
 | 
			
		||||
| `8.5`       | `Nightly` | `In development`      | `GitHub-hosted`, `self-hosted` |
 | 
			
		||||
| `8.6`       | `Nightly` | `In development`      | `GitHub-hosted`, `self-hosted` |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
> [!Note]
 | 
			
		||||
> - Specifying `8.6` in `php-version` input installs a nightly build of `PHP 8.6.0-dev` from the master branch of PHP. Specifying `8.5` in `php-version` input installs a nightly build of `PHP 8.5.0-dev` from the PHP-8.5 branch of PHP. See [nightly build setup](#nightly-build-setup) for more information.
 | 
			
		||||
> - Specifying `8.5` in `php-version` input installs a nightly build of `PHP 8.5.0-dev`. See [nightly build setup](#nightly-build-setup) for more information.
 | 
			
		||||
> - To use JIT on `PHP 8.0` and above, refer to the [JIT configuration](#jit-configuration) section.
 | 
			
		||||
 | 
			
		||||
## :heavy_plus_sign: PHP Extension Support
 | 
			
		||||
@ -563,10 +561,10 @@ jobs:
 | 
			
		||||
 | 
			
		||||
### Nightly Build Setup
 | 
			
		||||
 | 
			
		||||
> Set up a nightly build of `PHP 8.5` or `PHP 8.6`.
 | 
			
		||||
> Set up a nightly build of `PHP 8.5`.
 | 
			
		||||
 | 
			
		||||
- These PHP versions are currently in active development and might contain bugs and breaking changes.
 | 
			
		||||
- Some user space extensions might not support these versions currently.
 | 
			
		||||
- Some user space extensions might not support this version currently.
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
steps:
 | 
			
		||||
@ -1002,14 +1000,18 @@ Examples of using `setup-php` with various PHP frameworks and packages.
 | 
			
		||||
 | 
			
		||||
## :sparkling_heart: Support This Project
 | 
			
		||||
 | 
			
		||||
- Please star the project and share it. If you blog, please share your experience of using `setup-php`.
 | 
			
		||||
- Please [reach out](mailto:contact@setup-php.com) if you have any questions about sponsoring setup-php.
 | 
			
		||||
 | 
			
		||||
Many users and organisations support setup-php via [GitHub Sponsors](https://github.com/sponsors/shivammathur).
 | 
			
		||||
 | 
			
		||||
<a href="https://github.com/sponsors/shivammathur"><img src="https://setup-php.com/sponsors.svg?" alt="Sponsor shivammathur"></a>
 | 
			
		||||
 | 
			
		||||
These companies generously provide setup-php their products and services to aid in the development of this project.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
  <a target="_blank" href="https://www.jetbrains.com/?from=setup-php#gh-light-mode-only">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/jetbrains.svg" alt="JetBrains" width="140" height="100">
 | 
			
		||||
  </a>
 | 
			
		||||
  <a target="_blank" href="https://www.jetbrains.com/?from=setup-php#gh-dark-mode-only">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/jetbrains-white.svg" alt="JetBrains" width="140" height="100">
 | 
			
		||||
  <a target="_blank" href="https://www.jetbrains.com/?from=setup-php">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/jetbrains.svg" alt="JetBrains" width="140" height="80">
 | 
			
		||||
  </a>
 | 
			
		||||
           
 | 
			
		||||
  <a target="_blank" href="https://www.cloudflare.com/lp/project-alexandria/#gh-light-mode-only">
 | 
			
		||||
@ -1026,22 +1028,11 @@ These companies generously provide setup-php their products and services to aid
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/macstadium-white.png" alt="Mac Stadium" width="200" height="80">
 | 
			
		||||
  </a>
 | 
			
		||||
           
 | 
			
		||||
  <a target="_blank" href="https://m.do.co/c/f1a8ee1277b0#gh-light-mode-only">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/digitalocean.svg" alt="Digitalocean" width="100" height="100">
 | 
			
		||||
  </a>
 | 
			
		||||
  <a target="_blank" href="https://m.do.co/c/f1a8ee1277b0#gh-dark-mode-only">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/digitalocean-white.svg" alt="Digitalocean" width="100" height="100">
 | 
			
		||||
  <a target="_blank" href="#">
 | 
			
		||||
    <img src="https://setup-php.com/sponsors/tidelift.png" alt="Tidelift" width="94" height="80">
 | 
			
		||||
  </a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
Many users and organizations support setup-php via [GitHub Sponsors](https://github.com/sponsors/shivammathur).
 | 
			
		||||
 | 
			
		||||
<a href="https://github.com/sponsors/shivammathur"><img src="https://setup-php.com/sponsors.svg?" alt="Sponsor shivammathur"></a>
 | 
			
		||||
 | 
			
		||||
- If you use setup-php, please consider starring the project and share it. 
 | 
			
		||||
- If you blog, please share your experience of using `setup-php`.
 | 
			
		||||
- Please [reach out](mailto:contact@setup-php.com) if you have any questions about sponsoring setup-php.
 | 
			
		||||
 | 
			
		||||
## :package: Dependencies
 | 
			
		||||
 | 
			
		||||
- [Node.js dependencies](https://github.com/shivammathur/setup-php/network/dependencies "Node.js dependencies")
 | 
			
		||||
@ -1084,7 +1075,7 @@ Many users and organizations support setup-php via [GitHub Sponsors](https://git
 | 
			
		||||
[`cs2pr`]:                    https://github.com/staabm/annotate-pull-request-from-checkstyle
 | 
			
		||||
[`deployer`]:                 https://deployer.org/
 | 
			
		||||
[`ecs`]:                      https://github.com/easy-coding-standard/easy-coding-standard
 | 
			
		||||
[`flex`]:                     https://github.com/symfony/flex
 | 
			
		||||
[`flex`]:                     https://flex.symfony.com/
 | 
			
		||||
[`grpc_php_plugin`]:          https://grpc.io/
 | 
			
		||||
[`infection`]:                https://infection.github.io/
 | 
			
		||||
[`mago`]:                     https://github.com/carthage-software/mago
 | 
			
		||||
 | 
			
		||||
@ -181,9 +181,9 @@ describe('Utils tests', () => {
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('checking suppressOutput', async () => {
 | 
			
		||||
    expect(await utils.suppressOutput('win32')).toEqual(' >$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('win32')).toEqual(' ');
 | 
			
		||||
    expect(await utils.suppressOutput('linux')).toEqual(' ');
 | 
			
		||||
    expect(await utils.suppressOutput('darwin')).toEqual(' ');
 | 
			
		||||
    expect(await utils.suppressOutput('openbsd')).toContain(
 | 
			
		||||
      'Platform openbsd is not supported'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@ -11,7 +11,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ jobs:
 | 
			
		||||
        # blackfire-player supports PHP >= 5.5
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ jobs:
 | 
			
		||||
        # Blackfire supports PHP >= 5.3 on Ubuntu and macOS, and PHP >= 5.4 on Windows
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@ jobs:
 | 
			
		||||
        options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -75,7 +75,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -108,7 +108,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,7 @@ jobs:
 | 
			
		||||
        options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -75,7 +75,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -108,7 +108,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.operating-system }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -47,7 +47,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
@ -79,7 +79,7 @@ jobs:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.operating-system }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.operating-system }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,7 @@ jobs:
 | 
			
		||||
        # php-versions: ['7.0', '7.1', '7.2', '7.3']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ jobs:
 | 
			
		||||
        # php-versions: ['7.0', '7.1', '7.2', '7.3']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -12,10 +12,10 @@ jobs:
 | 
			
		||||
        node-versions: ['16']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Setup Node.js
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        uses: actions/setup-node@v1
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: ${{ matrix.node-versions }}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ jobs:
 | 
			
		||||
    runs-on: ${{ matrix.operating-system }}
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0', '8.1']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      # Docs: https://github.com/shivammathur/setup-php
 | 
			
		||||
      - name: Setup PHP
 | 
			
		||||
 | 
			
		||||
@ -29,10 +29,10 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Set Node.js 10.x
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        uses: actions/setup-node@v1
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 10.x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -29,10 +29,10 @@ jobs:
 | 
			
		||||
        php-versions: ['7.4', '8.0']
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout
 | 
			
		||||
        uses: actions/checkout@v5
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Set Node.js 10.x
 | 
			
		||||
        uses: actions/setup-node@v5
 | 
			
		||||
        uses: actions/setup-node@v1
 | 
			
		||||
        with:
 | 
			
		||||
          node-version: 10.x
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ export async function addINIValuesUnix(
 | 
			
		||||
  return (
 | 
			
		||||
    'echo "' +
 | 
			
		||||
    ini_values.join('\n') +
 | 
			
		||||
    '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1' +
 | 
			
		||||
    '" | sudo tee -a "${pecl_file:-${ini_file[@]}}" ' +
 | 
			
		||||
    script
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,6 @@
 | 
			
		||||
  "highest": "8.4",
 | 
			
		||||
  "latest": "8.4",
 | 
			
		||||
  "nightly": "8.5",
 | 
			
		||||
  "master": "8.6",
 | 
			
		||||
  "5.x": "5.6",
 | 
			
		||||
  "7.x": "7.4",
 | 
			
		||||
  "8.x": "8.4"
 | 
			
		||||
 | 
			
		||||
@ -266,8 +266,7 @@
 | 
			
		||||
    "type": "custom-package",
 | 
			
		||||
    "repository": "symfony-cli/symfony-cli",
 | 
			
		||||
    "domain": "https://github.com",
 | 
			
		||||
    "version_prefix": "v",
 | 
			
		||||
    "version_parameter": "-V"
 | 
			
		||||
    "version_prefix": "-V"
 | 
			
		||||
  },
 | 
			
		||||
  "blackfire-player": {
 | 
			
		||||
    "type": "custom-function",
 | 
			
		||||
 | 
			
		||||
@ -38,9 +38,7 @@ export async function addExtensionDarwin(
 | 
			
		||||
      // match 5.3ioncube...8.4ioncube
 | 
			
		||||
      // match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, and 7.4phalcon5...8.4phalcon5
 | 
			
		||||
      // match 7.0zephir_parser...8.4zephir_parser
 | 
			
		||||
      case /^(7\.4|8\.[0-5])relay(-v?\d+\.\d+\.\d+|-nightly)?$/.test(
 | 
			
		||||
        version_extension
 | 
			
		||||
      ):
 | 
			
		||||
      case /^(7\.4|8\.[0-5])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
 | 
			
		||||
      case /^(5\.[3-6]|7\.[0-4]|8\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
 | 
			
		||||
        version_extension
 | 
			
		||||
      ):
 | 
			
		||||
@ -273,9 +271,7 @@ export async function addExtensionLinux(
 | 
			
		||||
      // match 5.3ioncube...8.4ioncube
 | 
			
		||||
      // match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, 7.4phalcon5...8.4phalcon5
 | 
			
		||||
      // match 7.0zephir_parser...8.4zephir_parser
 | 
			
		||||
      case /^(7\.4|8\.[0-5])relay(-v?\d+\.\d+\.\d+|-nightly)?$/.test(
 | 
			
		||||
        version_extension
 | 
			
		||||
      ):
 | 
			
		||||
      case /^(7\.4|8\.[0-5])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
 | 
			
		||||
      case /^(5\.[3-6]|7\.[0-4]|8\.[0-4])blackfire(-\d+\.\d+\.\d+)?$/.test(
 | 
			
		||||
        version_extension
 | 
			
		||||
      ):
 | 
			
		||||
 | 
			
		||||
@ -13,9 +13,9 @@ handle_dependency_extensions() {
 | 
			
		||||
  suffix="$(get_php_formula_suffix)"
 | 
			
		||||
  if [[ -n "$suffix" ]]; then
 | 
			
		||||
    brew_opts=(-sf)
 | 
			
		||||
    patch_abstract_file >/dev/null 2>&1
 | 
			
		||||
    patch_abstract_file 
 | 
			
		||||
    for dependency_extension in "${dependency_extensions[@]}"; do
 | 
			
		||||
        brew install "${brew_opts[@]}" "$ext_tap/$dependency_extension@$version" >/dev/null 2>&1 && copy_brew_extensions "$dependency_extension"
 | 
			
		||||
        brew install "${brew_opts[@]}" "$ext_tap/$dependency_extension@$version"  && copy_brew_extensions "$dependency_extension"
 | 
			
		||||
    done
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
@ -31,7 +31,7 @@ disable_extension_helper() {
 | 
			
		||||
  sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
 | 
			
		||||
  sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions
 | 
			
		||||
  mkdir -p /tmp/extdisabled/"$version"
 | 
			
		||||
  echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
 | 
			
		||||
  echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to get extension name from brew formula.
 | 
			
		||||
@ -69,9 +69,9 @@ add_brew_extension() {
 | 
			
		||||
  else
 | 
			
		||||
    add_brew_tap "$php_tap"
 | 
			
		||||
    add_brew_tap "$ext_tap"
 | 
			
		||||
    update_dependencies >/dev/null 2>&1
 | 
			
		||||
    handle_dependency_extensions "$formula" "$extension" >/dev/null 2>&1
 | 
			
		||||
    (brew install "${brew_opts[@]}" "$ext_tap/$formula@$version" >/dev/null 2>&1 && copy_brew_extensions "$formula") || pecl_install "$extension" >/dev/null 2>&1
 | 
			
		||||
    update_dependencies 
 | 
			
		||||
    handle_dependency_extensions "$formula" "$extension" 
 | 
			
		||||
    (brew install "${brew_opts[@]}" "$ext_tap/$formula@$version"  && copy_brew_extensions "$formula") || pecl_install "$extension" 
 | 
			
		||||
    add_extension_log "$extension" "Installed and enabled"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
@ -80,7 +80,7 @@ add_brew_extension() {
 | 
			
		||||
patch_abstract_file() {
 | 
			
		||||
    abstract_path="$tap_dir"/"$ext_tap"/Abstract/abstract-php-extension.rb
 | 
			
		||||
    if [[ -e "$abstract_path" && ! -e /tmp/abstract_patch ]]; then
 | 
			
		||||
        echo '' | sudo tee /tmp/abstract_patch >/dev/null 2>&1
 | 
			
		||||
        echo '' | sudo tee /tmp/abstract_patch 
 | 
			
		||||
        sudo sed -i '' -e "s|php@#{\(.*\)}|php@#{\1}$suffix|g" -e "s|php_version /|\"#{php_version}$suffix\" /|g" "$abstract_path"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
@ -90,9 +90,9 @@ add_extension_helper() {
 | 
			
		||||
  local extension=$1
 | 
			
		||||
  prefix=$2
 | 
			
		||||
  if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
 | 
			
		||||
    run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
 | 
			
		||||
    run_script "php5-darwin" "${version/./}" "$extension" 
 | 
			
		||||
  else
 | 
			
		||||
    pecl_install "$extension" >/dev/null 2>&1 &&
 | 
			
		||||
    pecl_install "$extension"  &&
 | 
			
		||||
    if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log "$extension" "Installed and enabled"
 | 
			
		||||
@ -106,8 +106,8 @@ add_devtools() {
 | 
			
		||||
 | 
			
		||||
# Function to handle request to add PECL.
 | 
			
		||||
add_pecl() {
 | 
			
		||||
  enable_extension xml extension >/dev/null 2>&1
 | 
			
		||||
  configure_pecl >/dev/null 2>&1
 | 
			
		||||
  enable_extension xml extension 
 | 
			
		||||
  configure_pecl 
 | 
			
		||||
  pear_version=$(get_tool_version "pecl" "version")
 | 
			
		||||
  add_log "${tick:?}" "PECL" "Found PECL $pear_version"
 | 
			
		||||
}
 | 
			
		||||
@ -139,7 +139,7 @@ update_dependencies() {
 | 
			
		||||
        git_retry -C "$repo" fetch origin main && git -C "$repo" reset --hard origin/main
 | 
			
		||||
      fi
 | 
			
		||||
    done
 | 
			
		||||
    echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
 | 
			
		||||
    echo '' | sudo tee /tmp/update_dependencies 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -148,9 +148,9 @@ get_brewed_php() {
 | 
			
		||||
  cellar="$brew_prefix"/Cellar
 | 
			
		||||
  php_cellar="$cellar"/php
 | 
			
		||||
  if [ -d "$cellar" ] && ! [[ "$(find "$cellar" -maxdepth 1 -name "php@$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
 | 
			
		||||
    php_semver
 | 
			
		||||
    php_semver | cut -c 1-3
 | 
			
		||||
  elif [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
 | 
			
		||||
    php_semver
 | 
			
		||||
    php_semver | cut -c 1-3
 | 
			
		||||
  else
 | 
			
		||||
    echo 'false';
 | 
			
		||||
  fi
 | 
			
		||||
@ -160,24 +160,17 @@ get_brewed_php() {
 | 
			
		||||
add_php() {
 | 
			
		||||
  action=$1
 | 
			
		||||
  existing_version=$2
 | 
			
		||||
  add_brew_tap "$php_tap"
 | 
			
		||||
  update_dependencies
 | 
			
		||||
  suffix="$(get_php_formula_suffix)"
 | 
			
		||||
  php_keg="php@$version$suffix"
 | 
			
		||||
  php_formula="shivammathur/php/$php_keg"
 | 
			
		||||
  if [[ "$existing_version" = "false" || -n "$suffix" || "$action" = "upgrade" ]]; then
 | 
			
		||||
    update_dependencies
 | 
			
		||||
    add_brew_tap
 | 
			
		||||
  fi
 | 
			
		||||
  php_formula="shivammathur/php/php@$version$suffix"
 | 
			
		||||
  if [[ "$existing_version" != "false" && -z "$suffix" ]]; then
 | 
			
		||||
    if [ "$action" = "upgrade" ]; then
 | 
			
		||||
      brew upgrade -f --overwrite "$php_formula"
 | 
			
		||||
    else
 | 
			
		||||
      brew unlink "$php_keg"
 | 
			
		||||
    fi
 | 
			
		||||
    ([ "$action" = "upgrade" ] && brew upgrade -f --overwrite "$php_formula") || brew unlink "$php_formula"
 | 
			
		||||
  else
 | 
			
		||||
    brew install -f --overwrite "$php_formula"
 | 
			
		||||
  fi
 | 
			
		||||
  sudo chown -R "$(id -un)":"$(id -gn)" "$brew_prefix"
 | 
			
		||||
  brew link --force --overwrite "$php_keg"
 | 
			
		||||
  brew link --force --overwrite "$php_formula"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to get formula suffix
 | 
			
		||||
@ -204,7 +197,7 @@ add_php_config() {
 | 
			
		||||
  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
 | 
			
		||||
    echo '' | sudo tee "${ini_file[@]}" 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -219,7 +212,7 @@ get_scan_dir() {
 | 
			
		||||
 | 
			
		||||
# Function to handle self-hosted runner setup.
 | 
			
		||||
self_hosted_helper() {
 | 
			
		||||
  sudo mkdir -p /opt/hostedtoolcache >/dev/null 2>&1 || true
 | 
			
		||||
  sudo mkdir -p /opt/hostedtoolcache  || true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to Setup PHP.
 | 
			
		||||
@ -229,18 +222,18 @@ setup_php() {
 | 
			
		||||
  update=true
 | 
			
		||||
  check_pre_installed
 | 
			
		||||
  existing_version=$(get_brewed_php)
 | 
			
		||||
  status="Found"
 | 
			
		||||
  if [[ "$version" =~ ${old_versions:?} ]]; then
 | 
			
		||||
    run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
 | 
			
		||||
    run_script "php5-darwin" "${version/./}" 
 | 
			
		||||
    status="Installed"
 | 
			
		||||
  elif [ "${existing_version:0:3}" != "$version" ]; then
 | 
			
		||||
    add_php "install" "$existing_version" >/dev/null 2>&1
 | 
			
		||||
  elif [ "$existing_version" != "$version" ]; then
 | 
			
		||||
    add_php "install" "$existing_version" 
 | 
			
		||||
    status="Installed"
 | 
			
		||||
  elif [[ "${existing_version:0:3}" = "$version" && "${update:?}" = "true" ]]; then
 | 
			
		||||
    brew_php_version="$(brew info --json "php@$version" 2>/dev/null | jq -r '.[].versions.stable')"
 | 
			
		||||
    if [ "$brew_php_version" != "$existing_version" ]; then
 | 
			
		||||
      add_php "upgrade" "$existing_version" >/dev/null 2>&1
 | 
			
		||||
      status="Upgraded"
 | 
			
		||||
  elif [ "$existing_version" = "$version" ]; then
 | 
			
		||||
    if [ "${update:?}" = "true" ]; then
 | 
			
		||||
      add_php "upgrade" "$existing_version" 
 | 
			
		||||
      status="Updated to"
 | 
			
		||||
    else
 | 
			
		||||
      status="Found"
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  php_config="$(command -v php-config)"
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,8 @@
 | 
			
		||||
# Function to log result of installing extension.
 | 
			
		||||
add_extension_log() {
 | 
			
		||||
  if check_extension ${1%%-*}; then
 | 
			
		||||
    add_log "${tick:?}" "$1" "$2"
 | 
			
		||||
  else
 | 
			
		||||
    add_log "${cross:?}" "$1" "${3:-Could not install $1 on PHP ${semver:?}}"
 | 
			
		||||
  fi
 | 
			
		||||
  (
 | 
			
		||||
    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.
 | 
			
		||||
@ -50,7 +48,7 @@ enable_extension() {
 | 
			
		||||
    [ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
 | 
			
		||||
    enable_extension_dependencies "$1" "$2"
 | 
			
		||||
    enable_cache_extension_dependencies "$1" "$2"
 | 
			
		||||
    if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod >/dev/null 2>&1; then
 | 
			
		||||
    if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod ; then
 | 
			
		||||
      sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?\"?$/d" "$pecl_file"
 | 
			
		||||
      mod="${ini_dir:?}"/../mods-available/"$1".ini
 | 
			
		||||
      if ! [ -e "$mod" ]; then
 | 
			
		||||
@ -59,7 +57,7 @@ enable_extension() {
 | 
			
		||||
        [ -n "$mod_priority_line" ] && priority=$(echo "$mod_priority_line" | cut -d'=' -f 2)
 | 
			
		||||
        (echo "; priority=$priority"; echo "$2=${ext_dir:?}/$1.so") | sudo tee "$mod" >/dev/null
 | 
			
		||||
      fi
 | 
			
		||||
      sudo phpenmod -v "$version" "$1" >/dev/null 2>&1
 | 
			
		||||
      sudo phpenmod -v "$version" "$1" 
 | 
			
		||||
    else
 | 
			
		||||
      echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
 | 
			
		||||
    fi
 | 
			
		||||
@ -71,7 +69,7 @@ enable_extensions() {
 | 
			
		||||
  local extensions=("$@")
 | 
			
		||||
  to_wait=()
 | 
			
		||||
  for ext in "${extensions[@]}"; do
 | 
			
		||||
    enable_extension "$ext" extension >/dev/null 2>&1 &
 | 
			
		||||
    enable_extension "$ext" extension  &
 | 
			
		||||
    to_wait+=($!)
 | 
			
		||||
  done
 | 
			
		||||
  wait "${to_wait[@]}"
 | 
			
		||||
@ -79,7 +77,7 @@ enable_extensions() {
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
  php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to enable extension dependencies which are also extensions.
 | 
			
		||||
@ -125,7 +123,7 @@ disable_extension() {
 | 
			
		||||
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
 | 
			
		||||
  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  || 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 -I{} touch /tmp/extdisabled/"$version"/{}
 | 
			
		||||
@ -139,7 +137,7 @@ configure_pecl() {
 | 
			
		||||
    for script in pear pecl; do
 | 
			
		||||
      sudo "$script" channel-update "$script".php.net
 | 
			
		||||
    done
 | 
			
		||||
    echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
 | 
			
		||||
    echo '' | sudo tee /tmp/pecl_config 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -177,8 +175,8 @@ get_pecl_version() {
 | 
			
		||||
pecl_install() {
 | 
			
		||||
  local extension=$1
 | 
			
		||||
  local prefix=${2:-extension}
 | 
			
		||||
  add_pecl >/dev/null 2>&1
 | 
			
		||||
  disable_extension_helper "${extension%-*}" >/dev/null 2>&1
 | 
			
		||||
  add_pecl 
 | 
			
		||||
  disable_extension_helper "${extension%-*}" 
 | 
			
		||||
  # Compare version with 8.3 so it runs only on 8.4 and above
 | 
			
		||||
  # Install using the source interface as it allows for patching.
 | 
			
		||||
  if [[ $(printf "%s\n%s" "${version:?}" "8.3" | sort -V | head -n1) != "$version" ]]; then
 | 
			
		||||
@ -191,11 +189,11 @@ pecl_install() {
 | 
			
		||||
    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
 | 
			
		||||
    (( ${#libraries[@]} )) && add_libs "${libraries[@]}" 
 | 
			
		||||
    if [ "$version" = "5.3" ]; then
 | 
			
		||||
      yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1
 | 
			
		||||
      yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" 
 | 
			
		||||
    else
 | 
			
		||||
      yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1
 | 
			
		||||
      yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" 
 | 
			
		||||
    fi
 | 
			
		||||
    local exit_code=$?
 | 
			
		||||
    sudo pecl info "$extension" | grep -iq 'zend extension' && prefix=zend_extension
 | 
			
		||||
@ -218,7 +216,7 @@ add_pecl_extension() {
 | 
			
		||||
    add_log "${tick:?}" "$extension" "Enabled"
 | 
			
		||||
  else
 | 
			
		||||
    [ -n "$pecl_version" ] && pecl_version="-$pecl_version"
 | 
			
		||||
    pecl_install "$extension$pecl_version" || ( [ "${fail_fast:?}" = "false" ] && add_extension "$extension" "$(get_extension_prefix "$extension")" >/dev/null 2>&1)
 | 
			
		||||
    pecl_install "$extension$pecl_version" || ( [ "${fail_fast:?}" = "false" ] && add_extension "$extension" "$(get_extension_prefix "$extension")" )
 | 
			
		||||
    extension_version="$(php -r "echo phpversion('$extension');")"
 | 
			
		||||
    [ -n "$extension_version" ] && extension_version="-$extension_version"
 | 
			
		||||
    add_extension_log "$extension$extension_version" "Installed and enabled"
 | 
			
		||||
 | 
			
		||||
@ -19,11 +19,11 @@ add_blackfire() {
 | 
			
		||||
        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"_"$arch_name"-php-"$no_dot_version".so >/dev/null 2>&1
 | 
			
		||||
    get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_"$arch_name"-php-"$no_dot_version".so 
 | 
			
		||||
  fi
 | 
			
		||||
  if [ -e "${ext_dir:?}/blackfire.so" ]; then
 | 
			
		||||
    disable_extension xdebug >/dev/null 2>&1
 | 
			
		||||
    disable_extension pcov >/dev/null 2>&1
 | 
			
		||||
    disable_extension xdebug 
 | 
			
		||||
    disable_extension pcov 
 | 
			
		||||
    enable_extension blackfire extension
 | 
			
		||||
    add_extension_log blackfire "$status"
 | 
			
		||||
  else
 | 
			
		||||
 | 
			
		||||
@ -59,9 +59,9 @@ add_couchbase() {
 | 
			
		||||
      ext=$(get_couchbase_version)
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ "$ext" =~ couchbase-[2-3].+ ]]; then
 | 
			
		||||
      add_couchbase_clibs "$ext" >/dev/null 2>&1
 | 
			
		||||
      add_couchbase_clibs "$ext" 
 | 
			
		||||
    else
 | 
			
		||||
      add_couchbase_cxxlibs >/dev/null 2>&1
 | 
			
		||||
      add_couchbase_cxxlibs 
 | 
			
		||||
    fi
 | 
			
		||||
    enable_extension "couchbase" "extension"
 | 
			
		||||
    if check_extension "couchbase"; then
 | 
			
		||||
@ -72,9 +72,9 @@ add_couchbase() {
 | 
			
		||||
        n_proc="$(nproc)"
 | 
			
		||||
        export COUCHBASE_SUFFIX_OPTS="CMAKE_BUILD_TYPE=Release"
 | 
			
		||||
        export CMAKE_BUILD_PARALLEL_LEVEL="$n_proc"
 | 
			
		||||
        add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1
 | 
			
		||||
        add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl 
 | 
			
		||||
      else
 | 
			
		||||
        pecl_install "${ext}" >/dev/null 2>&1
 | 
			
		||||
        pecl_install "${ext}" 
 | 
			
		||||
      fi
 | 
			
		||||
      add_extension_log "couchbase" "Installed and enabled"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,7 @@ add_cubrid_helper() {
 | 
			
		||||
add_cubrid() {
 | 
			
		||||
  ext=$1
 | 
			
		||||
  status='Enabled'
 | 
			
		||||
  add_cubrid_helper "$ext" >/dev/null 2>&1
 | 
			
		||||
  add_cubrid_helper "$ext" 
 | 
			
		||||
  add_extension_log "$ext" "$status"
 | 
			
		||||
  check_extension "$ext" && add_license_log
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -39,9 +39,9 @@ add_event() {
 | 
			
		||||
    add_log "${tick:?}" "event" "Enabled"
 | 
			
		||||
  else
 | 
			
		||||
    if ! [[ "${version:?}" =~ ${old_versions:?} ]] && [ "$os" = "Darwin" ]; then
 | 
			
		||||
      add_brew_extension event extension >/dev/null 2>&1
 | 
			
		||||
      add_brew_extension event extension 
 | 
			
		||||
    else
 | 
			
		||||
      add_event_helper "$ext" >/dev/null 2>&1
 | 
			
		||||
      add_event_helper "$ext" 
 | 
			
		||||
    fi
 | 
			
		||||
    add_extension_log "event" "Installed and enabled"
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ add_firebird_helper() {
 | 
			
		||||
 | 
			
		||||
add_firebird() {
 | 
			
		||||
  if [ "$(uname -s )" = "Darwin" ]; then
 | 
			
		||||
    add_firebird_client_darwin >/dev/null 2>&1
 | 
			
		||||
    add_firebird_client_darwin 
 | 
			
		||||
  fi
 | 
			
		||||
  enable_extension pdo_firebird extension
 | 
			
		||||
  status="Enabled"
 | 
			
		||||
@ -32,12 +32,12 @@ add_firebird() {
 | 
			
		||||
    status="Installed and enabled"
 | 
			
		||||
    if [ "$(uname -s)" = "Linux" ]; then
 | 
			
		||||
      if [[ "${version:?}" =~ 5.3|${nightly_versions:?} ]]; then
 | 
			
		||||
        add_firebird_helper /usr >/dev/null 2>&1
 | 
			
		||||
        add_firebird_helper /usr 
 | 
			
		||||
      else
 | 
			
		||||
        add_pdo_extension firebird >/dev/null 2>&1
 | 
			
		||||
        add_pdo_extension firebird 
 | 
			
		||||
      fi
 | 
			
		||||
    else
 | 
			
		||||
      add_firebird_helper /opt/firebird >/dev/null 2>&1
 | 
			
		||||
      add_firebird_helper /opt/firebird 
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log pdo_firebird "$status"
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ add_gearman_helper() {
 | 
			
		||||
add_gearman() {
 | 
			
		||||
  status="Enabled"
 | 
			
		||||
  if [ "$(uname -s)" = 'Linux' ]; then
 | 
			
		||||
    add_gearman_helper >/dev/null 2>&1
 | 
			
		||||
    add_gearman_helper 
 | 
			
		||||
    add_extension_log "gearman" "$status"
 | 
			
		||||
  else
 | 
			
		||||
    add_brew_extension gearman extension
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ add_geos() {
 | 
			
		||||
  if check_extension "geos"; then
 | 
			
		||||
    add_log "${tick:?}" "geos" "Enabled"
 | 
			
		||||
  else
 | 
			
		||||
    add_geos_helper >/dev/null 2>&1
 | 
			
		||||
    add_geos_helper 
 | 
			
		||||
    add_extension_log "geos" "Installed and enabled"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -40,12 +40,12 @@ Function Repair-ICU() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Function Add-Http() {
 | 
			
		||||
  Add-Extension iconv >$null 2>&1
 | 
			
		||||
  Add-Extension raphf >$null 2>&1
 | 
			
		||||
  Add-Extension iconv 
 | 
			
		||||
  Add-Extension raphf 
 | 
			
		||||
  if($version -lt '8.0') {
 | 
			
		||||
    Add-Extension propro >$null 2>&1
 | 
			
		||||
    Add-Extension propro 
 | 
			
		||||
  }
 | 
			
		||||
  Add-Extension pecl_http >$null 2>&1
 | 
			
		||||
  Add-Extension pecl_http 
 | 
			
		||||
  Repair-ICU
 | 
			
		||||
  Add-ExtensionLog http "Installed and enabled"
 | 
			
		||||
}
 | 
			
		||||
@ -75,7 +75,7 @@ add_http_latest() {
 | 
			
		||||
    if [ "$os" = "Linux" ]; then
 | 
			
		||||
      add_http_dependencies
 | 
			
		||||
      package="php$version-http"
 | 
			
		||||
      add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
 | 
			
		||||
      add_ppa ondrej/php  || update_ppa ondrej/php
 | 
			
		||||
      (check_package "$package" && install_packages "$package") || add_http_helper "$(get_http_version)" "$os"
 | 
			
		||||
    else
 | 
			
		||||
      if ! [[ "${version:?}" =~ ${old_versions:?} ]]; then
 | 
			
		||||
@ -103,9 +103,9 @@ add_http() {
 | 
			
		||||
  ext=$1
 | 
			
		||||
  status="Enabled"
 | 
			
		||||
  if [[ "$ext" =~ ^(pecl_http|http)$ ]]; then
 | 
			
		||||
    add_http_latest >/dev/null 2>&1
 | 
			
		||||
    add_http_latest 
 | 
			
		||||
  else
 | 
			
		||||
    add_http_version "$ext" >/dev/null 2>&1
 | 
			
		||||
    add_http_version "$ext" 
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log "http" "$status"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@ add_intl() {
 | 
			
		||||
    add_log "${cross:?}" "intl" "ICU $icu is not supported for PHP $version"
 | 
			
		||||
  else
 | 
			
		||||
    [ "${ts:?}" = 'zts' ] && suffix='-zts'
 | 
			
		||||
    install_icu "$icu" >/dev/null 2>&1
 | 
			
		||||
    install_icu "$icu" 
 | 
			
		||||
    get -q -n "${ext_dir:?}/intl.so" "https://github.com/shivammathur/icu-intl/releases/download/intl-$icu/php${version:?}-intl-$icu$suffix$arch_suffix.so"
 | 
			
		||||
    enable_extension intl extension
 | 
			
		||||
    add_extension_log intl "Installed and enabled with ICU $icu"
 | 
			
		||||
 | 
			
		||||
@ -24,10 +24,10 @@ add_ioncube() {
 | 
			
		||||
    if [ -e "$loader_file" ]; then
 | 
			
		||||
      sudo mv /tmp/ioncube/ioncube_loader_"${os_suffix%%_*}_${version:?}$ts_part".so "${ext_dir:?}/ioncube.so"
 | 
			
		||||
      sudo cp /tmp/ioncube/LICENSE.txt "$ext_dir"/IONCUBE_LICENSE.txt
 | 
			
		||||
      echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
 | 
			
		||||
      echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" 
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" >/dev/null 2>&1
 | 
			
		||||
    echo "zend_extension=$ext_dir/ioncube.so" | sudo tee "${scan_dir:?}/00-ioncube.ini" 
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log "ioncube" "$status"
 | 
			
		||||
  check_extension "ioncube" && add_license_log
 | 
			
		||||
 | 
			
		||||
@ -71,7 +71,7 @@ Function Add-Oci() {
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      $status = 'Installed and enabled'
 | 
			
		||||
      Add-Extension $extension >$null 2>&1
 | 
			
		||||
      Add-Extension $extension 
 | 
			
		||||
    }
 | 
			
		||||
    Add-ExtensionLog $extension $status
 | 
			
		||||
    Add-LicenseLog
 | 
			
		||||
 | 
			
		||||
@ -71,8 +71,8 @@ add_oci() {
 | 
			
		||||
  oracle_home='/opt/oracle'
 | 
			
		||||
  oracle_client=$oracle_home/instantclient
 | 
			
		||||
  os=$(uname -s)
 | 
			
		||||
  add_client >/dev/null 2>&1
 | 
			
		||||
  add_oci_helper >/dev/null 2>&1
 | 
			
		||||
  add_client 
 | 
			
		||||
  add_oci_helper 
 | 
			
		||||
  add_extension_log "$ext" "$status"
 | 
			
		||||
  check_extension "$ext" && add_license_log
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,7 @@ add_phalcon_helper() {
 | 
			
		||||
    add_brew_extension "$extension" extension
 | 
			
		||||
  else
 | 
			
		||||
    package="php${version:?}-$extension"
 | 
			
		||||
    add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
 | 
			
		||||
    add_ppa ondrej/php  || update_ppa ondrej/php
 | 
			
		||||
    [[ "$extension" =~ phalcon[4|5] ]] && (install_packages "php${version:?}-psr" || pecl_install psr || pecl_install psr-1.1.0)
 | 
			
		||||
    (check_package "$package" && install_packages "$package") || pecl_install phalcon-"$(get_phalcon_version)" || add_phalcon_from_repo
 | 
			
		||||
  fi
 | 
			
		||||
@ -94,7 +94,7 @@ add_phalcon() {
 | 
			
		||||
  [ "$extension" = "phalcon" ] && extension=phalcon5
 | 
			
		||||
  extension_major_version=${extension: -1}
 | 
			
		||||
  if [[ "$extension_major_version" =~ [3-5] ]]; then
 | 
			
		||||
    add_phalcon"$extension_major_version" >/dev/null 2>&1
 | 
			
		||||
    add_phalcon"$extension_major_version" 
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log "phalcon" "$status"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,9 +2,11 @@
 | 
			
		||||
get_relay_version() {
 | 
			
		||||
 local ext=$1
 | 
			
		||||
  if [[ "$ext" =~ ^relay$ ]]; then
 | 
			
		||||
    get -s -n "" "${relay_release:?}"
 | 
			
		||||
  elif [[ $ext =~ ^relay-nightly$ ]]; then
 | 
			
		||||
    echo "dev"
 | 
			
		||||
    if [ "${version:?}" = "7.4" ]; then
 | 
			
		||||
      echo 'v0.7.0'
 | 
			
		||||
    else
 | 
			
		||||
      get -s -n "" "${relay_releases:?}"/latest 2<&1 | grep -m 1 -Eo "tag/(v[0-9]+(\.[0-9]+)?(\.[0-9]+)?)" | head -n 1 | cut -d '/' -f 2
 | 
			
		||||
    fi
 | 
			
		||||
  else
 | 
			
		||||
    relay_version="${ext##*-}"
 | 
			
		||||
    echo "v${relay_version/v//}"
 | 
			
		||||
@ -46,6 +48,19 @@ change_library_paths() {
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Add hiredis library
 | 
			
		||||
add_hiredis_1.1.0() {
 | 
			
		||||
  hiredis_url=https://github.com/redis/hiredis/archive/v1.1.0.tar.gz
 | 
			
		||||
  hiredis_sha=fe6d21741ec7f3fc9df409d921f47dfc73a4d8ff64f4ac6f1d95f951bf7f53d6
 | 
			
		||||
  sed -Ei.bak -e "s#^  url.*#  url \"$hiredis_url\"#" -e "s#^  sha256.*#  sha256 \"$hiredis_sha\"#" ${core_repo:?}/Formula/h/hiredis.rb
 | 
			
		||||
  brew install -s hiredis
 | 
			
		||||
  lib_dir="${brew_prefix:?}"/opt/hiredis/lib
 | 
			
		||||
  if [ -e "$lib_dir"/libhiredis_ssl.1.1.0.dylib ]; then
 | 
			
		||||
    sudo ln -sf "$lib_dir"/libhiredis_ssl.1.1.0.dylib "$lib_dir"/libhiredis_ssl.dylib.1.1.0
 | 
			
		||||
  fi
 | 
			
		||||
  mv ${core_repo:?}/Formula/h/hiredis.rb.bak ${core_repo:?}/Formula/h/hiredis.rb
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Add relay dependencies
 | 
			
		||||
add_relay_dependencies() {
 | 
			
		||||
  add_extension json
 | 
			
		||||
@ -54,7 +69,12 @@ add_relay_dependencies() {
 | 
			
		||||
  if [ "$os" = "Darwin" ]; then
 | 
			
		||||
    . "${0%/*}"/tools/brew.sh
 | 
			
		||||
    configure_brew
 | 
			
		||||
    brew install lz4 hiredis zstd concurrencykit
 | 
			
		||||
    if [ "$relay_version" = "v0.7.0" ]; then
 | 
			
		||||
      brew install lz4 zstd concurrencykit
 | 
			
		||||
      add_hiredis_1.1.0 
 | 
			
		||||
    else
 | 
			
		||||
      brew install lz4 hiredis zstd concurrencykit
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -108,7 +128,7 @@ configure_relay() {
 | 
			
		||||
 | 
			
		||||
# Helper function to add relay extension
 | 
			
		||||
add_relay_helper() {
 | 
			
		||||
  local arch=$1
 | 
			
		||||
  arch="$(uname -m | sed 's/_/-/')"
 | 
			
		||||
  os_suffix="$(get_os_suffix)"
 | 
			
		||||
  openssl_suffix="$(get_openssl_suffix)"
 | 
			
		||||
  artifact_file_name="relay-$relay_version-php${version:?}-$os_suffix-$arch$openssl_suffix.tar.gz"
 | 
			
		||||
@ -132,24 +152,17 @@ add_relay() {
 | 
			
		||||
  local ext=$1
 | 
			
		||||
  local arch
 | 
			
		||||
  local url
 | 
			
		||||
  local message
 | 
			
		||||
  local error
 | 
			
		||||
  os=$(uname -s)
 | 
			
		||||
  arch="$(uname -m | sed 's/_/-/')"
 | 
			
		||||
  relay_release=https://builds.r2.relay.so/meta/latest
 | 
			
		||||
  relay_releases=https://github.com/cachewerk/relay/releases
 | 
			
		||||
  relay_trunk=https://builds.r2.relay.so
 | 
			
		||||
  if [[ "$arch" = "x86-64" && "$os" = "Darwin" ]]; then
 | 
			
		||||
    error="Relay extension is not available for macOS x86_64 architecture"
 | 
			
		||||
  relay_version=$(get_relay_version "$ext")
 | 
			
		||||
  add_relay_dependencies 
 | 
			
		||||
  if shared_extension relay; then
 | 
			
		||||
    message="Enabled"
 | 
			
		||||
  else
 | 
			
		||||
    relay_version=$(get_relay_version "$ext")
 | 
			
		||||
    add_relay_dependencies >/dev/null 2>&1
 | 
			
		||||
    if shared_extension relay; then
 | 
			
		||||
      message="Enabled"
 | 
			
		||||
    else
 | 
			
		||||
      add_relay_helper "$arch" >/dev/null 2>&1
 | 
			
		||||
      message="Installed and enabled ${relay_version}"
 | 
			
		||||
    fi
 | 
			
		||||
    configure_relay >/dev/null 2>&1
 | 
			
		||||
    add_relay_helper 
 | 
			
		||||
    message="Installed and enabled"
 | 
			
		||||
  fi
 | 
			
		||||
  add_extension_log relay "$message" "$error"
 | 
			
		||||
  configure_relay 
 | 
			
		||||
  add_extension_log relay "$message"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -47,7 +47,7 @@ check_lib() {
 | 
			
		||||
add_linux_libs() {
 | 
			
		||||
  local lib=$1
 | 
			
		||||
  if ! check_lib "$lib"; then
 | 
			
		||||
    install_packages "$lib" >/dev/null 2>&1 || true
 | 
			
		||||
    install_packages "$lib"  || true
 | 
			
		||||
  fi
 | 
			
		||||
  add_lib_log "$lib"
 | 
			
		||||
}
 | 
			
		||||
@ -56,9 +56,9 @@ add_linux_libs() {
 | 
			
		||||
add_darwin_libs() {
 | 
			
		||||
  local lib=$1
 | 
			
		||||
  if ! check_lib "$lib"; then
 | 
			
		||||
    brew install "$lib" >/dev/null 2>&1 || true
 | 
			
		||||
    brew install "$lib"  || true
 | 
			
		||||
    if [[ "$lib" = *@* ]]; then
 | 
			
		||||
      brew link --overwrite --force "$lib" >/dev/null 2>&1 || true
 | 
			
		||||
      brew link --overwrite --force "$lib"  || true
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  add_lib_log "$lib"
 | 
			
		||||
@ -80,7 +80,7 @@ add_libs() {
 | 
			
		||||
run_group() {
 | 
			
		||||
  local command=$1
 | 
			
		||||
  local log=$2
 | 
			
		||||
  echo "$command" | sudo tee ./run_group.sh >/dev/null 2>&1
 | 
			
		||||
  echo "$command" | sudo tee ./run_group.sh 
 | 
			
		||||
  echo "$GROUP$log"
 | 
			
		||||
  . ./run_group.sh
 | 
			
		||||
  local status=$?
 | 
			
		||||
@ -119,10 +119,9 @@ fetch_extension() {
 | 
			
		||||
  elif [ "$fetch" = "pecl" ]; then
 | 
			
		||||
    source="pecl"
 | 
			
		||||
    pecl_name=${extension/http/pecl_http}
 | 
			
		||||
    capital_pecl_name=$(echo "$pecl_name" | tr '[:lower:]' '[:upper:]')
 | 
			
		||||
    get -q -n /tmp/"$pecl_name".tgz https://pecl.php.net/get/"$pecl_name"-"$release".tgz https://pecl.php.net/get/"$capital_pecl_name"-"$release".tgz
 | 
			
		||||
    get -q -n /tmp/"$pecl_name".tgz https://pecl.php.net/get/"$pecl_name"-"$release".tgz
 | 
			
		||||
    tar -xzf /tmp/"$pecl_name".tgz -C /tmp
 | 
			
		||||
    cd /tmp/"$pecl_name"-"$release" 2>/dev/null || cd /tmp/"$capital_pecl_name"-"$release" 2>/dev/null || exit
 | 
			
		||||
    cd /tmp/"$pecl_name"-"$release" || exit
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -144,7 +143,7 @@ add_extension_from_source() {
 | 
			
		||||
  sub_dir="$(parse_args "$extension" PATH)"
 | 
			
		||||
  step_log "Setup $slug"
 | 
			
		||||
  (
 | 
			
		||||
    add_devtools phpize >/dev/null 2>&1
 | 
			
		||||
    add_devtools phpize 
 | 
			
		||||
    disable_extension_helper "$extension"
 | 
			
		||||
    fetch_extension "$extension" "$fetch"
 | 
			
		||||
    if ! [ "$(find . -maxdepth 1 -name '*.m4' -exec grep -H 'PHP_NEW_EXTENSION' {} \; | wc -l)" != "0" ]; then
 | 
			
		||||
@ -152,7 +151,7 @@ add_extension_from_source() {
 | 
			
		||||
    else
 | 
			
		||||
      [[ -n "${libraries// }" ]] && run_group "add_libs $libraries" "add libraries"
 | 
			
		||||
      [ "${debug:?}" = "debug" ] && suffix_opts="$suffix_opts --enable-debug"
 | 
			
		||||
      patch_extension "$extension" >/dev/null 2>&1
 | 
			
		||||
      patch_extension "$extension" 
 | 
			
		||||
      run_group "phpize" "phpize" && \
 | 
			
		||||
      run_group "sudo $prefix_opts ./configure $suffix_opts $opts" "configure" && \
 | 
			
		||||
      run_group "sudo $prefix_opts make -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)" "make" && \
 | 
			
		||||
 | 
			
		||||
@ -67,10 +67,10 @@ Function Add-Sqlsrv() {
 | 
			
		||||
      Add-ExtensionFromGithub $extension > $null 2>&1
 | 
			
		||||
    } catch {}
 | 
			
		||||
    if (-not(Test-Extension $extension)) {
 | 
			
		||||
      Add-SqlsrvFromMSGithub $extension >$null 2>&1
 | 
			
		||||
      Add-SqlsrvFromMSGithub $extension 
 | 
			
		||||
    }
 | 
			
		||||
    if (-not(Test-Extension $extension)) {
 | 
			
		||||
      Add-Extension $extension >$null 2>&1
 | 
			
		||||
      Add-Extension $extension 
 | 
			
		||||
    }
 | 
			
		||||
    $status = 'Installed and enabled'
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -77,7 +77,7 @@ Function Add-ZephirParser() {
 | 
			
		||||
      try {
 | 
			
		||||
        Add-ZephirParserFromGitHub $extension
 | 
			
		||||
      } catch {
 | 
			
		||||
        Add-Extension $extension >$null 2>&1
 | 
			
		||||
        Add-Extension $extension 
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    Add-ExtensionLog zephir_parser $status
 | 
			
		||||
 | 
			
		||||
@ -33,7 +33,7 @@ add_zephir_parser() {
 | 
			
		||||
  zp_releases=https://github.com/"$repo"/releases
 | 
			
		||||
  if ! shared_extension zephir_parser; then
 | 
			
		||||
    message='Installed and enabled'
 | 
			
		||||
    add_zephir_parser_helper "$ext" >/dev/null 2>&1
 | 
			
		||||
    add_zephir_parser_helper "$ext" 
 | 
			
		||||
  else
 | 
			
		||||
    message='Enabled'
 | 
			
		||||
    enable_extension zephir_parser extension
 | 
			
		||||
 | 
			
		||||
@ -20,23 +20,23 @@ self_hosted_helper() {
 | 
			
		||||
    sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
 | 
			
		||||
    trap "sudo rm -f /usr/bin/apt-fast 2>/dev/null" exit
 | 
			
		||||
  fi
 | 
			
		||||
  sudo mkdir -p /opt/hostedtoolcache >/dev/null 2>&1 || true
 | 
			
		||||
  sudo mkdir -p /opt/hostedtoolcache  || true
 | 
			
		||||
  install_packages apt-transport-https ca-certificates curl file make jq unzip autoconf automake gcc g++ gnupg
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to fix broken packages.
 | 
			
		||||
fix_broken_packages() {
 | 
			
		||||
  sudo apt --fix-broken install >/dev/null 2>&1
 | 
			
		||||
  sudo apt --fix-broken install 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to install a package
 | 
			
		||||
install_packages() {
 | 
			
		||||
  packages=("$@")
 | 
			
		||||
  if ! [ -e /etc/dpkg/dpkg.cfg.d/force-confnew ]; then
 | 
			
		||||
    echo "force-confnew" | sudo tee /etc/dpkg/dpkg.cfg.d/force-confnew >/dev/null 2>&1
 | 
			
		||||
    echo "force-confnew" | sudo tee /etc/dpkg/dpkg.cfg.d/force-confnew 
 | 
			
		||||
    trap "sudo rm -f /etc/dpkg/dpkg.cfg.d/force-confnew 2>/dev/null" exit
 | 
			
		||||
  fi
 | 
			
		||||
  $apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && fix_broken_packages && $apt_install "${packages[@]}" >/dev/null 2>&1)
 | 
			
		||||
  $apt_install "${packages[@]}"  || (update_lists && fix_broken_packages && $apt_install "${packages[@]}" )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to disable an extension.
 | 
			
		||||
@ -48,10 +48,10 @@ disable_extension_helper() {
 | 
			
		||||
    disable_extension_dependents "$extension"
 | 
			
		||||
  fi
 | 
			
		||||
  sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?\"?$/d" "${ini_file[@]}" "$pecl_file"
 | 
			
		||||
  sudo find "$ini_dir"/.. -name "*-$extension.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
 | 
			
		||||
  sudo find "$ini_dir"/.. -name "*-$extension.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete  || true
 | 
			
		||||
  sudo rm -f /tmp/php"$version"_extensions
 | 
			
		||||
  mkdir -p /tmp/extdisabled/"$version"
 | 
			
		||||
  echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
 | 
			
		||||
  echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to add PDO extension.
 | 
			
		||||
@ -64,7 +64,7 @@ add_pdo_extension() {
 | 
			
		||||
    ext_name=$1
 | 
			
		||||
    if shared_extension pdo; then
 | 
			
		||||
      disable_extension_helper pdo
 | 
			
		||||
      echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" >/dev/null 2>&1
 | 
			
		||||
      echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" 
 | 
			
		||||
    fi
 | 
			
		||||
    if [ "$ext" = "mysql" ]; then
 | 
			
		||||
      enable_extension "mysqlnd" "extension"
 | 
			
		||||
@ -72,15 +72,15 @@ add_pdo_extension() {
 | 
			
		||||
    elif [ "$ext" = "dblib" ]; then
 | 
			
		||||
      ext_name="sybase"
 | 
			
		||||
    elif [ "$ext" = "firebird" ]; then
 | 
			
		||||
      install_packages libfbclient2 >/dev/null 2>&1
 | 
			
		||||
      install_packages libfbclient2 
 | 
			
		||||
      enable_extension "pdo_firebird" "extension"
 | 
			
		||||
      ext_name="interbase"
 | 
			
		||||
    elif [ "$ext" = "sqlite" ]; then
 | 
			
		||||
      ext="sqlite3"
 | 
			
		||||
      ext_name="sqlite3"
 | 
			
		||||
    fi
 | 
			
		||||
    add_extension "$ext_name" "extension" >/dev/null 2>&1
 | 
			
		||||
    add_extension "$pdo_ext" "extension" >/dev/null 2>&1
 | 
			
		||||
    add_extension "$ext_name" "extension" 
 | 
			
		||||
    add_extension "$pdo_ext" "extension" 
 | 
			
		||||
    add_extension_log "$pdo_ext" "Enabled"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
@ -94,7 +94,7 @@ check_package() {
 | 
			
		||||
add_extension_helper() {
 | 
			
		||||
  local extension=$1
 | 
			
		||||
  packages=(php"$version"-"$extension")
 | 
			
		||||
  add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
 | 
			
		||||
  add_ppa ondrej/php  || update_ppa ondrej/php
 | 
			
		||||
  [ "${debug:?}" = "debug" ] && check_package php"$version"-"$extension"-dbgsym && packages+=(php"$version"-"$extension"-dbgsym)
 | 
			
		||||
  (check_package "${packages[0]}" && install_packages "${packages[@]}") || pecl_install "$extension"
 | 
			
		||||
  add_extension_log "$extension" "Installed and enabled"
 | 
			
		||||
@ -108,7 +108,7 @@ add_devtools() {
 | 
			
		||||
    install_packages "php$version-dev"
 | 
			
		||||
  fi
 | 
			
		||||
  switch_version "phpize" "php-config"
 | 
			
		||||
  add_extension xml extension >/dev/null 2>&1
 | 
			
		||||
  add_extension xml extension 
 | 
			
		||||
  add_log "${tick:?}" "$tool" "Added $tool $semver"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -129,11 +129,11 @@ setup_cached_versions() {
 | 
			
		||||
 | 
			
		||||
# Function to add PECL.
 | 
			
		||||
add_pecl() {
 | 
			
		||||
  add_devtools phpize >/dev/null 2>&1
 | 
			
		||||
  add_devtools phpize 
 | 
			
		||||
  if ! command -v pecl >/dev/null; then
 | 
			
		||||
    install_packages php-pear
 | 
			
		||||
  fi
 | 
			
		||||
  configure_pecl >/dev/null 2>&1
 | 
			
		||||
  configure_pecl 
 | 
			
		||||
  pear_version=$(get_tool_version "pecl" "version")
 | 
			
		||||
  add_log "${tick:?}" "PECL" "Added PECL $pear_version"
 | 
			
		||||
}
 | 
			
		||||
@ -167,7 +167,7 @@ get_php_packages() {
 | 
			
		||||
 | 
			
		||||
# Function to install packaged PHP
 | 
			
		||||
add_packaged_php() {
 | 
			
		||||
  add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
 | 
			
		||||
  add_ppa ondrej/php  || update_ppa ondrej/php
 | 
			
		||||
  IFS=' ' read -r -a packages <<<"$(get_php_packages)"
 | 
			
		||||
  install_packages "${packages[@]}"
 | 
			
		||||
}
 | 
			
		||||
@ -191,7 +191,7 @@ add_php() {
 | 
			
		||||
        setup_php_builder
 | 
			
		||||
    else
 | 
			
		||||
      add_packaged_php
 | 
			
		||||
      switch_version >/dev/null 2>&1
 | 
			
		||||
      switch_version 
 | 
			
		||||
      add_pecl
 | 
			
		||||
    fi
 | 
			
		||||
  elif [[ "$version" =~ ${old_versions:?} ]]; then
 | 
			
		||||
@ -204,7 +204,7 @@ add_php() {
 | 
			
		||||
 | 
			
		||||
# Function to ini file for pear and link it to each SAPI.
 | 
			
		||||
link_pecl_file() {
 | 
			
		||||
  echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
 | 
			
		||||
  echo '' | sudo tee "$pecl_file" 
 | 
			
		||||
  for file in "${ini_file[@]}"; do
 | 
			
		||||
    sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d"
 | 
			
		||||
    if [ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ]; then
 | 
			
		||||
@ -237,9 +237,9 @@ add_php_config() {
 | 
			
		||||
  elif [ "$ini" = "development" ]; then
 | 
			
		||||
    echo "${ini_file[@]}" | xargs -n 1 -P 6 sudo cp "$php_lib_dir"/php.ini-development
 | 
			
		||||
  elif [ "$ini" = "none" ]; then
 | 
			
		||||
    echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
 | 
			
		||||
    echo '' | sudo tee "${ini_file[@]}" 
 | 
			
		||||
  fi
 | 
			
		||||
  echo "$ini" | sudo tee "$current_ini" >/dev/null 2>&1
 | 
			
		||||
  echo "$ini" | sudo tee "$current_ini" 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to Setup PHP
 | 
			
		||||
@ -250,13 +250,13 @@ setup_php() {
 | 
			
		||||
  check_pre_installed
 | 
			
		||||
  if [[ -z "$php_config" ]] || [ "$(php_semver | cut -c 1-3)" != "$version" ]; then
 | 
			
		||||
    if [ ! -e "/usr/bin/php$version" ] || [ ! -e "/usr/bin/php-config$version" ]; then
 | 
			
		||||
      add_php >/dev/null 2>&1
 | 
			
		||||
      add_php 
 | 
			
		||||
    else
 | 
			
		||||
      if ! [[ "$version" =~ ${old_versions:?} ]]; then
 | 
			
		||||
        switch_version >/dev/null 2>&1
 | 
			
		||||
        switch_version 
 | 
			
		||||
      fi
 | 
			
		||||
      if [ "${update:?}" = "true" ]; then
 | 
			
		||||
        update_php >/dev/null 2>&1
 | 
			
		||||
        update_php 
 | 
			
		||||
      else
 | 
			
		||||
        status="Switched to"
 | 
			
		||||
      fi
 | 
			
		||||
@ -264,7 +264,7 @@ setup_php() {
 | 
			
		||||
    php_config="$(command -v php-config)"
 | 
			
		||||
  else
 | 
			
		||||
    if [ "$update" = "true" ]; then
 | 
			
		||||
      update_php >/dev/null 2>&1
 | 
			
		||||
      update_php 
 | 
			
		||||
    else
 | 
			
		||||
      status="Found"
 | 
			
		||||
    fi
 | 
			
		||||
@ -284,7 +284,7 @@ setup_php() {
 | 
			
		||||
  link_pecl_file
 | 
			
		||||
  configure_php
 | 
			
		||||
  set_output "php-version" "$semver"
 | 
			
		||||
  sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
 | 
			
		||||
  sudo rm -rf /usr/local/bin/phpunit 
 | 
			
		||||
  sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
 | 
			
		||||
  sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
 | 
			
		||||
  add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version"
 | 
			
		||||
@ -298,8 +298,8 @@ debconf_fix="DEBIAN_FRONTEND=noninteractive"
 | 
			
		||||
apt_install="sudo $debconf_fix apt-fast install -y --no-install-recommends"
 | 
			
		||||
scripts="$src"/scripts
 | 
			
		||||
 | 
			
		||||
add_sudo >/dev/null 2>&1
 | 
			
		||||
link_apt_fast >/dev/null 2>&1
 | 
			
		||||
add_sudo 
 | 
			
		||||
link_apt_fast 
 | 
			
		||||
 | 
			
		||||
. /etc/os-release
 | 
			
		||||
# shellcheck source=.
 | 
			
		||||
 | 
			
		||||
@ -176,7 +176,7 @@ Function Add-ToolsHelper() {
 | 
			
		||||
    $extensions += @('json', 'tokenizer')
 | 
			
		||||
  } elseif($tool -eq "phpDocumentor") {
 | 
			
		||||
    $extensions+=('ctype', 'hash', 'json', 'fileinfo', 'iconv', 'mbstring', 'simplexml', 'xml')
 | 
			
		||||
    Add-Extension fileinfo >$null 2>&1
 | 
			
		||||
    Add-Extension fileinfo 
 | 
			
		||||
    Copy-Item $bin_dir\phpDocumentor.bat -Destination $bin_dir\phpdoc.bat
 | 
			
		||||
  } elseif($tool -eq "phpunit") {
 | 
			
		||||
    $extensions += @('dom', 'json', 'libxml', 'mbstring', 'xml', 'xmlwriter')
 | 
			
		||||
@ -189,7 +189,7 @@ Function Add-ToolsHelper() {
 | 
			
		||||
    Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat
 | 
			
		||||
  }
 | 
			
		||||
  foreach($extension in $extensions) {
 | 
			
		||||
    Add-Extension $extension >$null 2>&1
 | 
			
		||||
    Add-Extension $extension 
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -236,7 +236,7 @@ Function Add-Tool() {
 | 
			
		||||
    $bat_content += "php %BIN_TARGET% %*"
 | 
			
		||||
    Set-Content -Path $bin_dir\$tool.bat -Value $bat_content
 | 
			
		||||
    Add-ToolsHelper $tool
 | 
			
		||||
    Add-ToProfile $current_profile $tool "New-Alias $tool $bin_dir\$tool.bat" >$null 2>&1
 | 
			
		||||
    Add-ToProfile $current_profile $tool "New-Alias $tool $bin_dir\$tool.bat" 
 | 
			
		||||
    $tool_version = Get-ToolVersion $tool $ver_param
 | 
			
		||||
    Add-Log $tick $tool "Added $tool $tool_version"
 | 
			
		||||
  } else {
 | 
			
		||||
@ -276,9 +276,9 @@ Function Add-ComposerToolHelper() {
 | 
			
		||||
      Remove-Item -Path $composer_lock -Force
 | 
			
		||||
    }
 | 
			
		||||
    if((composer global show $prefix$tool $tool_version -a 2>&1 | findstr '^type *: *composer-plugin') -and ($composer_args -ne '')) {
 | 
			
		||||
      composer global config --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1
 | 
			
		||||
      composer global config --no-plugins allow-plugins."$prefix$tool" true 
 | 
			
		||||
    }
 | 
			
		||||
    composer global require $prefix$release $composer_args >$null 2>&1
 | 
			
		||||
    composer global require $prefix$release $composer_args 
 | 
			
		||||
    return composer global show $prefix$tool 2>&1 | findstr '^versions'
 | 
			
		||||
  } else {
 | 
			
		||||
    $release_stream = [System.IO.MemoryStream]::New([System.Text.Encoding]::ASCII.GetBytes($release))
 | 
			
		||||
@ -289,9 +289,9 @@ Function Add-ComposerToolHelper() {
 | 
			
		||||
      New-Item -ItemType Directory -Force -Path $scoped_dir > $null 2>&1
 | 
			
		||||
      Set-Content -Path $scoped_dir\composer.json -Value "{}"
 | 
			
		||||
      if((composer show $prefix$tool $tool_version -d $unix_scoped_dir -a 2>&1 | findstr '^type *: *composer-plugin') -and ($composer_args -ne '')) {
 | 
			
		||||
        composer config -d $unix_scoped_dir --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1
 | 
			
		||||
        composer config -d $unix_scoped_dir --no-plugins allow-plugins."$prefix$tool" true 
 | 
			
		||||
      }
 | 
			
		||||
      composer require $prefix$release -d $unix_scoped_dir $composer_args >$null 2>&1
 | 
			
		||||
      composer require $prefix$release -d $unix_scoped_dir $composer_args 
 | 
			
		||||
    }
 | 
			
		||||
    [System.Environment]::SetEnvironmentVariable(($tool.replace('-', '_') + '_bin'), "$scoped_dir\vendor\bin")
 | 
			
		||||
    Add-Path $scoped_dir\vendor\bin
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@ update_auth_json() {
 | 
			
		||||
 | 
			
		||||
# Function to check if public GitHub token authentication is possible.
 | 
			
		||||
can_access_public_github() {
 | 
			
		||||
  curl --fail -s -H "Authorization: token $1" 'https://api.github.com/' >/dev/null 2>&1
 | 
			
		||||
  curl --fail -s -H "Authorization: token $1" 'https://api.github.com/' 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to setup authentication in composer.
 | 
			
		||||
@ -108,7 +108,7 @@ set_composer_env() {
 | 
			
		||||
  add_env_path "$composer_env"
 | 
			
		||||
  if [ -n "$COMPOSER_ALLOW_PLUGINS" ]; then
 | 
			
		||||
    echo "$COMPOSER_ALLOW_PLUGINS" | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | grep -v '^$' | while IFS= read -r plugin; do
 | 
			
		||||
      composer global config --no-plugins "allow-plugins.$plugin" true >/dev/null 2>&1
 | 
			
		||||
      composer global config --no-plugins "allow-plugins.$plugin" true 
 | 
			
		||||
    done
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
@ -167,7 +167,7 @@ add_tools_helper() {
 | 
			
		||||
    sudo ln -s "$tool_path" "$tool_path_dir"/"${tool%-*}"
 | 
			
		||||
  fi
 | 
			
		||||
  for extension in "${extensions[@]}"; do
 | 
			
		||||
    add_extension "$extension" extension >/dev/null 2>&1
 | 
			
		||||
    add_extension "$extension" extension 
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -218,22 +218,22 @@ add_composer_tool_helper() {
 | 
			
		||||
  enable_extensions curl mbstring openssl
 | 
			
		||||
  tool_version=${release##*:}; [ "$tool_version" = "$tool" ] && tool_version="*"
 | 
			
		||||
  if [ "$scope" = "global" ]; then
 | 
			
		||||
    sudo rm -f "$composer_lock" >/dev/null 2>&1 || true
 | 
			
		||||
    sudo rm -f "$composer_lock"  || true
 | 
			
		||||
    if composer global show "$prefix$tool" "$tool_version" -a 2>&1 | grep -qE '^type *: *composer-plugin' && [ -n "$composer_args" ]; then
 | 
			
		||||
      composer global config --no-plugins allow-plugins."$prefix$tool" true >/dev/null 2>&1
 | 
			
		||||
      composer global config --no-plugins allow-plugins."$prefix$tool" true 
 | 
			
		||||
    fi
 | 
			
		||||
    composer global require "$prefix$release" "$composer_args" >/dev/null 2>&1
 | 
			
		||||
    composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
 | 
			
		||||
    composer global require "$prefix$release" "$composer_args" 
 | 
			
		||||
    composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log 
 | 
			
		||||
  else
 | 
			
		||||
    scoped_dir="$composer_bin/_tools/$tool-$(echo -n "$release" | shasum -a 256 | cut -d ' ' -f 1)"
 | 
			
		||||
    if ! [ -d "$scoped_dir" ]; then
 | 
			
		||||
      mkdir -p "$scoped_dir"
 | 
			
		||||
      echo '{}' | tee "$scoped_dir/composer.json" >/dev/null
 | 
			
		||||
      if composer show "$prefix$tool" "$tool_version" -d "$scoped_dir" -a 2>&1 | grep -qE '^type *: *composer-plugin' && [ -n "$composer_args" ]; then
 | 
			
		||||
        composer config -d "$scoped_dir" --no-plugins allow-plugins."$prefix$tool" true >/dev/null 2>&1
 | 
			
		||||
        composer config -d "$scoped_dir" --no-plugins allow-plugins."$prefix$tool" true 
 | 
			
		||||
      fi
 | 
			
		||||
      composer require "$prefix$release" -d "$scoped_dir" "$composer_args" >/dev/null 2>&1
 | 
			
		||||
      composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
 | 
			
		||||
      composer require "$prefix$release" -d "$scoped_dir" "$composer_args" 
 | 
			
		||||
      composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log 
 | 
			
		||||
    fi
 | 
			
		||||
    add_path "$scoped_dir"/vendor/bin
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
@ -6,14 +6,14 @@ Function Add-Blackfire() {
 | 
			
		||||
  }
 | 
			
		||||
  $cli_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).cli
 | 
			
		||||
  $url = "https://packages.blackfire.io/binaries/blackfire/${cli_version}/blackfire-windows_${arch_name}.zip"
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
 | 
			
		||||
  Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force >$null 2>&1
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\blackfire.zip 
 | 
			
		||||
  Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force 
 | 
			
		||||
  Add-ToProfile $current_profile 'blackfire' "New-Alias blackfire $bin_dir\blackfire.exe"
 | 
			
		||||
  if ((Test-Path env:BLACKFIRE_SERVER_ID) -and (Test-Path env:BLACKFIRE_SERVER_TOKEN)) {
 | 
			
		||||
    blackfire agent:config --server-id=$env:BLACKFIRE_SERVER_ID --server-token=$env:BLACKFIRE_SERVER_TOKEN >$null 2>&1
 | 
			
		||||
    blackfire agent:config --server-id=$env:BLACKFIRE_SERVER_ID --server-token=$env:BLACKFIRE_SERVER_TOKEN 
 | 
			
		||||
  }
 | 
			
		||||
  if ((Test-Path env:BLACKFIRE_CLIENT_ID) -and (Test-Path env:BLACKFIRE_CLIENT_TOKEN)) {
 | 
			
		||||
    blackfire client:config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem >$null 2>&1
 | 
			
		||||
    blackfire client:config --client-id=$env:BLACKFIRE_CLIENT_ID --client-token=$env:BLACKFIRE_CLIENT_TOKEN --ca-cert=$php_dir\ssl\cacert.pem 
 | 
			
		||||
  }
 | 
			
		||||
  Add-Log $tick "blackfire" "Added blackfire $cli_version"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -32,9 +32,9 @@ blackfire_config() {
 | 
			
		||||
# Function to add blackfire cli.
 | 
			
		||||
add_blackfire() {
 | 
			
		||||
  os="$(uname -s)"
 | 
			
		||||
  [ "$os" = "Linux" ] && add_blackfire_linux >/dev/null 2>&1
 | 
			
		||||
  [ "$os" = "Darwin" ] && add_blackfire_darwin >/dev/null 2>&1
 | 
			
		||||
  blackfire_config >/dev/null 2>&1
 | 
			
		||||
  [ "$os" = "Linux" ] && add_blackfire_linux 
 | 
			
		||||
  [ "$os" = "Darwin" ] && add_blackfire_darwin 
 | 
			
		||||
  blackfire_config 
 | 
			
		||||
  tool_version=$(get_tool_version "blackfire" "version")
 | 
			
		||||
  add_log "${tick:?}" "blackfire" "Added blackfire $tool_version"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -14,11 +14,11 @@ add_brew_tap() {
 | 
			
		||||
  tap=$1
 | 
			
		||||
  if ! [ -d "$tap_dir/$tap" ]; then
 | 
			
		||||
    if [ "${runner:?}" = "self-hosted" ]; then
 | 
			
		||||
      brew tap "$tap" >/dev/null 2>&1
 | 
			
		||||
      brew tap "$tap" 
 | 
			
		||||
    else
 | 
			
		||||
      fetch_brew_tap "$tap" >/dev/null 2>&1
 | 
			
		||||
      fetch_brew_tap "$tap" 
 | 
			
		||||
      if ! [ -d "$tap_dir/$tap" ]; then
 | 
			
		||||
        brew tap "$tap" >/dev/null 2>&1
 | 
			
		||||
        brew tap "$tap" 
 | 
			
		||||
      fi
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
@ -49,7 +49,7 @@ add_brew() {
 | 
			
		||||
  brew_prefix="$(get_brew_prefix)"
 | 
			
		||||
  if ! [ -d "$brew_prefix"/bin ]; then
 | 
			
		||||
    step_log "Setup Brew"
 | 
			
		||||
    get -s "" "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/main/install.sh" | bash -s >/dev/null 2>&1
 | 
			
		||||
    get -s "" "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/main/install.sh" | bash -s 
 | 
			
		||||
    add_log "${tick:?}" "Brew" "Installed Homebrew"
 | 
			
		||||
  fi
 | 
			
		||||
  add_brew_bins_to_path "$brew_prefix"
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
Function Add-Msys2() {
 | 
			
		||||
  $msys_location = 'C:\msys64'
 | 
			
		||||
  if (-not(Test-Path $msys_location)) {
 | 
			
		||||
    choco install msys2 -y >$null 2>&1
 | 
			
		||||
    choco install msys2 -y 
 | 
			
		||||
    $msys_location = 'C:\tools\msys64'
 | 
			
		||||
  }
 | 
			
		||||
  return $msys_location
 | 
			
		||||
@ -15,7 +15,7 @@ Function Add-GrpcPhpPlugin() {
 | 
			
		||||
  } else {
 | 
			
		||||
    $grpc_package = 'mingw-w64-x86_64-grpc'
 | 
			
		||||
  }
 | 
			
		||||
  $logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm $grpc_package" >$null 2>&1
 | 
			
		||||
  $logs = . $msys_location\usr\bin\bash -l -c "pacman -S --noconfirm $grpc_package" 
 | 
			
		||||
  $grpc_version = Get-ToolVersion 'Write-Output' "$logs"
 | 
			
		||||
  Add-Path $msys_location\mingw64\bin
 | 
			
		||||
  Set-Output grpc_php_plugin_path "$msys_location\mingw64\bin\grpc_php_plugin.exe"
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ add_grpc_php_plugin_brew() {
 | 
			
		||||
  configure_brew
 | 
			
		||||
  [ -e /usr/local/bin/protoc ] && sudo mv /usr/local/bin/protoc /tmp/protoc && sudo mv /usr/local/include/google /tmp
 | 
			
		||||
  brew install grpc
 | 
			
		||||
  brew link --force --overwrite grpc >/dev/null 2>&1
 | 
			
		||||
  brew link --force --overwrite grpc 
 | 
			
		||||
  [ -e /tmp/protoc ] && sudo mv /tmp/protoc /usr/local/bin/protoc && sudo mv /tmp/google /usr/local/include/
 | 
			
		||||
  grpc_tag="v$(brew info grpc | grep "grpc:" | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+")"
 | 
			
		||||
  license_path="$(brew --prefix grpc)/LICENSE"
 | 
			
		||||
@ -50,9 +50,9 @@ add_grpc_php_plugin() {
 | 
			
		||||
  grpc_tag=$1
 | 
			
		||||
  license_path=""
 | 
			
		||||
  if [ "$grpc_tag" = "latest" ]; then
 | 
			
		||||
    add_grpc_php_plugin_brew >/dev/null 2>&1
 | 
			
		||||
    add_grpc_php_plugin_brew 
 | 
			
		||||
  else
 | 
			
		||||
    add_grpc_php_plugin_compile >/dev/null 2>&1
 | 
			
		||||
    add_grpc_php_plugin_compile 
 | 
			
		||||
  fi
 | 
			
		||||
  set_output grpc_php_plugin_path "$(command -v grpc_php_plugin)"
 | 
			
		||||
  add_log "${tick:?}" "grpc_php_plugin" "Added grpc_php_plugin ${grpc_tag:1}"
 | 
			
		||||
 | 
			
		||||
@ -28,8 +28,8 @@ Function Add-Mago() {
 | 
			
		||||
    $arch_name = 'i686'
 | 
			
		||||
  }
 | 
			
		||||
  $url = "https://github.com/carthage-software/mago/releases/download/$mago_tag/mago-$mago_tag-$arch_name-pc-windows-msvc.zip"
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\mago.zip >$null 2>&1
 | 
			
		||||
  Expand-Archive -Path $bin_dir\mago.zip -DestinationPath $bin_dir\mago -Force >$null 2>&1
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\mago.zip 
 | 
			
		||||
  Expand-Archive -Path $bin_dir\mago.zip -DestinationPath $bin_dir\mago -Force 
 | 
			
		||||
  Move-Item -Path $bin_dir\mago\mago-$mago_tag-$arch_name-pc-windows-msvc\mago.exe -Destination $bin_dir\mago.exe -Force
 | 
			
		||||
  Add-ToProfile $current_profile 'mago' "New-Alias mago $bin_dir\mago.exe"
 | 
			
		||||
  Add-Log $tick "mago" "Added mago $mago_tag"
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,6 @@ add_mago() {
 | 
			
		||||
    sudo tar -xzf /tmp/mago.tar.gz -C /tmp/
 | 
			
		||||
    sudo mv /tmp/mago-$mago_tag-$arch-$platform/mago /usr/local/bin/mago
 | 
			
		||||
    sudo chmod +x /usr/local/bin/mago
 | 
			
		||||
  ) >/dev/null 2>&1
 | 
			
		||||
  ) 
 | 
			
		||||
  add_log "${tick:?}" "mago" "Added mago $mago_tag"
 | 
			
		||||
}
 | 
			
		||||
@ -31,7 +31,7 @@ set_base_version() {
 | 
			
		||||
  else
 | 
			
		||||
    set_base_version_codename
 | 
			
		||||
    set_base_version_id
 | 
			
		||||
    printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release >/dev/null 2>&1
 | 
			
		||||
    printf "ID=%s\nVERSION_ID=%s\nVERSION_CODENAME=%s\n" "$ID" "$VERSION_ID" "$VERSION_CODENAME" | tee /tmp/os-release 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -50,89 +50,17 @@ update_lists_helper() {
 | 
			
		||||
update_lists() {
 | 
			
		||||
  local ppa=${1:-}
 | 
			
		||||
  local ppa_search=${2:-}
 | 
			
		||||
  local status_token=${3:-$ppa_search}
 | 
			
		||||
  local list=
 | 
			
		||||
  local status_file=/tmp/os_lists
 | 
			
		||||
  local hash_cmd
 | 
			
		||||
  status_file=/tmp/os_lists
 | 
			
		||||
  if [[ -n "$ppa" && -n "$ppa_search" ]]; then
 | 
			
		||||
    if [ -f "$ppa_search" ]; then
 | 
			
		||||
      list="$ppa_search"
 | 
			
		||||
    else
 | 
			
		||||
      list="$(grep -Elr "$ppa_search" "$list_dir" 2>/dev/null | head -n 1)"
 | 
			
		||||
    fi
 | 
			
		||||
    hash_cmd="$(command -v sha256sum || command -v shasum)"
 | 
			
		||||
    if [ -n "$status_token" ] && [ -n "$hash_cmd" ]; then
 | 
			
		||||
      status_file=/tmp/os_lists_"$(echo -n "$status_token" | $hash_cmd | awk '{print $1}')"
 | 
			
		||||
    elif [ -n "$status_token" ]; then
 | 
			
		||||
      status_file=/tmp/os_lists_$(date +%s)
 | 
			
		||||
    fi
 | 
			
		||||
  elif [ -e "$list_file" ] && grep -Eq '^deb |^Types: *deb' "$list_file"; then
 | 
			
		||||
    list="$list_dir"/"$(basename "$(grep -lr "$ppa_search" "$list_dir")")"
 | 
			
		||||
    status_file=/tmp/"$(echo -n "$ppa_search" | shasum -a 256 | cut -d ' ' -f 1)"
 | 
			
		||||
  elif [ -e "$list_file" ] && grep -Eq '^deb |^Types deb' "$list_file"; then
 | 
			
		||||
    list="$list_file"
 | 
			
		||||
  fi
 | 
			
		||||
  if [ ! -e "$status_file" ]; then
 | 
			
		||||
    update_lists_helper "$list" >/dev/null 2>&1
 | 
			
		||||
    echo '' | tee "$status_file" >/dev/null 2>&1
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Determine whether deb822 sources are the default on this system.
 | 
			
		||||
get_sources_format() {
 | 
			
		||||
  if [ -n "$sources_format" ]; then
 | 
			
		||||
    echo "$sources_format"
 | 
			
		||||
    return
 | 
			
		||||
  fi
 | 
			
		||||
  sources_format=deb
 | 
			
		||||
  if [ -e "$list_dir"/ubuntu.sources ] || [ -e "$list_dir"/debian.sources ]; then
 | 
			
		||||
    sources_format="deb822"
 | 
			
		||||
  elif ! [[ "$ID" =~ ubuntu|debian ]]; then
 | 
			
		||||
    find "$list_dir" -type f -name '*.sources' | grep -q . && sources_format="deb822"
 | 
			
		||||
  fi
 | 
			
		||||
  echo "$sources_format"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
escape_regex() {
 | 
			
		||||
  printf '%s' "$1" | sed -e 's/[][\.^$*+?{}()|\/]/\\&/g'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
merge_components() {
 | 
			
		||||
  local out=() t
 | 
			
		||||
  for t in $1 $2; do [[ $t && " ${out[*]} " != *" $t "* ]] && out+=("$t"); done
 | 
			
		||||
  printf '%s\n' "${out[*]}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
merge_components_from_file() {
 | 
			
		||||
  local path=$1
 | 
			
		||||
  local incoming=$2
 | 
			
		||||
  local current=
 | 
			
		||||
  if [ -n "$path" ] && [ -e "$path" ]; then
 | 
			
		||||
    current="$(grep -E '^Components:' "$path" | head -n 1 | cut -d ':' -f 2 | xargs)"
 | 
			
		||||
  fi
 | 
			
		||||
  local merged
 | 
			
		||||
  merged="$(merge_components "$current" "$incoming")"
 | 
			
		||||
  if [ -z "$merged" ] || [ "$merged" = "$current" ]; then
 | 
			
		||||
    return 1
 | 
			
		||||
  fi
 | 
			
		||||
  printf '%s\n' "$merged"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to get repo patterns based on format.
 | 
			
		||||
get_repo_patterns() {
 | 
			
		||||
  local list_format=$1
 | 
			
		||||
  local ppa_url=$2
 | 
			
		||||
  local package_dist=$3
 | 
			
		||||
  local branches=$4
 | 
			
		||||
  local escaped_url
 | 
			
		||||
  local escaped_dist
 | 
			
		||||
  local escaped_branches
 | 
			
		||||
  escaped_url="$(escape_regex "$ppa_url")"
 | 
			
		||||
  escaped_dist="$(escape_regex "$package_dist")"
 | 
			
		||||
  escaped_branches="$(escape_regex "$branches")"
 | 
			
		||||
  local deb_pattern="^deb .*${escaped_url} ${escaped_dist} .*${escaped_branches}$"
 | 
			
		||||
  local deb822_pattern="^URIs: ${escaped_url}$"
 | 
			
		||||
  if [ "$list_format" = "deb822" ]; then
 | 
			
		||||
    printf '%s|%s\n' "$deb822_pattern" "$deb_pattern"
 | 
			
		||||
  else
 | 
			
		||||
    printf '%s|%s\n' "$deb_pattern" "$deb822_pattern"
 | 
			
		||||
    update_lists_helper "$list" 
 | 
			
		||||
    echo '' | tee "$status_file" 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -172,82 +100,23 @@ add_key() {
 | 
			
		||||
  key_urls+=("$ppa_sp/keys/$ppa.gpg")
 | 
			
		||||
  [ ! -e "$key_source" ] && get -q -n "$key_file" "${key_urls[@]}"
 | 
			
		||||
  if [[ "$(file "$key_file")" =~ .*('Public-Key (old)'|'Secret-Key') ]]; then
 | 
			
		||||
    sudo gpg --batch --yes --dearmor "$key_file" >/dev/null 2>&1 && sudo mv "$key_file".gpg "$key_file"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
handle_existing_list() {
 | 
			
		||||
  local ppa=$1
 | 
			
		||||
  local list_format=$2
 | 
			
		||||
  branches=$3
 | 
			
		||||
  [[ "$list_format" = "deb822"  && -n "$check_lists_file" ]] || {
 | 
			
		||||
    echo "Repository $ppa ($branches) already exists"
 | 
			
		||||
    return 1
 | 
			
		||||
  }
 | 
			
		||||
  [[ "$check_lists_file" = *.list ]] && {
 | 
			
		||||
    sudo rm -f "$check_lists_file"
 | 
			
		||||
    return 0
 | 
			
		||||
  }
 | 
			
		||||
  local merged_components
 | 
			
		||||
  merged_components="$(merge_components_from_file "$check_lists_file" "$branches")" && {
 | 
			
		||||
    sudo rm -f "$check_lists_file"
 | 
			
		||||
    branches="$merged_components"
 | 
			
		||||
    return 0
 | 
			
		||||
  }
 | 
			
		||||
  echo "Repository $ppa ($branches) already exists"
 | 
			
		||||
  return 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to write a list file.
 | 
			
		||||
write_list() {
 | 
			
		||||
  local type=$1
 | 
			
		||||
  local ppa=$2
 | 
			
		||||
  local url=$3
 | 
			
		||||
  local suite=$4
 | 
			
		||||
  local components=$5
 | 
			
		||||
  local key_file=$6
 | 
			
		||||
  local list_basename="${ppa%%/*}"-"$ID"-"${ppa#*/}"-"$suite"
 | 
			
		||||
  local arch
 | 
			
		||||
  arch="$(dpkg --print-architecture)"
 | 
			
		||||
  sudo rm -f "$list_dir"/"${ppa/\//-}".list "$list_dir"/"${ppa/\//-}".sources "$list_dir"/"$list_basename".list "$list_dir"/"$list_basename".sources || true
 | 
			
		||||
  if [ "$type" = "deb822" ]; then
 | 
			
		||||
    cat <<EOF | sudo tee "$list_dir"/"$list_basename".sources >/dev/null
 | 
			
		||||
Types: deb
 | 
			
		||||
URIs: $url
 | 
			
		||||
Suites: $suite
 | 
			
		||||
Components: $components
 | 
			
		||||
Architectures: $arch
 | 
			
		||||
Signed-By: $key_file
 | 
			
		||||
EOF
 | 
			
		||||
  else
 | 
			
		||||
    echo "deb [arch=$arch signed-by=$key_file] $url $suite $components" | sudo tee "$list_dir"/"$list_basename".list >/dev/null 2>&1
 | 
			
		||||
    sudo gpg --batch --yes --dearmor "$key_file"  && sudo mv "$key_file".gpg "$key_file"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to check if a PPA and its lists exist
 | 
			
		||||
check_lists() {
 | 
			
		||||
  local ppa=$1
 | 
			
		||||
  local primary=${2:-}
 | 
			
		||||
  local secondary=${3:-}
 | 
			
		||||
  local status_token=${4:-$primary}
 | 
			
		||||
  local match_file=
 | 
			
		||||
  check_lists_file=
 | 
			
		||||
  if [ -n "$primary" ]; then
 | 
			
		||||
    match_file=$(grep -Elr "$primary" "$list_dir" 2>/dev/null | head -n 1)
 | 
			
		||||
  fi
 | 
			
		||||
  if [ -z "$match_file" ] && [ -n "$secondary" ]; then
 | 
			
		||||
    match_file=$(grep -Elr "$secondary" "$list_dir" 2>/dev/null | head -n 1)
 | 
			
		||||
  fi
 | 
			
		||||
  if [ -n "$match_file" ]; then
 | 
			
		||||
    local list_count
 | 
			
		||||
  ppa=$1
 | 
			
		||||
  ppa_search=$2
 | 
			
		||||
  if grep -Eqr "$ppa_search" "$list_dir"; then
 | 
			
		||||
    list_count="$(sudo find /var/lib/apt/lists -type f -name "*${ppa/\//_}*" | wc -l)"
 | 
			
		||||
    if [ "$list_count" = "0" ]; then
 | 
			
		||||
      update_lists "$ppa" "$match_file" "$status_token"
 | 
			
		||||
      update_lists "$ppa" "$ppa_search"
 | 
			
		||||
    fi
 | 
			
		||||
    check_lists_file="$match_file"
 | 
			
		||||
    return 0
 | 
			
		||||
    return 0;
 | 
			
		||||
  else
 | 
			
		||||
    return 1;
 | 
			
		||||
  fi
 | 
			
		||||
  return 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to add a sources list.
 | 
			
		||||
@ -257,24 +126,19 @@ add_list() {
 | 
			
		||||
  key_source=${3:-"$ppa_url"}
 | 
			
		||||
  package_dist=${4:-"$VERSION_CODENAME"}
 | 
			
		||||
  branches=${5:-main}
 | 
			
		||||
  local list_format
 | 
			
		||||
  list_format="$(get_sources_format)"
 | 
			
		||||
  local status_token
 | 
			
		||||
  status_token="${ppa_url}|${package_dist}|${branches}"
 | 
			
		||||
  local list_path=
 | 
			
		||||
  IFS='|' read -r primary_pattern secondary_pattern <<< "$(get_repo_patterns "$list_format" "$ppa_url" "$package_dist" "$branches")"
 | 
			
		||||
  if check_lists "$ppa" "$primary_pattern" "$secondary_pattern" "$status_token"; then
 | 
			
		||||
    list_path="$check_lists_file"
 | 
			
		||||
    handle_existing_list "$ppa" "$list_format" "$branches" || return 1;
 | 
			
		||||
    check_lists_file=
 | 
			
		||||
    IFS='|' read -r primary_pattern secondary_pattern <<< "$(get_repo_patterns "$list_format" "$ppa_url" "$package_dist" "$branches")"
 | 
			
		||||
    status_token="${ppa_url}|${package_dist}|${branches}"
 | 
			
		||||
  ppa_search="deb .*$ppa_url $package_dist .*$branches$"
 | 
			
		||||
  if check_lists "$ppa" "$ppa_search"; then
 | 
			
		||||
    echo "Repository $ppa already exists";
 | 
			
		||||
    return 1;
 | 
			
		||||
  else
 | 
			
		||||
    arch=$(dpkg --print-architecture)
 | 
			
		||||
    [ -e "$key_source" ] && key_file=$key_source || key_file="$key_dir"/"${ppa/\//-}"-keyring.gpg
 | 
			
		||||
    add_key "$ppa" "$ppa_url" "$package_dist" "$key_source" "$key_file"
 | 
			
		||||
    sudo rm -rf "$list_dir"/"${ppa/\//-}".list || true
 | 
			
		||||
    echo "deb [arch=$arch signed-by=$key_file] $ppa_url $package_dist $branches" | sudo tee -a "$list_dir"/"${ppa%%/*}"-"$ID"-"${ppa#*/}"-"$package_dist".list 
 | 
			
		||||
    update_lists "$ppa" "$ppa_search"
 | 
			
		||||
    . /etc/os-release
 | 
			
		||||
  fi
 | 
			
		||||
  [ -e "$key_source" ] && key_file=$key_source || key_file="$key_dir"/"${ppa/\//-}"-keyring.gpg
 | 
			
		||||
  add_key "$ppa" "$ppa_url" "$package_dist" "$key_source" "$key_file"
 | 
			
		||||
  write_list "$list_format" "$ppa" "$ppa_url" "$package_dist" "$branches" "$key_file"
 | 
			
		||||
  update_lists "$ppa" "$primary_pattern" "$status_token"
 | 
			
		||||
  . /etc/os-release
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -284,12 +148,8 @@ check_ppa() {
 | 
			
		||||
  ppa_url=${2:-"$lpc_ppa/$ppa/ubuntu"}
 | 
			
		||||
  package_dist=${3:-"$VERSION_CODENAME"}
 | 
			
		||||
  branches=${4:-main}
 | 
			
		||||
  local list_format
 | 
			
		||||
  list_format="$(get_sources_format)"
 | 
			
		||||
  IFS='|' read -r primary_pattern secondary_pattern <<< "$(get_repo_patterns "$list_format" "$ppa_url" "$package_dist" "$branches")"
 | 
			
		||||
  local status_token
 | 
			
		||||
  status_token="${ppa_url}|${package_dist}|${branches}"
 | 
			
		||||
  if check_lists "$ppa" "$primary_pattern" "$secondary_pattern" "$status_token"; then
 | 
			
		||||
  ppa_search="deb .*$ppa_url $package_dist .*$branches$"
 | 
			
		||||
  if check_lists "$ppa" "$ppa_search"; then
 | 
			
		||||
    return 0;
 | 
			
		||||
  else
 | 
			
		||||
    return 1;
 | 
			
		||||
@ -303,7 +163,7 @@ remove_list() {
 | 
			
		||||
  for ppa_url in "${ppa_urls[@]}"; do
 | 
			
		||||
    grep -lr "$ppa_url" "$list_dir" | xargs -n1 sudo rm -f
 | 
			
		||||
  done
 | 
			
		||||
  sudo rm -f "$key_dir"/"${ppa/\//-}"-keyring /tmp/os_lists* || true
 | 
			
		||||
  sudo rm -f "$key_dir"/"${ppa/\//-}"-keyring || true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to check if ubuntu ppa is up
 | 
			
		||||
@ -353,23 +213,12 @@ update_ppa() {
 | 
			
		||||
  ppa_url=${2:-"$lpc_ppa/$ppa/ubuntu"}
 | 
			
		||||
  package_dist=${4:-"$VERSION_CODENAME"}
 | 
			
		||||
  branches=${5:-main}
 | 
			
		||||
  local list_format
 | 
			
		||||
  list_format="$(get_sources_format)"
 | 
			
		||||
  IFS='|' read -r primary_pattern secondary_pattern <<< "$(get_repo_patterns "$list_format" "$ppa_url" "$package_dist" "$branches")"
 | 
			
		||||
  local list_path
 | 
			
		||||
  list_path="$(grep -Elr "$primary_pattern" "$list_dir" 2>/dev/null | head -n 1)"
 | 
			
		||||
  if [ -z "$list_path" ] && [ -n "$secondary_pattern" ]; then
 | 
			
		||||
    list_path="$(grep -Elr "$secondary_pattern" "$list_dir" 2>/dev/null | head -n 1)"
 | 
			
		||||
  fi
 | 
			
		||||
  local status_token
 | 
			
		||||
  status_token="${ppa_url}|${package_dist}|${branches}"
 | 
			
		||||
  update_lists "$ppa" "${list_path:-$primary_pattern}" "$status_token"
 | 
			
		||||
  ppa_search="deb .*$ppa_url $package_dist .*$branches"
 | 
			
		||||
  update_lists "$ppa" "$ppa_search"
 | 
			
		||||
  . /etc/os-release
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Variables
 | 
			
		||||
sources_format=
 | 
			
		||||
check_lists_file=
 | 
			
		||||
list_dir='/etc/apt/sources.list.d'
 | 
			
		||||
list_file="/etc/apt/sources.list.d/$ID.sources"
 | 
			
		||||
[ -e "$list_file" ] || list_file='/etc/apt/sources.list'
 | 
			
		||||
 | 
			
		||||
@ -29,8 +29,8 @@ Function Add-Protoc() {
 | 
			
		||||
    $arch_num = '32'
 | 
			
		||||
  }
 | 
			
		||||
  $url = "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-$($protobuf_tag -replace 'v', '')-win$arch_num.zip"
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\protoc.zip >$null 2>&1
 | 
			
		||||
  Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force >$null 2>&1
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\protoc.zip 
 | 
			
		||||
  Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force 
 | 
			
		||||
  Move-Item -Path $bin_dir\protoc\bin\protoc.exe -Destination $bin_dir\protoc.exe
 | 
			
		||||
  Add-ToProfile $current_profile 'protoc' "New-Alias protoc $bin_dir\protoc.exe"
 | 
			
		||||
  Add-Log $tick "protoc" "Added protoc $($protobuf_tag -replace 'v', '')"
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@ add_protoc() {
 | 
			
		||||
    get -q -n /tmp/protobuf.zip "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-${protobuf_tag:1}-$platform-$arch.zip"
 | 
			
		||||
    sudo unzip /tmp/protobuf.zip -d /usr/local/
 | 
			
		||||
    sudo chmod -R 777 /usr/local/bin/protoc /usr/local/include/google
 | 
			
		||||
  ) >/dev/null 2>&1
 | 
			
		||||
  ) 
 | 
			
		||||
  add_log "${tick:?}" "protoc" "Added protoc ${protobuf_tag:1}"
 | 
			
		||||
  printf "$GROUP\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "protoc" "Click to read the protoc related license information"
 | 
			
		||||
  curl "${curl_opts[@]:?}" https://raw.githubusercontent.com/protocolbuffers/protobuf/main/LICENSE
 | 
			
		||||
 | 
			
		||||
@ -1,32 +1,18 @@
 | 
			
		||||
Function Add-Symfony() {
 | 
			
		||||
  param(
 | 
			
		||||
    [Parameter(Mandatory = $true, Position = 0, HelpMessage = 'Symfony version to be installed')]
 | 
			
		||||
    [string] $protobuf_tag
 | 
			
		||||
  )
 | 
			
		||||
  $protobuf_tag = $protobuf_tag.replace('v', '')
 | 
			
		||||
  if($protobuf_tag -ne 'latest' -and $protobuf_tag -notmatch '^\d+(\.\d+)*$') {
 | 
			
		||||
    Add-Log $cross "symfony-cli" "Invalid symfony version: $protobuf_tag"
 | 
			
		||||
  $arch_name ='amd64'
 | 
			
		||||
  if(-not([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
 | 
			
		||||
    $arch_name = '386'
 | 
			
		||||
  }
 | 
			
		||||
  $url = "https://github.com/symfony-cli/symfony-cli/releases/latest/download/symfony-cli_windows_${arch_name}.zip"
 | 
			
		||||
  Get-File -Url $url -OutFile $bin_dir\symfony.zip 
 | 
			
		||||
  Expand-Archive -Path $bin_dir\symfony.zip -DestinationPath $bin_dir -Force 
 | 
			
		||||
  if(Test-Path $bin_dir\symfony.exe) {
 | 
			
		||||
    Copy-Item -Path $bin_dir\symfony.exe -Destination $bin_dir\symfony-cli.exe > $null 2>&1
 | 
			
		||||
    Add-ToProfile $current_profile 'symfony' "New-Alias symfony $bin_dir\symfony.exe"
 | 
			
		||||
    Add-ToProfile $current_profile 'symfony_cli' "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
 | 
			
		||||
    $tool_version = Get-ToolVersion symfony "-V"
 | 
			
		||||
    Add-Log $tick "symfony-cli" "Added symfony-cli $tool_version"
 | 
			
		||||
  } else {
 | 
			
		||||
    $arch_name = 'amd64'
 | 
			
		||||
    if (-not ([Environment]::Is64BitOperatingSystem) -or $version -lt '7.0') {
 | 
			
		||||
      $arch_name = '386'
 | 
			
		||||
    }
 | 
			
		||||
    $symfony_releases = "https://github.com/symfony-cli/symfony-cli/releases"
 | 
			
		||||
    if ($protobuf_tag -eq 'latest') {
 | 
			
		||||
      $url = "$symfony_releases/latest/download/symfony-cli_windows_${arch_name}.zip"
 | 
			
		||||
    } else {
 | 
			
		||||
      $url = "$symfony_releases/download/v$protobuf_tag/symfony-cli_windows_${arch_name}.zip"
 | 
			
		||||
    }
 | 
			
		||||
    Get-File -Url $url -OutFile $bin_dir\symfony.zip > $null 2>&1
 | 
			
		||||
    Expand-Archive -Path $bin_dir\symfony.zip -DestinationPath $bin_dir -Force > $null 2>&1
 | 
			
		||||
    if (Test-Path $bin_dir\symfony.exe) {
 | 
			
		||||
      Copy-Item -Path $bin_dir\symfony.exe -Destination $bin_dir\symfony-cli.exe > $null 2>&1
 | 
			
		||||
      Add-ToProfile $current_profile 'symfony' "New-Alias symfony $bin_dir\symfony.exe"
 | 
			
		||||
      Add-ToProfile $current_profile 'symfony_cli' "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
 | 
			
		||||
      $tool_version = Get-ToolVersion symfony "-V"
 | 
			
		||||
      Add-Log $tick "symfony-cli" "Added symfony-cli $tool_version"
 | 
			
		||||
    } else {
 | 
			
		||||
      Add-Log $cross "symfony-cli" "Could not setup symfony-cli"
 | 
			
		||||
    }
 | 
			
		||||
    Add-Log $cross "symfony-cli" "Could not setup symfony-cli"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,44 +1,41 @@
 | 
			
		||||
add_symfony_with_brew() {
 | 
			
		||||
  add_brew_tap symfony-cli/homebrew-tap
 | 
			
		||||
  brew install symfony-cli/tap/symfony-cli
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_symfony_artifact_url() {
 | 
			
		||||
  local symfony_tag=$1
 | 
			
		||||
  local os
 | 
			
		||||
  local arch
 | 
			
		||||
  os="$(uname -s | tr '[:upper:]' '[:lower:]')"
 | 
			
		||||
  arch="$(uname -m)"
 | 
			
		||||
  case "$arch" in
 | 
			
		||||
    arm|armv6*|armv7*) arch="armv6" ;;
 | 
			
		||||
    aarch64*|armv8*|arm64) arch="arm64" ;;
 | 
			
		||||
    i[36]86) arch="386" ;;
 | 
			
		||||
    x86_64|amd64) arch="amd64" ;;
 | 
			
		||||
  esac
 | 
			
		||||
  [ "$os" = "darwin" ] && arch="all"
 | 
			
		||||
  symfony_releases="https://github.com/symfony-cli/symfony-cli/releases"
 | 
			
		||||
  if [ "$symfony_tag" = "latest" ]; then
 | 
			
		||||
    echo "$symfony_releases/latest/download/symfony-cli_${os}_${arch}.tar.gz"
 | 
			
		||||
  else
 | 
			
		||||
    echo "$symfony_releases/download/v$symfony_tag/symfony-cli_${os}_${arch}.tar.gz"
 | 
			
		||||
  fi
 | 
			
		||||
    arch=$(dpkg --print-architecture)
 | 
			
		||||
    url=$(get -s -n "" https://raw.githubusercontent.com/symfony-cli/homebrew-tap/main/Formula/symfony-cli.rb 2<&1 | grep -m 1 "url.*linux.*${arch}" | cut -d\" -f 2)
 | 
			
		||||
    if [ -z "$url" ]; then
 | 
			
		||||
      url=$(get -s -n "" https://api.github.com/repos/symfony-cli/symfony-cli/releases 2<&1 | grep -m 1 "url.*linux.*${arch}.*gz\"" | cut -d\" -f 4)
 | 
			
		||||
    fi
 | 
			
		||||
    echo "$url"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_symfony_helper() {
 | 
			
		||||
  local install_dir=/usr/local/bin
 | 
			
		||||
  [ "$(uname -s)" = "Darwin" ] && install_dir=${brew_prefix:?}/bin
 | 
			
		||||
  get -s -n "" "$(get_symfony_artifact_url "$symfony_tag")" | sudo tar -xz -C "$install_dir" 2>/dev/null
 | 
			
		||||
  sudo chmod a+x "$install_dir"/symfony
 | 
			
		||||
  if [ "$(uname -s)" = "Linux" ]; then
 | 
			
		||||
    url="$(get_symfony_artifact_url)"
 | 
			
		||||
    if [ -z "$url" ]; then
 | 
			
		||||
      . "${0%/*}"/tools/brew.sh
 | 
			
		||||
      configure_brew
 | 
			
		||||
      add_symfony_with_brew
 | 
			
		||||
    else
 | 
			
		||||
      get -s -n "" "$url" | sudo tar -xz -C "${tool_path_dir:?}" 2>/dev/null
 | 
			
		||||
      sudo chmod a+x /usr/local/bin/symfony
 | 
			
		||||
    fi
 | 
			
		||||
  elif [ "$(uname -s)" = "Darwin" ]; then
 | 
			
		||||
    add_symfony_with_brew
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_symfony() {
 | 
			
		||||
  local symfony_tag="${1/v/}"
 | 
			
		||||
  if ! [[ "$symfony_tag" =~ ^[0-9]+(\.[0-9]+)*$ || "$symfony_tag" == 'latest' ]]; then
 | 
			
		||||
      add_log "${cross:?}" "symfony-cli" "Version '$symfony_tag' is not valid for symfony-cli"
 | 
			
		||||
  add_symfony_helper 
 | 
			
		||||
  symfony_path="$(command -v symfony)"
 | 
			
		||||
  if [[ -n "$symfony_path" ]]; then
 | 
			
		||||
    sudo ln -s "$symfony_path" "${tool_path_dir:?}"/symfony-cli
 | 
			
		||||
    tool_version=$(get_tool_version "symfony" "-V")
 | 
			
		||||
    add_log "${tick:?}" "symfony-cli" "Added symfony-cli $tool_version"
 | 
			
		||||
  else
 | 
			
		||||
    add_symfony_helper "$symfony_tag" >/dev/null 2>&1
 | 
			
		||||
    symfony_path="$(command -v symfony)"
 | 
			
		||||
    if [[ -n "$symfony_path" ]]; then
 | 
			
		||||
      sudo ln -s "$symfony_path" "${tool_path_dir:?}"/symfony-cli
 | 
			
		||||
      tool_version=$(get_tool_version "symfony" "-V")
 | 
			
		||||
      add_log "${tick:?}" "symfony-cli" "Added symfony-cli $tool_version"
 | 
			
		||||
    else
 | 
			
		||||
      add_log "${cross:?}" "symfony-cli" "Could not setup symfony-cli"
 | 
			
		||||
    fi
 | 
			
		||||
    add_log "${cross:?}" "symfony-cli" "Could not setup symfony-cli"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -43,7 +43,7 @@ set_output() {
 | 
			
		||||
  name=$1
 | 
			
		||||
  value=$2
 | 
			
		||||
  if [ "${GITHUB_ACTIONS}" = "true" ]; then
 | 
			
		||||
    echo "${name}=${value}" | tee -a "$GITHUB_OUTPUT" >/dev/null 2>&1
 | 
			
		||||
    echo "${name}=${value}" | tee -a "$GITHUB_OUTPUT" 
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -68,7 +68,7 @@ read_env() {
 | 
			
		||||
  if [[ "$runner" = "github" && "${ImageOS}" =~ ubuntu.* ]]; then
 | 
			
		||||
    if ! check_ppa ondrej/php; then
 | 
			
		||||
      update=true
 | 
			
		||||
      echo '' | sudo tee /tmp/sp_update >/dev/null 2>&1
 | 
			
		||||
      echo '' | sudo tee /tmp/sp_update 
 | 
			
		||||
    elif [ -e /tmp/sp_update ]; then
 | 
			
		||||
      update=true
 | 
			
		||||
    fi
 | 
			
		||||
@ -91,7 +91,7 @@ acquire_lock() {
 | 
			
		||||
    else
 | 
			
		||||
      if sudo test -f "$lock_path/pid"; then
 | 
			
		||||
        lock_pid=$(sudo cat "$lock_path/pid")
 | 
			
		||||
        if ! ps -p "$lock_pid" >/dev/null 2>&1; then
 | 
			
		||||
        if ! ps -p "$lock_pid" ; then
 | 
			
		||||
          sudo rm -rf "$lock_path"
 | 
			
		||||
          continue
 | 
			
		||||
        fi
 | 
			
		||||
@ -171,10 +171,10 @@ add_path() {
 | 
			
		||||
  path_to_add=$1
 | 
			
		||||
  [[ ":$PATH:" == *":$path_to_add:"* ]] && return
 | 
			
		||||
  if [[ -n "$GITHUB_PATH" ]]; then
 | 
			
		||||
    echo "$path_to_add" | tee -a "$GITHUB_PATH" >/dev/null 2>&1
 | 
			
		||||
    echo "$path_to_add" | tee -a "$GITHUB_PATH" 
 | 
			
		||||
  else
 | 
			
		||||
    profile=$(get_shell_profile)
 | 
			
		||||
    ([ -e "$profile" ] && grep -q ":$path_to_add\"" "$profile" 2>/dev/null) || echo "export PATH=\"\${PATH:+\${PATH}:}\"$path_to_add" | sudo tee -a "$profile" >/dev/null 2>&1
 | 
			
		||||
    ([ -e "$profile" ] && grep -q ":$path_to_add\"" "$profile" 2>/dev/null) || echo "export PATH=\"\${PATH:+\${PATH}:}\"$path_to_add" | sudo tee -a "$profile" 
 | 
			
		||||
  fi
 | 
			
		||||
  export PATH="${PATH:+${PATH}:}$path_to_add"
 | 
			
		||||
}
 | 
			
		||||
@ -196,10 +196,10 @@ add_env() {
 | 
			
		||||
  env_name=$1
 | 
			
		||||
  env_value=$2
 | 
			
		||||
  if [[ -n "$GITHUB_ENV" ]]; then
 | 
			
		||||
    echo "$env_name=$env_value" | tee -a "$GITHUB_ENV" >/dev/null 2>&1
 | 
			
		||||
    echo "$env_name=$env_value" | tee -a "$GITHUB_ENV" 
 | 
			
		||||
  else
 | 
			
		||||
    profile=$(get_shell_profile)
 | 
			
		||||
    echo "export $env_name=\"$env_value\"" | sudo tee -a "$profile" >/dev/null 2>&1
 | 
			
		||||
    echo "export $env_name=\"$env_value\"" | sudo tee -a "$profile" 
 | 
			
		||||
  fi
 | 
			
		||||
  export "$env_name"="$env_value"
 | 
			
		||||
}
 | 
			
		||||
@ -220,7 +220,7 @@ self_hosted_setup() {
 | 
			
		||||
      add_log "$cross" "PHP" "PHP $version is not supported on self-hosted runner"
 | 
			
		||||
      exit 1
 | 
			
		||||
    else
 | 
			
		||||
      self_hosted_helper >/dev/null 2>&1
 | 
			
		||||
      self_hosted_helper 
 | 
			
		||||
      add_env RUNNER_TOOL_CACHE /opt/hostedtoolcache
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
@ -248,8 +248,8 @@ configure_php() {
 | 
			
		||||
  [[ "$arch" = "arm64" || "$arch" = "aarch64" ]] && jit_ini="$ini_config_dir"/jit_aarch64.ini || jit_ini="$ini_config_dir"/jit.ini
 | 
			
		||||
  jit_config_files=("$jit_ini")
 | 
			
		||||
  [[ "$version" =~ $xdebug3_versions ]] && ini_config_files+=("$ini_config_dir"/xdebug.ini)
 | 
			
		||||
  cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" >/dev/null 2>&1
 | 
			
		||||
  [[ "$version" =~ $jit_versions ]] && cat "${jit_config_files[@]}" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1
 | 
			
		||||
  cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" 
 | 
			
		||||
  [[ "$version" =~ $jit_versions ]] && cat "${jit_config_files[@]}" | sudo tee -a "${pecl_file:-${ini_file[@]}}" 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Function to get PHP version in semver format.
 | 
			
		||||
 | 
			
		||||
@ -355,7 +355,7 @@ if(-not($env:ImageOS) -and -not($env:ImageVersion)) {
 | 
			
		||||
  $bin_dir = 'C:\tools\bin'
 | 
			
		||||
  $php_dir = "$php_dir$version"
 | 
			
		||||
  $ext_dir = "$php_dir\ext"
 | 
			
		||||
  Get-CleanPSProfile >$null 2>&1
 | 
			
		||||
  Get-CleanPSProfile 
 | 
			
		||||
  New-Item $bin_dir -Type Directory -Force > $null 2>&1
 | 
			
		||||
  Add-Path -PathItem $bin_dir
 | 
			
		||||
  if($version -lt 5.6) {
 | 
			
		||||
@ -368,12 +368,12 @@ if(-not($env:ImageOS) -and -not($env:ImageVersion)) {
 | 
			
		||||
  }
 | 
			
		||||
  New-Item $php_dir -Type Directory -Force > $null 2>&1
 | 
			
		||||
  Add-Path -PathItem $php_dir
 | 
			
		||||
  setx PHPROOT $php_dir >$null 2>&1
 | 
			
		||||
  setx PHPROOT $php_dir 
 | 
			
		||||
  Add-Env -EnvName RUNNER_TOOL_CACHE -EnvValue $env:TEMP
 | 
			
		||||
} else {
 | 
			
		||||
  $current_profile = "$PSHOME\Profile.ps1"
 | 
			
		||||
  if(-not(Test-Path -LiteralPath $current_profile)) {
 | 
			
		||||
    New-Item -Path $current_profile -ItemType "file" -Force >$null 2>&1
 | 
			
		||||
    New-Item -Path $current_profile -ItemType "file" -Force 
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -381,9 +381,9 @@ $src = Join-Path -Path $PSScriptRoot -ChildPath \..
 | 
			
		||||
. $src\scripts\tools\add_tools.ps1
 | 
			
		||||
. $src\scripts\extensions\add_extensions.ps1
 | 
			
		||||
 | 
			
		||||
Add-Printf >$null 2>&1
 | 
			
		||||
Add-Printf 
 | 
			
		||||
Step-Log "Setup PhpManager"
 | 
			
		||||
Install-PSPackage PhpManager PhpManager\PhpManager "$github/mlocati/powershell-phpmanager/releases/latest/download/PhpManager.zip" Get-Php >$null 2>&1
 | 
			
		||||
Install-PSPackage PhpManager PhpManager\PhpManager "$github/mlocati/powershell-phpmanager/releases/latest/download/PhpManager.zip" Get-Php 
 | 
			
		||||
Add-Log $tick "PhpManager" "Installed"
 | 
			
		||||
 | 
			
		||||
Step-Log "Setup PHP"
 | 
			
		||||
@ -412,7 +412,7 @@ if($version -eq 'pre') {
 | 
			
		||||
}
 | 
			
		||||
if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version -replace '^(\d+(\.\d+)*).*', '$1.'))) -or $ts -ne $installed.ThreadSafe) {
 | 
			
		||||
  if ($version -lt '7.0' -and ($null -eq (Get-Module -ListAvailable -Name VcRedist))) {
 | 
			
		||||
    Install-PSPackage VcRedist VcRedist-main\VcRedist\VcRedist "$github/aaronparker/VcRedist/archive/main.zip" Get-VcList >$null 2>&1
 | 
			
		||||
    Install-PSPackage VcRedist VcRedist-main\VcRedist\VcRedist "$github/aaronparker/VcRedist/archive/main.zip" Get-VcList 
 | 
			
		||||
  }
 | 
			
		||||
  try {
 | 
			
		||||
    if ($version -match $nightly_versions) {
 | 
			
		||||
@ -425,7 +425,7 @@ if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version
 | 
			
		||||
  } catch { }
 | 
			
		||||
} else {
 | 
			
		||||
  if($env:update -eq 'true') {
 | 
			
		||||
    Update-Php $php_dir >$null 2>&1
 | 
			
		||||
    Update-Php $php_dir 
 | 
			
		||||
    $status = "Updated to"
 | 
			
		||||
  } else {
 | 
			
		||||
    $status = "Found"
 | 
			
		||||
@ -443,7 +443,7 @@ if($installed.MajorMinorVersion -ne $version) {
 | 
			
		||||
  Write-Error "Could not setup PHP $version" -ErrorAction Stop
 | 
			
		||||
}
 | 
			
		||||
if($version -lt "5.5") {
 | 
			
		||||
  ('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Invoke-WebRequest -Uri "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_ >$null 2>&1 }
 | 
			
		||||
  ('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Invoke-WebRequest -Uri "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_  }
 | 
			
		||||
} else {
 | 
			
		||||
  $enable_extensions += ('opcache')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -285,10 +285,10 @@ export async function getExtensionPrefix(extension: string): Promise<string> {
 | 
			
		||||
export async function suppressOutput(os: string): Promise<string> {
 | 
			
		||||
  switch (os) {
 | 
			
		||||
    case 'win32':
 | 
			
		||||
      return ' >$null 2>&1';
 | 
			
		||||
      return ' ';
 | 
			
		||||
    case 'linux':
 | 
			
		||||
    case 'darwin':
 | 
			
		||||
      return ' >/dev/null 2>&1';
 | 
			
		||||
      return ' ';
 | 
			
		||||
    default:
 | 
			
		||||
      return await log('Platform ' + os + ' is not supported', os, 'error');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user