mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-10-26 13:15:09 +07:00 
			
		
		
		
	Compare commits
	
		
			31 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2ed2e6e7ad | |||
| bf6b4fbd49 | |||
| 8f8196743c | |||
| 06512d94ed | |||
| 1c302aed34 | |||
| dcffe28928 | |||
| 6ffdb3d118 | |||
| c97dacbacf | |||
| 34f574e7aa | |||
| 317a051dea | |||
| dfcda83968 | |||
| 96d7cf331d | |||
| baed2d33b8 | |||
| 1398cb4c9f | |||
| 462e7103e4 | |||
| 8582cb12d5 | |||
| ec406be512 | |||
| 36a27b0262 | |||
| ea2f858afe | |||
| 507ff06e8d | |||
| 629475b7b3 | |||
| 521f2e5b93 | |||
| 259d177178 | |||
| 20529878ed | |||
| 68634e7bca | |||
| 0ac4874a14 | |||
| c9735bcc02 | |||
| 89b2566bb0 | |||
| dcec1cf0b4 | |||
| ccf2c627fe | |||
| 2a597f617d | 
							
								
								
									
										3
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/codeql.yml
									
									
									
									
										vendored
									
									
								
							| @ -8,6 +8,7 @@ permissions: | ||||
|  | ||||
| jobs: | ||||
|   codeql: | ||||
|     if: github.event.repository.fork == false | ||||
|     permissions: | ||||
|       actions: read  # for github/codeql-action/init to get workflow details | ||||
|       contents: read  # for actions/checkout to fetch code | ||||
| @ -15,7 +16,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
|  | ||||
|  | ||||
							
								
								
									
										6
									
								
								.github/workflows/docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/docs.yml
									
									
									
									
										vendored
									
									
								
							| @ -8,6 +8,7 @@ permissions: | ||||
|  | ||||
| jobs: | ||||
|   create: | ||||
|     if: github.event.repository.fork == false | ||||
|     permissions: | ||||
|       contents: none | ||||
|     name: Create | ||||
| @ -92,6 +93,7 @@ jobs: | ||||
|           name: lists-php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md | ||||
|           path: php${{ matrix.php-versions }}-${{ matrix.operating-system }}.md | ||||
|   update: | ||||
|     if: github.event.repository.fork == false | ||||
|     permissions: | ||||
|       contents: write  # for Git to git push | ||||
|     name: Update | ||||
| @ -99,11 +101,11 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|         with: | ||||
|           repository: ${{ github.repository }}.wiki | ||||
|       - name: Download artifacts | ||||
|         uses: actions/download-artifact@v4 | ||||
|         uses: actions/download-artifact@v5 | ||||
|         with: | ||||
|           path: ${{ github.workspace }}/lists | ||||
|           pattern: lists-* | ||||
|  | ||||
							
								
								
									
										4
									
								
								.github/workflows/node.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/node.yml
									
									
									
									
										vendored
									
									
								
							| @ -29,12 +29,12 @@ jobs: | ||||
|         operating-system: [ubuntu-latest, windows-latest, macos-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
|  | ||||
|       - name: Setup Node.js 20.x | ||||
|         uses: actions/setup-node@v4 | ||||
|         uses: actions/setup-node@v5 | ||||
|         with: | ||||
|           node-version: 20.x | ||||
|  | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/php.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/php.yml
									
									
									
									
										vendored
									
									
								
							| @ -39,7 +39,7 @@ jobs: | ||||
|       key: cache-v5 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: Setup cache environment | ||||
|         id: cache-env | ||||
|  | ||||
							
								
								
									
										8
									
								
								.github/workflows/publish.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/publish.yml
									
									
									
									
										vendored
									
									
								
							| @ -19,16 +19,16 @@ jobs: | ||||
|     steps: | ||||
|       - name: Checkout release | ||||
|         if: github.event_name != 'workflow_dispatch' | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|  | ||||
|       - name: Checkout tag | ||||
|         uses: actions/checkout@v4 | ||||
|         uses: actions/checkout@v5 | ||||
|         if: github.event_name == 'workflow_dispatch' | ||||
|         with: | ||||
|           ref: ${{ github.event.inputs.tag }} | ||||
|  | ||||
|       - name: Setup Node.js | ||||
|         uses: actions/setup-node@v4 | ||||
|         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@v4 | ||||
|         uses: actions/setup-node@v5 | ||||
|         with: | ||||
|           registry-url: https://npm.pkg.github.com | ||||
|           scope: '@shivammathur' | ||||
|  | ||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							| @ -77,8 +77,9 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t | ||||
| | 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 Sequoia 15.x  | arm64   | `macos-15`                         | -                      | | ||||
| | macOS Sonoma 14.x   | arm64   | `macos-latest` or `macos-14`       | -                      | | ||||
| | 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 | ||||
| @ -91,6 +92,7 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t | ||||
| | Debian 11                        | `self-hosted` or `Linux`   | | ||||
| | Windows 7 and newer              | `self-hosted` or `Windows` | | ||||
| | Windows Server 2012 R2 and newer | `self-hosted` or `Windows` | | ||||
| | macOS Tahoe 26.x x86_64/arm64    | `self-hosted` or `macOS`   | | ||||
| | macOS Sequoia 15.x x86_64/arm64  | `self-hosted` or `macOS`   | | ||||
| | macOS Sonoma 14.x x86_64/arm64   | `self-hosted` or `macOS`   | | ||||
| | macOS Ventura 13.x x86_64/arm64  | `self-hosted` or `macOS`   | | ||||
| @ -465,6 +467,7 @@ Disable coverage for these reasons: | ||||
| - Specify the GitHub token to use for authentication. | ||||
| - Accepts a `string`. | ||||
| - By default, `GITHUB_TOKEN` secret provided by GitHub Actions is used. | ||||
| - For GitHub Enterprise users, it is recommended to use a Personal Access Token (PAT). | ||||
|  | ||||
| ### Outputs | ||||
|  | ||||
| @ -741,7 +744,7 @@ act -P ubuntu-22.04=shivammathur/node:2204 | ||||
|  | ||||
| - To enable JIT, enable `opcache` in cli mode by setting `opcache.enable_cli=1`. | ||||
| - JIT conflicts with `Xdebug`, `PCOV`, and other extensions which override `zend_execute_ex` function, so set `coverage: none` and disable any such extension if added. | ||||
| - By default, `opcache.jit=1235` and `opcache.jit_buffer_size=256M` are set which can be changed using `ini-values` input. | ||||
| - By default, `opcache.jit=1235` and `opcache.jit_buffer_size=256M` (`opcache.jit_buffer_size=128M` on ARM-based environments) are set which can be changed using `ini-values` input. | ||||
| - For detailed information about JIT related directives refer to the [`official PHP documentation`](https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit "opcache.jit documentation"). | ||||
|  | ||||
| For example to enable JIT in `tracing` mode with buffer size of `64 MB`. | ||||
| @ -797,8 +800,6 @@ restore-keys: ${{ runner.os }}-composer-${{ matrix.prefer }}- | ||||
|  | ||||
| By default, setup-php uses the `GITHUB_TOKEN` secret that is generated for each workflow run. In case you want to use a Personal Access Token (PAT) instead, you can set the `github-token` input. | ||||
|  | ||||
| The `COMPOSER_TOKEN` and `GITHUB_TOKEN` environment variables have been deprecated in favor of the `github-token` input and will be removed in the next major version. | ||||
|  | ||||
| ```yaml | ||||
| - name: Setup PHP | ||||
|   uses: shivammathur/setup-php@v2 | ||||
| @ -807,6 +808,10 @@ The `COMPOSER_TOKEN` and `GITHUB_TOKEN` environment variables have been deprecat | ||||
|     github-token: ${{ secrets.YOUR_PAT_TOKEN }} | ||||
| ``` | ||||
|  | ||||
| The `COMPOSER_TOKEN` and `GITHUB_TOKEN` environment variables have been deprecated in favor of the `github-token` input and will be removed in the next major version. | ||||
|  | ||||
| For GitHub Enterprise users, the `github-token` input does not default to the `GITHUB_TOKEN` secret. Therefore, it's recommended to set the `github-token` input to a Personal Access Token (PAT). | ||||
|  | ||||
| ### Private Packagist Authentication | ||||
|  | ||||
| If you use Private Packagist for your private composer dependencies, you can set the `PACKAGIST_TOKEN` environment variable to authenticate. | ||||
|  | ||||
| @ -61,7 +61,23 @@ jest.mock('../src/fetch', () => ({ | ||||
|         } else if (!token || token === 'valid_token') { | ||||
|           return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`}; | ||||
|         } else if (token === 'beta_token') { | ||||
|           return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`}; | ||||
|           return {data: `[{"ref": "refs/tags/1.2.3beta1", "url": "${url}"}]`}; | ||||
|         } else if (token === 'rc_token') { | ||||
|           return { | ||||
|             data: `[{"ref":"refs/tags/3.0.0RC1"},{"ref":"refs/tags/3.0.0RC2"}]` | ||||
|           }; | ||||
|         } else if (token === 'non_semver_tags') { | ||||
|           return { | ||||
|             data: `[{"ref":"refs/tags/release-2025-09-18"},{"ref":"refs/tags/release-2025-09-17"}]` | ||||
|           }; | ||||
|         } else if (token === 'undefined_ref') { | ||||
|           return { | ||||
|             data: `[{"url":"${url}"},{"ref":"refs/tags/v1.2.4","url":"${url}"}]` | ||||
|           }; | ||||
|         } else if (token === 'multi_refs') { | ||||
|           return { | ||||
|             data: `[{"ref":"refs/tags/v1.2.3","url":"${url}"},{"ref":"refs/tags/1.2.4","url":"${url}"}]` | ||||
|           }; | ||||
|         } else if (token === 'no_data') { | ||||
|           return {data: '[]'}; | ||||
|         } else { | ||||
| @ -92,7 +108,10 @@ describe('Tools tests', () => { | ||||
|     token                | version | ||||
|     ${'invalid_token'}   | ${'1.2'} | ||||
|     ${'valid_token'}     | ${'1.2.3'} | ||||
|     ${'beta_token'}    | ${'1.2.3-beta1'} | ||||
|     ${'beta_token'}      | ${'1.2.3beta1'} | ||||
|     ${'undefined_ref'}   | ${'1.2.4'} | ||||
|     ${'multi_refs'}      | ${'1.2.4'} | ||||
|     ${'non_semver_tags'} | ${'release-2025-09-18'} | ||||
|     ${''}                | ${'1.2.3'} | ||||
|   `('checking getSemverVersion: $token', async ({token, version}) => { | ||||
|     process.env['GITHUB_TOKEN'] = token; | ||||
| @ -101,6 +120,26 @@ describe('Tools tests', () => { | ||||
|     ).toBe(version); | ||||
|   }); | ||||
|  | ||||
|   it('checking getSemverVersion triggers ?? fallback via Map#get mock', async () => { | ||||
|     process.env['GITHUB_TOKEN'] = 'rc_token'; | ||||
|     const spy = jest | ||||
|       .spyOn(Map.prototype as Map<string, string>, 'get') | ||||
|       .mockImplementation(function ( | ||||
|         this: Map<string, string>, | ||||
|         key: string | ||||
|       ): string | undefined { | ||||
|         if (key === '3.0.0-RC2') { | ||||
|           return undefined; | ||||
|         } | ||||
|         return Map.prototype.get.call(this, key); | ||||
|       }); | ||||
|     const result = await tools.getSemverVersion( | ||||
|       getData({tool: 'tool', version: '3.0.0'}) | ||||
|     ); | ||||
|     expect(result).toBe('3.0.0-RC2'); | ||||
|     spy.mockRestore(); | ||||
|   }); | ||||
|  | ||||
|   it.each` | ||||
|     tool                 | fetch_latest | version | ||||
|     ${'tool'}            | ${'true'}    | ${'3.2.1'} | ||||
| @ -332,6 +371,12 @@ describe('Tools tests', () => { | ||||
|     ${'preview'}   | ${'7.4'}    | ${'true'}     | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-preview.phar'}    | ${'https://getcomposer.org/composer-preview.phar'} | ||||
|     ${'1'}         | ${'7.4'}    | ${'false'}    | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar'}          | ${'https://getcomposer.org/composer-1.phar'} | ||||
|     ${'2'}         | ${'7.4'}    | ${'false'}    | ${'https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-2.phar'}          | ${'https://getcomposer.org/composer-2.phar'} | ||||
|     ${'latest'}    | ${'7.4'}    | ${'true'}     | ${'https://artifacts.setup-php.com/composer/composer-7.4-stable.phar'}                                  | ${'https://getcomposer.org/composer-stable.phar'} | ||||
|     ${'stable'}    | ${'7.4'}    | ${'true'}     | ${'https://artifacts.setup-php.com/composer/composer-7.4-stable.phar'}                                  | ${'https://getcomposer.org/composer-stable.phar'} | ||||
|     ${'snapshot'}  | ${'7.4'}    | ${'true'}     | ${'https://artifacts.setup-php.com/composer/composer-7.4-snapshot.phar'}                                | ${'https://getcomposer.org/composer.phar'} | ||||
|     ${'preview'}   | ${'7.4'}    | ${'true'}     | ${'https://artifacts.setup-php.com/composer/composer-7.4-preview.phar'}                                 | ${'https://getcomposer.org/composer-preview.phar'} | ||||
|     ${'1'}         | ${'7.4'}    | ${'false'}    | ${'https://artifacts.setup-php.com/composer/composer-7.4-1.phar'}                                       | ${'https://getcomposer.org/composer-1.phar'} | ||||
|     ${'2'}         | ${'7.4'}    | ${'false'}    | ${'https://artifacts.setup-php.com/composer/composer-7.4-2.phar'}                                       | ${'https://getcomposer.org/composer-2.phar'} | ||||
|     ${'latest'}    | ${'7.1'}    | ${'true'}     | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-stable.phar'}   | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'} | ||||
|     ${'stable'}    | ${'7.1'}    | ${'true'}     | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-stable.phar'}   | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'} | ||||
|     ${'snapshot'}  | ${'7.1'}    | ${'true'}     | ${'https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.1-snapshot.phar'} | ${'https://getcomposer.org/download/latest-2.2.x/composer.phar'} | ||||
| @ -395,7 +440,7 @@ describe('Tools tests', () => { | ||||
|     [ | ||||
|       'blackfire, blackfire-player, box, churn, cs2pr, flex, grpc_php_plugin, mago, name-collision-detector, parallel-lint, php-cs-fixer, php-scoper, phpDocumentor, phplint, phpstan, phpunit, pecl, phing, phinx, phinx:1.2.3, phive, phpunit-bridge, phpunit-polyfills, pint, php-config, phpize, protoc, symfony, vapor, wp, pie', | ||||
|       [ | ||||
|         'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://artifacts.setup-php.com/composer/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'add_blackfire', | ||||
|         'add_tool https://get.blackfire.io/blackfire-player-v1.22.0.phar blackfire-player "-V"', | ||||
|         'add_tool https://github.com/box-project/box/releases/latest/download/box.phar box "--version"', | ||||
| @ -440,7 +485,7 @@ describe('Tools tests', () => { | ||||
|     [ | ||||
|       'backward-compatibility-check, behat, blackfire, blackfire-player, churn, composer-dependency-analyser, composer-normalize, composer-require-checker, composer-unused, cs2pr:1.2.3, ecs, flex, grpc_php_plugin:1.2.3, infection, mago:0.26.1, name-collision-detector, phan, phan:1.2.3, phing:1.2.3, phinx, phive:1.2.3, php-config, phpcbf, phpcpd, phpcs, phpdoc, phpize, phpmd, phpspec, phpunit-bridge:5.6, phpunit-polyfills:1.0.1, protoc:v1.2.3, psalm, rector, symfony-cli, vapor-cli, wp-cli, pie', | ||||
|       [ | ||||
|         'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://artifacts.setup-php.com/composer/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'add_composer_tool behat behat behat/ scoped', | ||||
|         'add_blackfire', | ||||
|         'add_tool https://get.blackfire.io/blackfire-player-v1.22.0.phar blackfire-player "-V"', | ||||
| @ -492,7 +537,7 @@ describe('Tools tests', () => { | ||||
|     [ | ||||
|       'blackfire, blackfire-player:1.2.3, cs2pr, churn, deployer, does_not_exist, flex, mago, name-collision-detector, phinx, phive:0.13.2, php-config, phpize, phpmd, simple-phpunit, symfony, wp, pie', | ||||
|       [ | ||||
|         'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://artifacts.setup-php.com/composer/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer', | ||||
|         'Add-Blackfire', | ||||
|         'blackfire-player is not a windows tool', | ||||
|         'Add-Tool https://github.com/staabm/annotate-pull-request-from-checkstyle/releases/latest/download/cs2pr cs2pr "-V"', | ||||
| @ -524,7 +569,7 @@ describe('Tools tests', () => { | ||||
|     [ | ||||
|       'composer:v1, codeception/codeception, prestissimo, hirak/prestissimo, composer-prefetcher, narrowspark/automatic-composer-prefetcher, phinx: 1.2, robmorgan/phinx: ^1.2, user/tool:1.2.3, user/tool:~1.2', | ||||
|       [ | ||||
|         'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer', | ||||
|         'Add-Tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://artifacts.setup-php.com/composer/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer', | ||||
|         'Add-ComposerTool codeception codeception codeception/ global', | ||||
|         'Add-ComposerTool prestissimo prestissimo hirak/ global', | ||||
|         'Add-ComposerTool automatic-composer-prefetcher automatic-composer-prefetcher narrowspark/ global', | ||||
| @ -573,10 +618,10 @@ describe('Tools tests', () => { | ||||
|   it.each` | ||||
|     tools_csv                                             | script | ||||
|     ${'none'}                                             | ${''} | ||||
|     ${'none, phpunit'}                                    | ${'\nstep_log "Setup Tools"\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n\nadd_tool https://phar.phpunit.de/phpunit-7.4.0.phar,https://phar.phpunit.de/phpunit-7.phar phpunit "--version"'} | ||||
|     ${'composer:preview'}                                 | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-preview.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'} | ||||
|     ${'composer, composer:v1'}                            | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer'} | ||||
|     ${'composer:v1, composer:preview, composer:snapshot'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-snapshot.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'} | ||||
|     ${'none, phpunit'}                                    | ${'\nstep_log "Setup Tools"\nadd_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-stable.phar,https://artifacts.setup-php.com/composer/composer-7.4-stable.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-stable.phar,https://getcomposer.org/composer-stable.phar composer latest\n\nadd_tool https://phar.phpunit.de/phpunit-7.4.0.phar,https://phar.phpunit.de/phpunit-7.phar phpunit "--version"'} | ||||
|     ${'composer:preview'}                                 | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-preview.phar,https://artifacts.setup-php.com/composer/composer-7.4-preview.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-preview.phar,https://getcomposer.org/composer-preview.phar composer preview'} | ||||
|     ${'composer, composer:v1'}                            | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-1.phar,https://artifacts.setup-php.com/composer/composer-7.4-1.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-1.phar,https://getcomposer.org/composer-1.phar composer'} | ||||
|     ${'composer:v1, composer:preview, composer:snapshot'} | ${'add_tool https://github.com/shivammathur/composer-cache/releases/latest/download/composer-7.4-snapshot.phar,https://artifacts.setup-php.com/composer/composer-7.4-snapshot.phar,https://dl.cloudsmith.io/public/shivammathur/composer-cache/raw/files/composer-7.4-snapshot.phar,https://getcomposer.org/composer.phar composer snapshot'} | ||||
|   `('checking composer setup: $tools_csv', async ({tools_csv, script}) => { | ||||
|     expect(await tools.addTools(tools_csv, '7.4', 'linux')).toContain(script); | ||||
|   }); | ||||
|  | ||||
| @ -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
											
										
									
								
							
							
								
								
									
										843
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										843
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										28
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								package.json
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "setup-php", | ||||
|   "version": "2.35.1", | ||||
|   "version": "2.35.5", | ||||
|   "private": false, | ||||
|   "description": "Setup PHP for use with GitHub Actions", | ||||
|   "main": "lib/install.js", | ||||
| @ -40,26 +40,26 @@ | ||||
|     "compare-versions": "^6.1.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@eslint/compat": "^1.3.1", | ||||
|     "@eslint/js": "9.32.0", | ||||
|     "@eslint/compat": "^1.3.2", | ||||
|     "@eslint/js": "9.35.0", | ||||
|     "@types/jest": "^30.0.0", | ||||
|     "@types/node": "^24.1.0", | ||||
|     "@typescript-eslint/eslint-plugin": "^8.38.0", | ||||
|     "@typescript-eslint/parser": "^8.38.0", | ||||
|     "@types/node": "^24.3.1", | ||||
|     "@typescript-eslint/eslint-plugin": "^8.43.0", | ||||
|     "@typescript-eslint/parser": "^8.43.0", | ||||
|     "@vercel/ncc": "^0.38.3", | ||||
|     "eslint": "9.32.0", | ||||
|     "eslint": "9.35.0", | ||||
|     "eslint-config-prettier": "^10.1.8", | ||||
|     "eslint-plugin-import": "^2.32.0", | ||||
|     "eslint-plugin-jest": "^29.0.1", | ||||
|     "eslint-plugin-prettier": "^5.5.3", | ||||
|     "eslint-plugin-prettier": "^5.5.4", | ||||
|     "globals": "^16.3.0", | ||||
|     "jest": "^30.0.5", | ||||
|     "jest-circus": "^30.0.5", | ||||
|     "nock": "^14.0.7", | ||||
|     "jest": "^30.1.3", | ||||
|     "jest-circus": "^30.1.3", | ||||
|     "nock": "^14.0.10", | ||||
|     "prettier": "^3.6.2", | ||||
|     "simple-git-hooks": "^2.13.0", | ||||
|     "ts-jest": "^29.4.0", | ||||
|     "typescript": "^5.8.3" | ||||
|     "simple-git-hooks": "^2.13.1", | ||||
|     "ts-jest": "^29.4.1", | ||||
|     "typescript": "^5.9.2" | ||||
|   }, | ||||
|   "overrides": { | ||||
|     "test-exclude": "^7.0.1" | ||||
|  | ||||
| @ -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
									
								
								src/configs/ini/jit_aarch64.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/configs/ini/jit_aarch64.ini
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| opcache.enable=1 | ||||
| opcache.jit_buffer_size=128M | ||||
| opcache.jit=1235 | ||||
| @ -59,10 +59,10 @@ export async function setEnv(): Promise<void> { | ||||
|  * Run the script | ||||
|  */ | ||||
| export async function run(): Promise<void> { | ||||
|   await setEnv(); | ||||
|   const os: string = process.platform; | ||||
|   const tool = await utils.scriptTool(os); | ||||
|   const run_path = await getScript(os); | ||||
|   await setEnv(); | ||||
|   await exec(tool + run_path); | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -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" | ||||
| } | ||||
| @ -134,12 +134,12 @@ patch_brew() { | ||||
| update_dependencies() { | ||||
|   patch_brew | ||||
|   if ! [ -e /tmp/update_dependencies ]; then | ||||
|     for repo in "$brew_repo" "$core_repo"; do | ||||
|     for repo in "$brew_repo" "${core_repo:?}"; do | ||||
|       if [ -e "$repo" ]; then | ||||
|         git_retry -C "$repo" fetch origin master && git -C "$repo" reset --hard origin/master | ||||
|         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 | ||||
| } | ||||
|  | ||||
| @ -197,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 | ||||
| } | ||||
|  | ||||
| @ -212,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. | ||||
| @ -223,14 +223,14 @@ setup_php() { | ||||
|   check_pre_installed | ||||
|   existing_version=$(get_brewed_php) | ||||
|   if [[ "$version" =~ ${old_versions:?} ]]; then | ||||
|     run_script "php5-darwin" "${version/./}" >/dev/null 2>&1 | ||||
|     run_script "php5-darwin" "${version/./}"  | ||||
|     status="Installed" | ||||
|   elif [ "$existing_version" != "$version" ]; then | ||||
|     add_php "install" "$existing_version" >/dev/null 2>&1 | ||||
|     add_php "install" "$existing_version"  | ||||
|     status="Installed" | ||||
|   elif [ "$existing_version" = "$version" ]; then | ||||
|     if [ "${update:?}" = "true" ]; then | ||||
|       add_php "upgrade" "$existing_version" >/dev/null 2>&1 | ||||
|       add_php "upgrade" "$existing_version"  | ||||
|       status="Updated to" | ||||
|     else | ||||
|       status="Found" | ||||
|  | ||||
| @ -48,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 | ||||
| @ -57,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 | ||||
| @ -69,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[@]}" | ||||
| @ -77,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. | ||||
| @ -123,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"/{} | ||||
| @ -137,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 | ||||
| } | ||||
|  | ||||
| @ -175,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 | ||||
| @ -189,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 | ||||
| @ -216,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" | ||||
| } | ||||
|  | ||||
| @ -11,13 +11,14 @@ install_icu() { | ||||
| # Function to add ext-intl with the given version of ICU | ||||
| add_intl() { | ||||
|   icu=$(echo "$1" | cut -d'-' -f 2) | ||||
|   supported_version=$(get -s -n "" https://api.github.com/repos/shivammathur/icu-intl/releases | grep -Po "${icu//./\\.}" | head -n 1) | ||||
|   if [ "$icu" != "$supported_version" ]; then | ||||
|     add_log "${cross:?}" "intl" "ICU $icu is not supported" | ||||
|   supported_version=$(get -s -n "" https://api.github.com/repos/shivammathur/icu-intl/releases/tags/intl-"$icu" | grep -Po "php${version?}-intl-$icu" | head -n 1) | ||||
|   [ -z "$supported_version" ] && supported_version=$(get -s -n "" https://github.com/shivammathur/icu-intl/releases/expanded_assets/intl-"$icu" | grep -Po "php$version-intl-$icu" | head -n 1) | ||||
|   if [ "php$version-intl-$icu" != "$supported_version" ]; then | ||||
|     add_log "${cross:?}" "intl" "ICU $icu is not supported for PHP $version" | ||||
|   else | ||||
|     [ "${ts:?}" = 'zts' ] && suffix='-zts' | ||||
|     install_icu "$icu" >/dev/null 2>&1 | ||||
|     get -q -n "${ext_dir:?}/intl.so" "https://github.com/shivammathur/icu-intl/releases/download/intl/php${version:?}-intl-$icu$suffix$arch_suffix.so" | ||||
|     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" | ||||
|   fi | ||||
|  | ||||
| @ -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" | ||||
| } | ||||
|  | ||||
| @ -48,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 | ||||
| @ -56,8 +69,13 @@ add_relay_dependencies() { | ||||
|   if [ "$os" = "Darwin" ]; then | ||||
|     . "${0%/*}"/tools/brew.sh | ||||
|     configure_brew | ||||
|     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 | ||||
| } | ||||
|  | ||||
| # Initialize relay extension ini configuration | ||||
| @ -138,13 +156,13 @@ add_relay() { | ||||
|   relay_releases=https://github.com/cachewerk/relay/releases | ||||
|   relay_trunk=https://builds.r2.relay.so | ||||
|   relay_version=$(get_relay_version "$ext") | ||||
|   add_relay_dependencies >/dev/null 2>&1 | ||||
|   add_relay_dependencies  | ||||
|   if shared_extension relay; then | ||||
|     message="Enabled" | ||||
|   else | ||||
|     add_relay_helper >/dev/null 2>&1 | ||||
|     add_relay_helper  | ||||
|     message="Installed and enabled" | ||||
|   fi | ||||
|   configure_relay >/dev/null 2>&1 | ||||
|   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=$? | ||||
| @ -143,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 | ||||
| @ -151,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=. | ||||
|  | ||||
| @ -28,8 +28,8 @@ Function Edit-ComposerConfig() { | ||||
|   Set-ComposerAuth | ||||
| } | ||||
|  | ||||
| # Function to merge auth.json fragments. | ||||
| Function Get-MergedAuthJson { | ||||
| # Function to update auth.json. | ||||
| Function Update-AuthJson { | ||||
|   [CmdletBinding()] | ||||
|   param( | ||||
|     [Parameter(Mandatory)][string[]] $ComposerAuth | ||||
| @ -58,7 +58,20 @@ Function Get-MergedAuthJson { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return $existing | ConvertTo-Json -Depth 5 | ||||
|   Set-Content -Path $composer_home\auth.json -Value ($existing | ConvertTo-Json -Depth 5) | ||||
| } | ||||
|  | ||||
| function Test-GitHubPublicAccess { | ||||
|   param( | ||||
|     [Parameter(Mandatory=$true)] | ||||
|     [string]$Token | ||||
|   ) | ||||
|   try { | ||||
|     Invoke-RestMethod -Uri 'https://api.github.com/' -Headers @{ Authorization = "token $Token" } -ErrorAction Stop | Out-Null | ||||
|     return $true | ||||
|   } catch { | ||||
|     return $false | ||||
|   } | ||||
| } | ||||
|  | ||||
| # Function to setup authentication in composer. | ||||
| @ -74,14 +87,18 @@ Function Set-ComposerAuth() { | ||||
|   if(Test-Path env:PACKAGIST_TOKEN) { | ||||
|     $composer_auth += '"http-basic": {"repo.packagist.com": { "username": "token", "password": "' + $env:PACKAGIST_TOKEN + '"}}' | ||||
|   } | ||||
|   if(-not(Test-Path env:GITHUB_TOKEN) -and (Test-Path env:COMPOSER_TOKEN)) { | ||||
|     $env:GITHUB_TOKEN = $env:COMPOSER_TOKEN | ||||
|   $write_token = $true | ||||
|   $token = if ($env:COMPOSER_TOKEN) { $env:COMPOSER_TOKEN } else { $env:GITHUB_TOKEN } | ||||
|   if ($token) { | ||||
|     if ($env:GITHUB_SERVER_URL -ne "https://github.com" -and -not(Test-GitHubPublicAccess $token)) { | ||||
|       $write_token = $false | ||||
|     } | ||||
|     if($write_token) { | ||||
|       $composer_auth += '"github-oauth": {"github.com": "' + $token + '"}' | ||||
|     } | ||||
|   if (Test-Path env:GITHUB_TOKEN) { | ||||
|     $composer_auth += '"github-oauth": {"github.com": "' + $env:GITHUB_TOKEN + '"}' | ||||
|   } | ||||
|   if($composer_auth.length) { | ||||
|     Set-Content -Path $composer_home\auth.json -Value (Get-MergedAuthJson $composer_auth) | ||||
|     Update-AuthJson $composer_auth | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -159,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') | ||||
| @ -172,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  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -219,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 { | ||||
| @ -259,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)) | ||||
| @ -272,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 | ||||
|  | ||||
| @ -47,7 +47,7 @@ configure_composer() { | ||||
| } | ||||
|  | ||||
| # Function to merge auth.json fragments. | ||||
| get_merged_auth_json() { | ||||
| update_auth_json() { | ||||
|   local auth_file="$composer_home/auth.json" | ||||
|   local merged | ||||
|   [[ -f "$auth_file" ]] && merged=$(<"$auth_file") || merged='{}' | ||||
| @ -62,7 +62,12 @@ get_merged_auth_json() { | ||||
|       end | ||||
|     ') | ||||
|   done | ||||
|   printf '%s' "$merged" | ||||
|   printf '%s' "$merged" > "$composer_home/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/'  | ||||
| } | ||||
|  | ||||
| # Function to setup authentication in composer. | ||||
| @ -78,11 +83,18 @@ set_composer_auth() { | ||||
|   if [ -n "$PACKAGIST_TOKEN" ]; then | ||||
|     composer_auth+=( '"http-basic": {"repo.packagist.com": { "username": "token", "password": "'"$PACKAGIST_TOKEN"'"}}' ) | ||||
|   fi | ||||
|   if [ -n "${GITHUB_TOKEN:-$COMPOSER_TOKEN}" ]; then | ||||
|     composer_auth+=( '"github-oauth": {"github.com": "'"${GITHUB_TOKEN:-$COMPOSER_TOKEN}"'"}' ) | ||||
|   token="${COMPOSER_TOKEN:-$GITHUB_TOKEN}" | ||||
|   if [ -n "$token" ]; then | ||||
|     write_token=true | ||||
|     if [ "$GITHUB_SERVER_URL" != "https://github.com" ]; then | ||||
|       can_access_public_github "$token" || write_token=false | ||||
|     fi | ||||
|     if [ "$write_token" = 'true' ]; then | ||||
|       composer_auth+=( '"github-oauth": {"github.com": "'"$token"'"}' ) | ||||
|     fi | ||||
|   fi | ||||
|   if ((${#composer_auth[@]})); then | ||||
|     get_merged_auth_json "${composer_auth[@]}" | tee "$composer_home/auth.json" >/dev/null | ||||
|     update_auth_json "${composer_auth[@]}" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| @ -96,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 | ||||
| } | ||||
| @ -155,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 | ||||
| } | ||||
|  | ||||
| @ -188,8 +200,12 @@ add_tool() { | ||||
|     elif [ -e /tmp/"$tool" ]; then | ||||
|       sudo cp -a /tmp/"$tool" "$tool_path" | ||||
|     fi | ||||
|     if [ "$status_code" = "404" ]; then | ||||
|       add_log "$cross" "$tool" "Failed to download $tool from ${url[*]}" | ||||
|     else | ||||
|       add_log "$cross" "$tool" "Could not setup $tool" | ||||
|     fi | ||||
|   fi | ||||
| } | ||||
|  | ||||
| # Function to setup a tool using composer in a different scope. | ||||
| @ -202,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/master/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 | ||||
| } | ||||
|  | ||||
| @ -59,17 +59,21 @@ update_lists() { | ||||
|     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 | ||||
|     update_lists_helper "$list"  | ||||
|     echo '' | tee "$status_file"  | ||||
|   fi | ||||
| } | ||||
|  | ||||
| # Function to get fingerprint from an Ubuntu PPA. | ||||
| ubuntu_fingerprint() { | ||||
|   ppa=$1 | ||||
|   get -s -n "" "${lp_api[@]/%//~${ppa%/*}/+archive/${ppa##*/}}" | jq -r '.signing_key_fingerprint' | ||||
|   ppa="$1" | ||||
|   ppa_uri="~${ppa%/*}/+archive/ubuntu/${ppa##*/}" | ||||
|   get -s -n "" "${lp_api[0]}/$ppa_uri" | jq -er '.signing_key_fingerprint' 2>/dev/null \ | ||||
|   || get -s -n "" "${lp_api[1]}/$ppa_uri" | jq -er '.signing_key_fingerprint' 2>/dev/null \ | ||||
|   || get -s -n "" "$ppa_sp/keys/$ppa.fingerprint" | ||||
| } | ||||
|  | ||||
|  | ||||
| # Function to get fingerprint from a Debian PPA. | ||||
| debian_fingerprint() { | ||||
|   ppa=$1 | ||||
| @ -93,9 +97,10 @@ add_key() { | ||||
|     sks_params="op=get&options=mr&exact=on&search=0x$fingerprint" | ||||
|     key_urls=("${sks[@]/%/\/pks\/lookup\?"$sks_params"}") | ||||
|   fi | ||||
|   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" | ||||
|     sudo gpg --batch --yes --dearmor "$key_file"  && sudo mv "$key_file".gpg "$key_file" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| @ -130,7 +135,7 @@ add_list() { | ||||
|     [ -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 >/dev/null 2>&1 | ||||
|     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 | ||||
|  | ||||
| @ -29,12 +29,12 @@ 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', '')" | ||||
|   printf "$env:GROUP\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" "protoc" "Click to read the protoc related license information" | ||||
|   Write-Output (Invoke-WebRequest https://raw.githubusercontent.com/protocolbuffers/protobuf/master/LICENSE).Content | ||||
|   Write-Output (Invoke-WebRequest https://raw.githubusercontent.com/protocolbuffers/protobuf/main/LICENSE).Content | ||||
|   Write-Output "$env:END_GROUP" | ||||
| } | ||||
|  | ||||
| @ -22,9 +22,9 @@ 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/master/LICENSE | ||||
|   curl "${curl_opts[@]:?}" https://raw.githubusercontent.com/protocolbuffers/protobuf/main/LICENSE | ||||
|   echo "$END_GROUP" | ||||
| } | ||||
|  | ||||
| @ -4,8 +4,8 @@ Function Add-Symfony() { | ||||
|     $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 >$null 2>&1 | ||||
|   Expand-Archive -Path $bin_dir\symfony.zip -DestinationPath $bin_dir -Force >$null 2>&1 | ||||
|   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" | ||||
|  | ||||
| @ -29,7 +29,7 @@ add_symfony_helper() { | ||||
| } | ||||
|  | ||||
| add_symfony() { | ||||
|   add_symfony_helper >/dev/null 2>&1 | ||||
|   add_symfony_helper  | ||||
|   symfony_path="$(command -v symfony)" | ||||
|   if [[ -n "$symfony_path" ]]; then | ||||
|     sudo ln -s "$symfony_path" "${tool_path_dir:?}"/symfony-cli | ||||
|  | ||||
| @ -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 | ||||
| @ -145,7 +145,7 @@ get() { | ||||
|       status_code=$(sudo curl -w "%{http_code}" -o "$file_path" "${curl_opts[@]}" "$link") | ||||
|       [ "$status_code" = "200" ] && break | ||||
|     done | ||||
|     [ "$execute" = "-e" ] && sudo chmod a+x "$file_path" | ||||
|     [[ "$execute" = "-e" && -e "$file_path" ]] && sudo chmod a+x "$file_path" | ||||
|     [ "$mode" = "-v" ] && echo "$status_code" | ||||
|     [ "$runner" = "self-hosted" ] && release_lock "$lock_path" | ||||
|   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 | ||||
| @ -244,10 +244,12 @@ configure_php() { | ||||
|   add_php_config | ||||
|   ini_config_dir="${src:?}"/configs/ini | ||||
|   ini_config_files=("$ini_config_dir"/php.ini) | ||||
|   jit_config_files=("$ini_config_dir"/jit.ini) | ||||
|   arch="$(uname -m)" | ||||
|   [[ "$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') | ||||
| } | ||||
|  | ||||
							
								
								
									
										32
									
								
								src/tools.ts
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/tools.ts
									
									
									
									
									
								
							| @ -1,5 +1,6 @@ | ||||
| import path from 'path'; | ||||
| import fs from 'fs'; | ||||
| import * as cv from 'compare-versions'; | ||||
| import * as fetch from './fetch'; | ||||
| import * as packagist from './packagist'; | ||||
| import * as utils from './utils'; | ||||
| @ -20,6 +21,11 @@ interface IRef { | ||||
|  * @param data | ||||
|  */ | ||||
| export async function getSemverVersion(data: RS): Promise<string> { | ||||
|   const fixSemver = (t: string): string => { | ||||
|     if (/^\d+\.\d+\.\d+(-|$)/.test(t)) return t; | ||||
|     const m = t.match(/^(\d+\.\d+\.\d+)([A-Za-z]+[0-9A-Za-z.]+)$/); | ||||
|     return m ? `${m[1]}-${m[2]}` : t; | ||||
|   }; | ||||
|   const search: string = data['version_prefix'] + data['version']; | ||||
|   const url = `https://api.github.com/repos/${data['repository']}/git/matching-refs/tags%2F${search}.`; | ||||
|   const github_token: string = | ||||
| @ -30,10 +36,24 @@ export async function getSemverVersion(data: RS): Promise<string> { | ||||
|     data['error'] = response.error ?? `No version found with prefix ${search}.`; | ||||
|     return data['version']; | ||||
|   } else { | ||||
|     const refs = JSON.parse(response['data']).reverse(); | ||||
|     const ref = refs.find((i: IRef) => /.*\d+.\d+.\d+$/.test(i['ref'])); | ||||
|     const tag: string = (ref || refs[0])['ref'].split('/').pop(); | ||||
|     return tag.replace(/^v(\d)/, '$1'); | ||||
|     const refs: IRef[] = JSON.parse(response['data']); | ||||
|     const tags = refs | ||||
|       .map((i: IRef) => (i.ref?.split('/').pop() ?? '').replace(/^v(?=\d)/, '')) | ||||
|       .filter((t: string) => t.length > 0); | ||||
|     const fixedToOriginal = new Map<string, string>(); | ||||
|     const fixed = tags.map(t => { | ||||
|       const f = fixSemver(t); | ||||
|       fixedToOriginal.set(f, t); | ||||
|       return f; | ||||
|     }); | ||||
|     fixed.sort((a, b) => { | ||||
|       try { | ||||
|         return cv.compareVersions(b, a); | ||||
|       } catch { | ||||
|         return b.localeCompare(a, 'en', {numeric: true, sensitivity: 'base'}); | ||||
|       } | ||||
|     }); | ||||
|     return fixedToOriginal.get(fixed[0]) ?? fixed[0]; | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -263,13 +283,15 @@ export async function addComposer(data: RS): Promise<string> { | ||||
|   const github = data['github']; | ||||
|   const getcomposer = data['domain']; | ||||
|   const cds = 'https://dl.cloudsmith.io'; | ||||
|   const spc = 'https://artifacts.setup-php.com'; | ||||
|   const filename = `composer-${data['php_version']}-${channel}.phar`; | ||||
|   const releases_url = `${github}/shivammathur/composer-cache/releases/latest/download/${filename}`; | ||||
|   const cds_url = `${cds}/public/shivammathur/composer-cache/raw/files/${filename}`; | ||||
|   const spc_url = `${spc}/composer/${filename}`; | ||||
|   const lts_url = `${getcomposer}/download/latest-2.2.x/composer.phar`; | ||||
|   const is_lts = /^5\.[3-6]$|^7\.[0-1]$/.test(data['php_version']); | ||||
|   const version_source_url = `${getcomposer}/composer-${channel}.phar`; | ||||
|   let cache_url = `${releases_url},${cds_url}`; | ||||
|   let cache_url = `${releases_url},${spc_url},${cds_url}`; | ||||
|   let source_url = `${getcomposer}/composer.phar`; | ||||
|   switch (true) { | ||||
|     case /^snapshot$/.test(channel): | ||||
|  | ||||
| @ -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
	