mirror of
https://github.com/shivammathur/setup-php.git
synced 2026-10-15 20:06:58 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a89ae6dd6 | ||
|
|
b828e3206e | ||
|
|
c463b1d02f | ||
|
|
db75472672 | ||
|
|
40d4c7a0d3 | ||
|
|
f5a207e3fa | ||
|
|
11b9f9a7f0 | ||
|
|
f1477a078f | ||
|
|
0534f032be |
No files matched your search
@@ -23,7 +23,7 @@ jobs:
|
|||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5', '8.6', '8.7']
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5', '8.6', '8.7']
|
||||||
steps:
|
steps:
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # v2
|
uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # v2
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
tools: none
|
tools: none
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Setup cache environment
|
- name: Setup cache environment
|
||||||
id: cache-env
|
id: cache-env
|
||||||
uses: shivammathur/cache-extensions@de3c642a5fce0ef91581a1c9831e229f525196d6 # v1
|
uses: shivammathur/cache-extensions@22e24453af1bf3851994136f122ce065ab828a74 # v1
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions || env.default-php-version }}
|
php-version: ${{ matrix.php-versions || env.default-php-version }}
|
||||||
extensions: ${{ env.extensions }}
|
extensions: ${{ env.extensions }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as config from '../src/config';
|
import * as config from '../src/config.js';
|
||||||
|
|
||||||
describe('Config tests', () => {
|
describe('Config tests', () => {
|
||||||
it.each`
|
it.each`
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import * as core from '../src/core';
|
import {jest} from '@jest/globals';
|
||||||
|
import * as core from '../src/core.js';
|
||||||
|
|
||||||
describe('Core tests', () => {
|
describe('Core tests', () => {
|
||||||
const originalEnv = process.env;
|
const originalEnv = process.env;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import * as coverage from '../src/coverage';
|
import * as coverage from '../src/coverage.js';
|
||||||
|
|
||||||
describe('Config tests', () => {
|
describe('Config tests', () => {
|
||||||
it.each`
|
it.each`
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as extensions from '../src/extensions';
|
import * as extensions from '../src/extensions.js';
|
||||||
|
|
||||||
describe('Extension tests', () => {
|
describe('Extension tests', () => {
|
||||||
it.each`
|
it.each`
|
||||||
|
|||||||
+17
-5
@@ -1,6 +1,19 @@
|
|||||||
import * as fetch from '../src/fetch';
|
import * as fetch from '../src/fetch.js';
|
||||||
import nock from 'nock';
|
import nock from 'nock';
|
||||||
|
|
||||||
|
beforeAll(() => nock.disableNetConnect());
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
const pending = nock.pendingMocks();
|
||||||
|
nock.cleanAll();
|
||||||
|
expect(pending).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
nock.enableNetConnect();
|
||||||
|
nock.restore();
|
||||||
|
});
|
||||||
|
|
||||||
it('checking fetch', async () => {
|
it('checking fetch', async () => {
|
||||||
const host_url = 'https://example.com';
|
const host_url = 'https://example.com';
|
||||||
const manifest_url = host_url + '/manifest';
|
const manifest_url = host_url + '/manifest';
|
||||||
@@ -9,9 +22,8 @@ it('checking fetch', async () => {
|
|||||||
nock(host_url)
|
nock(host_url)
|
||||||
.get('/manifest')
|
.get('/manifest')
|
||||||
.reply(200, {latest: 'latest'})
|
.reply(200, {latest: 'latest'})
|
||||||
.get('/manifest', '', {
|
.get('/manifest')
|
||||||
reqheaders: {authorization: 'Bearer invalid_token'}
|
.matchHeader('authorization', 'Bearer invalid_token')
|
||||||
})
|
|
||||||
.reply(401, {error: '401: Unauthorized'})
|
.reply(401, {error: '401: Unauthorized'})
|
||||||
.get('/ping')
|
.get('/ping')
|
||||||
.twice()
|
.twice()
|
||||||
@@ -36,7 +48,7 @@ it('checking fetch', async () => {
|
|||||||
expect(response.data).toBe(undefined);
|
expect(response.data).toBe(undefined);
|
||||||
|
|
||||||
response = await fetch.fetch(manifest_url, 'invalid_token');
|
response = await fetch.fetch(manifest_url, 'invalid_token');
|
||||||
expect(response.error).not.toBe(undefined);
|
expect(response.error).toBe('401: Unauthorized');
|
||||||
expect(response.data).toBe(undefined);
|
expect(response.data).toBe(undefined);
|
||||||
|
|
||||||
response = await fetch.fetch(host_url + '/error');
|
response = await fetch.fetch(host_url + '/error');
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import * as install from '../src/install';
|
import {jest} from '@jest/globals';
|
||||||
import * as utils from '../src/utils';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mock install.ts
|
* Mock install.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/install', () => ({
|
jest.unstable_mockModule('../src/install.js', () => ({
|
||||||
getScript: jest
|
getScript: jest
|
||||||
.fn()
|
.fn<typeof import('../src/install.js').getScript>()
|
||||||
.mockImplementation(async (os: string): Promise<string> => {
|
.mockImplementation(async (os: string): Promise<string> => {
|
||||||
const filename = os + (await utils.scriptExtension(os));
|
const filename = os + (await utils.scriptExtension(os));
|
||||||
const version: string = await utils.parseVersion(
|
const version: string = await utils.parseVersion(
|
||||||
@@ -36,7 +35,7 @@ jest.mock('../src/install', () => ({
|
|||||||
/**
|
/**
|
||||||
* Mock fetch.ts
|
* Mock fetch.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/fetch', () => ({
|
jest.unstable_mockModule('../src/fetch.js', () => ({
|
||||||
fetch: jest.fn().mockImplementation(() => {
|
fetch: jest.fn().mockImplementation(() => {
|
||||||
return {
|
return {
|
||||||
data: '{ "latest": "8.3", "lowest": "8.1", "highest": "8.3", "nightly": "8.4", "5.x": "5.6" }'
|
data: '{ "latest": "8.3", "lowest": "8.1", "highest": "8.3", "nightly": "8.4", "5.x": "5.6" }'
|
||||||
@@ -44,6 +43,9 @@ jest.mock('../src/fetch', () => ({
|
|||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const utils = await import('../src/utils.js');
|
||||||
|
const install = await import('../src/install.js');
|
||||||
|
|
||||||
describe('Install', () => {
|
describe('Install', () => {
|
||||||
it.each`
|
it.each`
|
||||||
version | os | extension_csv | ini_file | ini_values_csv | coverage_driver | tools | output
|
version | os | extension_csv | ini_file | ini_values_csv | coverage_driver | tools | output
|
||||||
|
|||||||
@@ -1,6 +1,19 @@
|
|||||||
import * as packagist from '../src/packagist';
|
import * as packagist from '../src/packagist.js';
|
||||||
import nock from 'nock';
|
import nock from 'nock';
|
||||||
|
|
||||||
|
beforeAll(() => nock.disableNetConnect());
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
const pending = nock.pendingMocks();
|
||||||
|
nock.cleanAll();
|
||||||
|
expect(pending).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
nock.enableNetConnect();
|
||||||
|
nock.restore();
|
||||||
|
});
|
||||||
|
|
||||||
describe('search function', () => {
|
describe('search function', () => {
|
||||||
const mockResponse = {
|
const mockResponse = {
|
||||||
packages: {
|
packages: {
|
||||||
|
|||||||
+74
-51
@@ -1,6 +1,6 @@
|
|||||||
import * as fs from 'fs';
|
import {jest} from '@jest/globals';
|
||||||
import * as tools from '../src/tools';
|
import fs from 'fs';
|
||||||
import {ToolData, ToolInput} from '../src/tools';
|
import type {ToolData, ToolInput} from '../src/tools.js';
|
||||||
|
|
||||||
function getData(data: Partial<ToolData>): ToolData {
|
function getData(data: Partial<ToolData>): ToolData {
|
||||||
const tool = data.tool || 'tool';
|
const tool = data.tool || 'tool';
|
||||||
@@ -40,9 +40,9 @@ function unsetComposerAuthEnv(): void {
|
|||||||
/**
|
/**
|
||||||
* Mock fetch.ts
|
* Mock fetch.ts
|
||||||
*/
|
*/
|
||||||
jest.mock('../src/fetch', () => ({
|
jest.unstable_mockModule('../src/fetch.js', () => ({
|
||||||
fetch: jest
|
fetch: jest
|
||||||
.fn()
|
.fn<typeof import('../src/fetch.js').fetch>()
|
||||||
.mockImplementation(
|
.mockImplementation(
|
||||||
async (url: string, token?: string): Promise<Record<string, string>> => {
|
async (url: string, token?: string): Promise<Record<string, string>> => {
|
||||||
if (url.includes('deployer')) {
|
if (url.includes('deployer')) {
|
||||||
@@ -86,9 +86,9 @@ jest.mock('../src/fetch', () => ({
|
|||||||
)
|
)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
jest.mock('../src/packagist', () => ({
|
jest.unstable_mockModule('../src/packagist.js', () => ({
|
||||||
search: jest
|
search: jest
|
||||||
.fn()
|
.fn<typeof import('../src/packagist.js').search>()
|
||||||
.mockImplementation(
|
.mockImplementation(
|
||||||
async (
|
async (
|
||||||
package_name: string,
|
package_name: string,
|
||||||
@@ -102,6 +102,10 @@ jest.mock('../src/packagist', () => ({
|
|||||||
)
|
)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const tools = await import('../src/tools.js');
|
||||||
|
|
||||||
|
afterEach(() => jest.restoreAllMocks());
|
||||||
|
|
||||||
describe('Tools tests', () => {
|
describe('Tools tests', () => {
|
||||||
it.each`
|
it.each`
|
||||||
token | version
|
token | version
|
||||||
@@ -381,6 +385,56 @@ describe('Tools tests', () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
it.each`
|
||||||
|
release | resolved
|
||||||
|
${'phpstan'} | ${'latest/download'}
|
||||||
|
${'phpstan:0.12.68'} | ${'download/0.12.68'}
|
||||||
|
${'phpstan:^0.12.68'} | ${'download/0.12.68'}
|
||||||
|
${'phpstan:0.12'} | ${'download/1.2.3'}
|
||||||
|
${'phpstan:0.12.x'} | ${'download/1.2.3'}
|
||||||
|
${'phpstan:0.12.*'} | ${'download/1.2.3'}
|
||||||
|
`(
|
||||||
|
'resolving PHPStan PHAR fallback for $release',
|
||||||
|
async ({release, resolved}) => {
|
||||||
|
unsetComposerAuthEnv();
|
||||||
|
for (const os of ['linux', 'darwin', 'win32']) {
|
||||||
|
const data = await tools.getData(release, '8.0', os);
|
||||||
|
const script = await tools.addPackage(data);
|
||||||
|
expect(script).toContain(
|
||||||
|
'scoped https://github.com/phpstan/phpstan/releases/' +
|
||||||
|
resolved +
|
||||||
|
'/phpstan.phar "-V"'
|
||||||
|
);
|
||||||
|
expect(data.type).toBe('composer');
|
||||||
|
expect(data.release).toContain('phpstan');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
it('keeps Composer available when the fallback version lookup fails', async () => {
|
||||||
|
process.env['GITHUB_TOKEN'] = 'invalid_token';
|
||||||
|
const data = await tools.getData('phpstan:0.12', '8.0', 'linux');
|
||||||
|
expect(await tools.addPackage(data)).toBe(
|
||||||
|
'add_composer_tool phpstan "phpstan:0.12.*" phpstan/ scoped'
|
||||||
|
);
|
||||||
|
unsetComposerAuthEnv();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses fallback settings independently of the Composer repository', async () => {
|
||||||
|
const data = await tools.getData('vendor/tool:1.2.3', '8.0', 'linux', {
|
||||||
|
fallback: {
|
||||||
|
type: 'phar',
|
||||||
|
repository: 'releases/tool',
|
||||||
|
domain: 'https://example.com',
|
||||||
|
extension: '.phar',
|
||||||
|
version_prefix: 'v'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
expect(await tools.addPackage(data)).toBe(
|
||||||
|
'add_composer_tool tool tool:1.2.3 vendor/ global https://example.com/releases/tool/v1.2.3/tool.phar ""'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it.each`
|
it.each`
|
||||||
version | php_version | os | script
|
version | php_version | os | script
|
||||||
${'latest'} | ${'8.0'} | ${'linux'} | ${'add_tool https://github.com/phar-io/phive/releases/download/3.2.1/phive-3.2.1.phar phive'}
|
${'latest'} | ${'8.0'} | ${'linux'} | ${'add_tool https://github.com/phar-io/phive/releases/download/3.2.1/phive-3.2.1.phar phive'}
|
||||||
@@ -527,30 +581,11 @@ describe('Tools tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('checking affected composer version with CRLF ranges', async () => {
|
it('checking affected composer version with CRLF ranges', async () => {
|
||||||
let affected = false;
|
jest
|
||||||
let fixed = true;
|
.spyOn(fs, 'readFileSync')
|
||||||
await jest.isolateModulesAsync(async () => {
|
.mockReturnValue('1.0.0-0 1.10.28\r\n2.0.0-0 2.2.28\r\n2.3.0-0 2.9.8');
|
||||||
jest.doMock('fs', () => ({
|
expect(tools.skipGitHubAuthForComposerVersion('2.9.7')).toBe(true);
|
||||||
...jest.requireActual('fs'),
|
expect(tools.skipGitHubAuthForComposerVersion('2.9.8')).toBe(false);
|
||||||
readFileSync: (
|
|
||||||
filePath: fs.PathOrFileDescriptor,
|
|
||||||
options?: unknown
|
|
||||||
) => {
|
|
||||||
if (String(filePath).includes('composer-gh-auth-no-op')) {
|
|
||||||
return '1.0.0-0 1.10.28\r\n2.0.0-0 2.2.28\r\n2.3.0-0 2.9.8';
|
|
||||||
}
|
|
||||||
return (jest.requireActual('fs') as typeof fs).readFileSync(
|
|
||||||
filePath,
|
|
||||||
options as fs.ObjectEncodingOptions & {flag?: string}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
const isolatedTools = jest.requireActual<typeof tools>('../src/tools');
|
|
||||||
affected = isolatedTools.skipGitHubAuthForComposerVersion('2.9.7');
|
|
||||||
fixed = isolatedTools.skipGitHubAuthForComposerVersion('2.9.8');
|
|
||||||
});
|
|
||||||
expect(affected).toBe(true);
|
|
||||||
expect(fixed).toBe(false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each`
|
it.each`
|
||||||
@@ -655,7 +690,7 @@ describe('Tools tests', () => {
|
|||||||
'add_tool https://github.com/humbug/php-scoper/releases/latest/download/php-scoper.phar php-scoper "--version"',
|
'add_tool https://github.com/humbug/php-scoper/releases/latest/download/php-scoper.phar php-scoper "--version"',
|
||||||
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
'add_tool https://github.com/phpDocumentor/phpDocumentor/releases/latest/download/phpDocumentor.phar phpDocumentor "--version"',
|
||||||
'add_composer_tool phplint phplint overtrue/',
|
'add_composer_tool phplint phplint overtrue/',
|
||||||
'add_tool https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar phpstan "-V"',
|
'add_composer_tool phpstan phpstan phpstan/ scoped',
|
||||||
'add_tool https://phar.phpunit.de/phpunit-7.4.0.phar,https://phar.phpunit.de/phpunit-7.phar phpunit "--version"',
|
'add_tool https://phar.phpunit.de/phpunit-7.4.0.phar,https://phar.phpunit.de/phpunit-7.phar phpunit "--version"',
|
||||||
'add_pecl',
|
'add_pecl',
|
||||||
'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"',
|
'add_tool https://www.phing.info/get/phing-latest.phar phing "-v"',
|
||||||
@@ -948,26 +983,14 @@ describe('Tools tests', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let result: string = '';
|
const readFileSync = fs.readFileSync;
|
||||||
await jest.isolateModulesAsync(async () => {
|
jest.spyOn(fs, 'readFileSync').mockImplementation((filePath, options) => {
|
||||||
jest.doMock('fs', () => ({
|
if (String(filePath).includes('tools.json')) {
|
||||||
...jest.requireActual('fs'),
|
return brokenToolsJson;
|
||||||
readFileSync: (
|
}
|
||||||
filePath: fs.PathOrFileDescriptor,
|
return readFileSync(filePath, options);
|
||||||
options?: unknown
|
|
||||||
) => {
|
|
||||||
if (String(filePath).includes('tools.json')) {
|
|
||||||
return brokenToolsJson;
|
|
||||||
}
|
|
||||||
return (jest.requireActual('fs') as typeof fs).readFileSync(
|
|
||||||
filePath,
|
|
||||||
options as fs.ObjectEncodingOptions & {flag?: string}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
const isolatedTools = jest.requireActual<typeof tools>('../src/tools');
|
|
||||||
result = await isolatedTools.addTools('broken-tool', '7.4', 'linux');
|
|
||||||
});
|
});
|
||||||
|
const result = await tools.addTools('broken-tool', '7.4', 'linux');
|
||||||
|
|
||||||
expect(result).toContain(
|
expect(result).toContain(
|
||||||
'add_log "$cross" "broken-tool" "broken-tool has no function defined. Please report this issue."'
|
'add_log "$cross" "broken-tool" "broken-tool has no function defined. Please report this issue."'
|
||||||
|
|||||||
+16
-8
@@ -1,8 +1,13 @@
|
|||||||
|
import {fileURLToPath} from 'url';
|
||||||
|
import {jest} from '@jest/globals';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as utils from '../src/utils';
|
const fetchMock = jest.fn<typeof import('../src/fetch.js').fetch>();
|
||||||
import * as fetchModule from '../src/fetch';
|
jest.unstable_mockModule('../src/fetch.js', () => ({fetch: fetchMock}));
|
||||||
|
const utils = await import('../src/utils.js');
|
||||||
|
|
||||||
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
describe('Utils tests', () => {
|
describe('Utils tests', () => {
|
||||||
it('checking readEnv', async () => {
|
it('checking readEnv', async () => {
|
||||||
@@ -40,9 +45,9 @@ describe('Utils tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('checking parseVersion', async () => {
|
it('checking parseVersion', async () => {
|
||||||
const fetchSpy = jest.spyOn(fetchModule, 'fetch').mockResolvedValue({
|
const fetchSpy = fetchMock.mockResolvedValue({
|
||||||
data: fs.readFileSync(
|
data: fs.readFileSync(
|
||||||
path.join(__dirname, '../src/configs/php-versions.json'),
|
path.join(dirname, '../src/configs/php-versions.json'),
|
||||||
'utf8'
|
'utf8'
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
@@ -53,6 +58,9 @@ describe('Utils tests', () => {
|
|||||||
expect(await utils.parseVersion('8.7.0')).toBe('8.7');
|
expect(await utils.parseVersion('8.7.0')).toBe('8.7');
|
||||||
expect(await utils.parseVersion('7')).toBe('7.0');
|
expect(await utils.parseVersion('7')).toBe('7.0');
|
||||||
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
expect(await utils.parseVersion('7.4')).toBe('7.4');
|
||||||
|
expect(await utils.parseVersion('8.10')).toBe('8.10');
|
||||||
|
expect(await utils.parseVersion('10')).toBe('10.0');
|
||||||
|
expect(await utils.parseVersion('10.0')).toBe('10.0');
|
||||||
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
expect(await utils.parseVersion('5.x')).toBe('5.6');
|
||||||
expect(await utils.parseVersion('pre')).toBe('pre');
|
expect(await utils.parseVersion('pre')).toBe('pre');
|
||||||
expect(await utils.parseVersion('pre-installed')).toBe('pre');
|
expect(await utils.parseVersion('pre-installed')).toBe('pre');
|
||||||
@@ -324,8 +332,8 @@ describe('Utils tests', () => {
|
|||||||
"Could not find '.phpenv-version' file."
|
"Could not find '.phpenv-version' file."
|
||||||
);
|
);
|
||||||
|
|
||||||
const existsSync = jest.spyOn(fs, 'existsSync').mockImplementation();
|
const existsSync = jest.spyOn(fs, 'existsSync').mockReturnValue(false);
|
||||||
const readFileSync = jest.spyOn(fs, 'readFileSync').mockImplementation();
|
const readFileSync = jest.spyOn(fs, 'readFileSync').mockReturnValue('');
|
||||||
|
|
||||||
existsSync.mockReturnValue(true);
|
existsSync.mockReturnValue(true);
|
||||||
readFileSync.mockReturnValue('8.1');
|
readFileSync.mockReturnValue('8.1');
|
||||||
@@ -391,8 +399,8 @@ describe('Utils tests', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('readPHPVersion rejects unsupported values from each source', async () => {
|
it('readPHPVersion rejects unsupported values from each source', async () => {
|
||||||
const existsSync = jest.spyOn(fs, 'existsSync').mockImplementation();
|
const existsSync = jest.spyOn(fs, 'existsSync').mockReturnValue(false);
|
||||||
const readFileSync = jest.spyOn(fs, 'readFileSync').mockImplementation();
|
const readFileSync = jest.spyOn(fs, 'readFileSync').mockReturnValue('');
|
||||||
|
|
||||||
process.env['php-version'] = '$0';
|
process.env['php-version'] = '$0';
|
||||||
await expect(utils.readPHPVersion()).rejects.toThrow('php-version input');
|
await expect(utils.readPHPVersion()).rejects.toThrow('php-version input');
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1 +1 @@
|
|||||||
(()=>{var e={472:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var s=Object.getOwnPropertyDescriptor(t,r);if(!s||("get"in s?!t.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,s)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),i=0;i<r.length;i++)if(r[i]!=="default")n(t,e,r[i]);s(t,e);return t}}();Object.defineProperty(t,"__esModule",{value:true});t.addINIValuesUnix=addINIValuesUnix;t.addINIValuesWindows=addINIValuesWindows;t.addINIValues=addINIValues;const o=i(r(277));async function addINIValuesUnix(e){const t=await o.CSVArray(e);let r="";await o.asyncForEach(t,async function(e){r+="\n"+await o.addLog("$tick",e,"Added to php.ini","linux")});return'echo "'+t.map(e=>o.escapeForShell(e,"linux")).join("\n")+'" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1'+r}async function addINIValuesWindows(e){const t=await o.CSVArray(e);let r="\n";await o.asyncForEach(t,async function(e){r+=await o.addLog("$tick",e,"Added to php.ini","win32")+"\n"});return'Add-Content "$php_dir\\php.ini" "'+t.map(e=>o.escapeForShell(e,"win32")).join("\n")+'"'+r}async function addINIValues(e,t,r=false){let n="\n";switch(r){case true:n+=await o.stepLog("Add php.ini values",t)+await o.suppressOutput(t)+"\n";break;case false:default:n+=await o.stepLog("Add php.ini values",t)+"\n";break}switch(t){case"win32":return n+await addINIValuesWindows(e);case"darwin":case"linux":return n+await addINIValuesUnix(e);default:return await o.log("Platform "+t+" is not supported",t,"error")}}},469:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.issueCommand=issueCommand;t.error=error;t.setFailed=setFailed;t.getInput=getInput;const n=r(857);function toCommandValue(e){if(e instanceof Error){return e.toString()}return e}function escapeData(e){return toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return e.replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}function issueCommand(e,t,r){let s=`::${e}`;if(t&&Object.keys(t).length>0){s+=" ";const e=Object.entries(t).filter(([,e])=>e).map(([e,t])=>`${e}=${escapeProperty(t)}`).join(",");s+=e}s+=`::${escapeData(r)}`;process.stdout.write(s+n.EOL)}function error(e){issueCommand("error",{},e)}function setFailed(e){process.exitCode=1;error(e)}function getInput(e,t=false){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&!r){throw new Error(`Input required and not supplied: ${e}`)}return r.trim()}},524:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var s=Object.getOwnPropertyDescriptor(t,r);if(!s||("get"in s?!t.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,s)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),i=0;i<r.length;i++)if(r[i]!=="default")n(t,e,r[i]);s(t,e);return t}}();Object.defineProperty(t,"__esModule",{value:true});t.checkXdebugError=checkXdebugError;t.addCoverageXdebug=addCoverageXdebug;t.addCoveragePCOV=addCoveragePCOV;t.disableCoverage=disableCoverage;t.addCoverage=addCoverage;const o=i(r(277));const a=i(r(252));const c=i(r(472));async function checkXdebugError(e,t){if(/^5\.[3-6]$|^7\.[0-1]$/.test(t)&&e=="xdebug3"||/^8\.[0-9]$/.test(t)&&e=="xdebug2"){return e+" is not supported on PHP "+t}return""}async function addCoverageXdebug(e,t,r,n){let s="\n";const i=await checkXdebugError(e,t);if(!i){s+=await a.addExtension(":pcov:false",t,r,true)+n;e=e=="xdebug3"?"xdebug":e;s+=await a.addExtension(e,t,r,true)+n;s+=await o.setVariable("xdebug_version","php -r \"echo phpversion('xdebug');\"",r);s+=await o.getCommand(r,"extension_log")+'xdebug "Xdebug $xdebug_version enabled as coverage driver"'}else{s+=await o.addLog("$cross",e,i,r)}return s}async function addCoveragePCOV(e,t,r){let n="\n";switch(true){default:n+=await a.addExtension(":xdebug:Line truncated
|
import{createRequire as e}from"module";var t={26:function(e,t){(function(e,s){true?s(t):0})(this,function(e){"use strict";const t=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;const validateAndParse=e=>{if(typeof e!=="string"){throw new TypeError("Invalid argument expected string")}const s=e.match(t);if(!s){throw new Error(`Invalid argument not valid semver ('${e}' received)`)}s.shift();return s};const isWildcard=e=>e==="*"||e==="x"||e==="X";const tryParse=e=>{const t=parseInt(e,10);return isNaN(t)?e:t};const forceType=(e,t)=>typeof e!==typeof t?[String(e),String(t)]:[e,t];const compareStrings=(e,t)=>{if(isWildcard(e)||isWildcard(t))return 0;const[s,r]=forceType(tryParse(e),tryParse(t));if(s>r)return 1;if(s<r)return-1;return 0};const compareSegments=(e,t)=>{for(let s=0;s<Math.max(e.length,t.length);s++){const r=compareStrings(e[s]||"0",t[s]||"0");if(r!==0)return r}return 0};const compareVersions=(e,t)=>{const s=validateAndParse(e);const r=validateAndParse(t);const n=s.pop();const i=r.pop();const o=compareSegments(s,r);if(o!==0)return o;if(n&&i){return compareSegments(n.split("."),i.split("."))}else if(n||i){return n?-1:1}return 0};const compare=(e,t,r)=>{assertValidOperator(r);const n=compareVersions(e,t);return s[r].includes(n)};const s={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]};const r=Object.keys(s);const assertValidOperator=e=>{if(typeof e!=="string"){throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`)}if(r.indexOf(e)===-1){throw new Error(`Invalid operator, expected one of ${r.join("|")}`)}};const satisfies=(e,t)=>{t=t.replace(/([><=]+)\s+/g,"$1");if(t.includes("||")){return t.split("||").some(t=>satisfies(e,t))}else if(t.includes(" - ")){const[s,r]=t.split(" - ",2);return satisfies(e,`>=${s} <=${r}`)}else if(t.includes(" ")){return t.trim().replace(/\s{2,}/g," ").split(" ").every(t=>satisfies(e,t))}const s=t.match(/^([<>=~^]+)/);const r=s?s[1]:"=";if(r!=="^"&&r!=="~")return compare(e,t,r);const[n,i,o,,a]=validateAndParse(e);const[c,l,d,,u]=validateAndParse(t);const p=[n,i,o];const f=[c,l!==null&&l!==void 0?l:"x",d!==null&&d!==void 0?d:"x"];if(u){if(!a)return false;if(compareSegments(p,f)!==0)return false;if(compareSegments(a.split("."),u.split("."))===-1)return false}const h=f.findIndex(e=>e!=="0")+1;const w=r==="~"?2:h>1?h:1;if(compareSegments(p.slice(0,w),f.slice(0,w))!==0)return false;if(compareSegments(p.slice(w),f.slice(w))===-1)return false;return true};const validate=e=>typeof e==="string"&&/^[v\d]/.test(e)&&t.test(e);const validateStrict=e=>typeof e==="string"&&/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/.test(e);e.compare=compare;e.compareVersions=compareVersions;e.satisfies=satisfies;e.validate=validate;e.validateStrict=validateStrict})}};var s={};function __nccwpck_require__(e){var r=s[e];if(r!==undefined){return r.exports}var n=s[e]={exports:{}};var i=true;try{t[e].call(n.exports,n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete s[e]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{__nccwpck_require__.d=(e,t)=>{for(var s in t){if(__nccwpck_require__.o(t,s)&&!__nccwpck_require__.o(e,s)){Object.defineProperty(e,s,{enumerable:true,get:t[s]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();var r={};__nccwpck_require__.d(r,{IT:()=>getScript,eF:()=>run,GJ:()=>setEnv});const n=e(import.meta.url)("url");const i=e(import.meta.url)("path");const o=e(import.meta.url)("string_decoder");const a=e(import.meta.url)("os");const c=e(import.meta.url)("events");const l=e(import.meta.url)("child_process");const d=e(import.meta.url)("assert");const u=e(import.meta.url)("fs");var p=undefined&&undefined.__awaiter||function(e,t,s,r){function adopt(e){return e instanceof s?e:new s(function(t){t(e)})}return new(s||(s=Promise))(function(s,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){n(e)}}function step(e){e.done?s(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})};const{chmod:f,copyFile:h,lstat:w,mkdir:m,open:g,readdir:v,rename:y,rm:_,rmdir:x,stat:b,symlink:$,unlink:E}=u.promises;const P=process.platform==="win32";function readlink(e){return p(this,void 0,void 0,function*(){const t=yield fs.promises.readlink(e);if(P&&!t.endsWith("\\")){return`${t}\\`}return t})}const k=268435456;const S=u.constants.O_RDONLY;function exists(e){return p(this,void 0,void 0,function*(){try{yield b(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return p(this,arguments,void 0,function*(e,t=false){const s=t?yieLine truncated
|
||||||
Vendored
+3
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"type": "module"
|
||||||
|
}
|
||||||
+6
-2
@@ -1,11 +1,15 @@
|
|||||||
module.exports = {
|
export default {
|
||||||
clearMocks: true,
|
clearMocks: true,
|
||||||
moduleFileExtensions: ['js', 'ts'],
|
moduleFileExtensions: ['js', 'ts'],
|
||||||
|
extensionsToTreatAsEsm: ['.ts'],
|
||||||
|
moduleNameMapper: {
|
||||||
|
'^(\\.{1,2}/.*)\\.js$': '$1'
|
||||||
|
},
|
||||||
testEnvironment: 'node',
|
testEnvironment: 'node',
|
||||||
testMatch: ['**/*.test.ts'],
|
testMatch: ['**/*.test.ts'],
|
||||||
testRunner: 'jest-circus/runner',
|
testRunner: 'jest-circus/runner',
|
||||||
transform: {
|
transform: {
|
||||||
'^.+\\.ts$': ['ts-jest', {tsconfig: 'tsconfig.test.json'}]
|
'^.+\\.ts$': ['ts-jest', {tsconfig: 'tsconfig.test.json', useESM: true}]
|
||||||
},
|
},
|
||||||
verbose: true,
|
verbose: true,
|
||||||
collectCoverage: true
|
collectCoverage: true
|
||||||
|
|||||||
Generated
+54
-71
@@ -9,7 +9,7 @@
|
|||||||
"version": "2.40.0",
|
"version": "2.40.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/exec": "^2.0.0",
|
"@actions/exec": "^3.0.0",
|
||||||
"compare-versions": "^6.1.1"
|
"compare-versions": "^6.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.1",
|
||||||
"@types/jest": "^30.0.0",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "^26.6.4",
|
"@types/node": "^26.6.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.71.0",
|
"@typescript-eslint/eslint-plugin": "^8.71.1",
|
||||||
"@typescript-eslint/parser": "^8.71.0",
|
"@typescript-eslint/parser": "^8.71.1",
|
||||||
"@typescript/native": "npm:typescript@^7.0.2",
|
"@typescript/native": "npm:typescript@^7.0.2",
|
||||||
"@vercel/ncc": "^0.45.0",
|
"@vercel/ncc": "^0.45.0",
|
||||||
"eslint": "^10.12.0",
|
"eslint": "^10.12.0",
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
"globals": "^17.13.0",
|
"globals": "^17.13.0",
|
||||||
"jest": "^30.5.2",
|
"jest": "^30.5.2",
|
||||||
"jest-circus": "^30.5.2",
|
"jest-circus": "^30.5.2",
|
||||||
"nock": "^14.0.17",
|
"nock": "^15.0.1",
|
||||||
"prettier": "^3.9.9",
|
"prettier": "^3.9.9",
|
||||||
"simple-git-hooks": "^2.14.0",
|
"simple-git-hooks": "^2.14.0",
|
||||||
"ts-jest": "^29.4.14",
|
"ts-jest": "^29.4.14",
|
||||||
@@ -38,18 +38,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/exec": {
|
"node_modules/@actions/exec": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz",
|
||||||
"integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==",
|
"integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/io": "^2.0.0"
|
"@actions/io": "^3.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/io": {
|
"node_modules/@actions/io": {
|
||||||
"version": "2.0.0",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz",
|
||||||
"integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==",
|
"integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
@@ -1344,21 +1344,21 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@mswjs/interceptors": {
|
"node_modules/@mswjs/interceptors": {
|
||||||
"version": "0.41.9",
|
"version": "0.44.0",
|
||||||
"resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.9.tgz",
|
"resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.44.0.tgz",
|
||||||
"integrity": "sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==",
|
"integrity": "sha512-IYHevRStF4ijM20GI9c9Ndhw483NSAjCydQhUr4/zIB0BNLsTVw3vFAxTo6TlvX4QnV60wEHttUa9539TTAq+A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@open-draft/deferred-promise": "^2.2.0",
|
"@open-draft/until": "^3.0.1",
|
||||||
"@open-draft/logger": "^0.3.0",
|
"@types/debug": "^4.1.13",
|
||||||
"@open-draft/until": "^2.0.0",
|
"debug": "^4.4.3",
|
||||||
"is-node-process": "^1.2.0",
|
"is-node-process": "^1.2.0",
|
||||||
"outvariant": "^1.4.3",
|
"outvariant": "^1.4.3",
|
||||||
"strict-event-emitter": "^0.5.1"
|
"rettime": "^0.11.11"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=22"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@napi-rs/wasm-runtime": {
|
"node_modules/@napi-rs/wasm-runtime": {
|
||||||
@@ -1383,31 +1383,16 @@
|
|||||||
"@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
|
"@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@open-draft/deferred-promise": {
|
"node_modules/@open-draft/until": {
|
||||||
"version": "2.2.0",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@open-draft/until/-/until-3.0.1.tgz",
|
||||||
"integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
|
"integrity": "sha512-s7/9ELP4aP9YZtW7RJaa0Xf3RISaRH9+EFN18FtykJYRHGNrl8f9ymvoNXzjhrjmftFvkQudtuDU9RYhk0xs3A==",
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@open-draft/logger": {
|
|
||||||
"version": "0.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz",
|
|
||||||
"integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"funding": {
|
||||||
"is-node-process": "^1.2.0",
|
"url": "https://github.com/sponsors/kettanaito"
|
||||||
"outvariant": "^1.4.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@open-draft/until": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@parcel/watcher": {
|
"node_modules/@parcel/watcher": {
|
||||||
"version": "2.6.0",
|
"version": "2.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
|
||||||
@@ -1809,6 +1794,16 @@
|
|||||||
"@babel/types": "^7.28.2"
|
"@babel/types": "^7.28.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/debug": {
|
||||||
|
"version": "4.1.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz",
|
||||||
|
"integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/ms": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/esrecurse": {
|
"node_modules/@types/esrecurse": {
|
||||||
"version": "4.3.1",
|
"version": "4.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
|
||||||
@@ -1868,6 +1863,13 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/ms": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "26.6.4",
|
"version": "26.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz",
|
||||||
@@ -5046,13 +5048,6 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/json-stringify-safe": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/json5": {
|
"node_modules/json5": {
|
||||||
"version": "2.2.3",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
@@ -5254,18 +5249,16 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/nock": {
|
"node_modules/nock": {
|
||||||
"version": "14.0.17",
|
"version": "15.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/nock/-/nock-14.0.17.tgz",
|
"resolved": "https://registry.npmjs.org/nock/-/nock-15.0.1.tgz",
|
||||||
"integrity": "sha512-EjRr1weMa4ALQX35AgZTEnP+weJJjlW1KGDiNM2IQC2069YDHas4f4B4UUYR+TTLyKWxJvOz2wObDKQs/LNreA==",
|
"integrity": "sha512-Mjx5Xl4t9vP13eUZPWqwwpjjXNjvhUTo1qTdryVM3+7t6Z2w6WHZ9GVZk/zQ8Ym1vbmloWaglye3cloyHAJ8FA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mswjs/interceptors": "^0.41.0",
|
"@mswjs/interceptors": "^0.44.0"
|
||||||
"json-stringify-safe": "^5.0.1",
|
|
||||||
"propagate": "^2.0.0"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.20.0 <20 || >=20.12.1"
|
"node": ">=20.12.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-addon-api": {
|
"node_modules/node-addon-api": {
|
||||||
@@ -5631,16 +5624,6 @@
|
|||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/propagate": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/punycode": {
|
"node_modules/punycode": {
|
||||||
"version": "2.3.1",
|
"version": "2.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
||||||
@@ -5731,6 +5714,13 @@
|
|||||||
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
|
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/rettime": {
|
||||||
|
"version": "0.11.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/rettime/-/rettime-0.11.12.tgz",
|
||||||
|
"integrity": "sha512-5ExtR1ppiDBQkVoPw5NAqdbfH4Iq2VOmQKHMtUoaFxA9bo2krzFYBtyq6K40xxbYp+2w/YOr6D+1ToF6tTN53A==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.8.5",
|
"version": "7.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
|
||||||
@@ -5838,13 +5828,6 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/strict-event-emitter": {
|
|
||||||
"version": "0.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
|
|
||||||
"integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/string-length": {
|
"node_modules/string-length": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
|
||||||
|
|||||||
+9
-7
@@ -3,6 +3,7 @@
|
|||||||
"version": "2.40.0",
|
"version": "2.40.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Setup PHP for use with GitHub Actions",
|
"description": "Setup PHP for use with GitHub Actions",
|
||||||
|
"type": "module",
|
||||||
"main": "lib/install.js",
|
"main": "lib/install.js",
|
||||||
"types": "lib/install.d.ts",
|
"types": "lib/install.d.ts",
|
||||||
"directories": {
|
"directories": {
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
"format-check": "prettier --check **/src/*.ts **/__tests__/*.ts",
|
"format-check": "prettier --check **/src/*.ts **/__tests__/*.ts",
|
||||||
"release": "ncc build -m -o dist && git add -f dist/",
|
"release": "ncc build -m -o dist && git add -f dist/",
|
||||||
"typecheck": "tsc --project tsconfig.test.json --noEmit",
|
"typecheck": "tsc --project tsconfig.test.json --noEmit",
|
||||||
"test": "jest"
|
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
"author": "shivammathur",
|
"author": "shivammathur",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/exec": "^2.0.0",
|
"@actions/exec": "^3.0.0",
|
||||||
"compare-versions": "^6.1.1"
|
"compare-versions": "^6.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -43,8 +44,8 @@
|
|||||||
"@eslint/js": "^10.0.1",
|
"@eslint/js": "^10.0.1",
|
||||||
"@types/jest": "^30.0.0",
|
"@types/jest": "^30.0.0",
|
||||||
"@types/node": "^26.6.4",
|
"@types/node": "^26.6.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.71.0",
|
"@typescript-eslint/eslint-plugin": "^8.71.1",
|
||||||
"@typescript-eslint/parser": "^8.71.0",
|
"@typescript-eslint/parser": "^8.71.1",
|
||||||
"@typescript/native": "npm:typescript@^7.0.2",
|
"@typescript/native": "npm:typescript@^7.0.2",
|
||||||
"@vercel/ncc": "^0.45.0",
|
"@vercel/ncc": "^0.45.0",
|
||||||
"eslint": "^10.12.0",
|
"eslint": "^10.12.0",
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
"globals": "^17.13.0",
|
"globals": "^17.13.0",
|
||||||
"jest": "^30.5.2",
|
"jest": "^30.5.2",
|
||||||
"jest-circus": "^30.5.2",
|
"jest-circus": "^30.5.2",
|
||||||
"nock": "^14.0.17",
|
"nock": "^15.0.1",
|
||||||
"prettier": "^3.9.9",
|
"prettier": "^3.9.9",
|
||||||
"simple-git-hooks": "^2.14.0",
|
"simple-git-hooks": "^2.14.0",
|
||||||
"ts-jest": "^29.4.14",
|
"ts-jest": "^29.4.14",
|
||||||
@@ -76,8 +77,9 @@
|
|||||||
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
"pre-commit": "npm run format && npm run lint && npm run test && npm run build && npm run release"
|
||||||
},
|
},
|
||||||
"allowScripts": {
|
"allowScripts": {
|
||||||
|
"@parcel/watcher@2.6.0": true,
|
||||||
"fsevents@2.3.3": true,
|
"fsevents@2.3.3": true,
|
||||||
"simple-git-hooks@2.13.1": true,
|
"simple-git-hooks@2.14.0": true,
|
||||||
"unrs-resolver@1.11.1": true
|
"unrs-resolver@1.12.2": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import * as utils from './utils';
|
import * as utils from './utils.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add script to set custom ini values for unix
|
* Add script to set custom ini values for unix
|
||||||
|
|||||||
+10
-5
@@ -153,12 +153,17 @@
|
|||||||
"version_parameter": "-V"
|
"version_parameter": "-V"
|
||||||
},
|
},
|
||||||
"phpstan": {
|
"phpstan": {
|
||||||
"type": "phar",
|
"type": "composer",
|
||||||
"repository": "phpstan/phpstan",
|
"repository": "phpstan/phpstan",
|
||||||
"extension": ".phar",
|
"scope": "scoped",
|
||||||
"domain": "https://github.com",
|
"fallback": {
|
||||||
"version_prefix": "",
|
"type": "phar",
|
||||||
"version_parameter": "-V"
|
"repository": "phpstan/phpstan",
|
||||||
|
"extension": ".phar",
|
||||||
|
"domain": "https://github.com",
|
||||||
|
"version_prefix": "",
|
||||||
|
"version_parameter": "-V"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"pie": {
|
"pie": {
|
||||||
"type": "phar",
|
"type": "phar",
|
||||||
|
|||||||
+151
-113
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/tools_schema.json",
|
"$id": "https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/tools_schema.json",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "Tools",
|
"title": "Tools",
|
||||||
@@ -14,123 +14,161 @@
|
|||||||
"function": "function_name",
|
"function": "function_name",
|
||||||
"repository": "user/tool",
|
"repository": "user/tool",
|
||||||
"packagist": "user/tool",
|
"packagist": "user/tool",
|
||||||
"scope": "global, scoped",
|
"scope": "scoped",
|
||||||
"type": "phar, composer, custom-package or custom-function",
|
"type": "composer",
|
||||||
"version_parameter": "--version",
|
"version_parameter": "--version",
|
||||||
"version_prefix": "v"
|
"version_prefix": "v",
|
||||||
|
"fallback": {
|
||||||
|
"type": "phar",
|
||||||
|
"repository": "user/tool",
|
||||||
|
"domain": "https://github.com",
|
||||||
|
"extension": ".phar",
|
||||||
|
"version_prefix": "v",
|
||||||
|
"version_parameter": "--version"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"items": {
|
"additionalProperties": {
|
||||||
"properties": {
|
"$ref": "#/$defs/tool"
|
||||||
"alias": {
|
},
|
||||||
"$id": "#/items/properties/alias",
|
"$defs": {
|
||||||
"type": "string",
|
"tool": {
|
||||||
"title": "The alias schema",
|
"type": "object",
|
||||||
"description": "Alias for a tool.",
|
"properties": {
|
||||||
"examples": [
|
"alias": {
|
||||||
"tool_alias"
|
"type": "string",
|
||||||
]
|
"title": "The alias schema",
|
||||||
|
"description": "Alias for a tool.",
|
||||||
|
"examples": [
|
||||||
|
"tool_alias"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"domain": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The domain schema",
|
||||||
|
"description": "Domain URL of the tool.",
|
||||||
|
"examples": [
|
||||||
|
"https://example.com"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"extension": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The extension schema",
|
||||||
|
"description": "File extension of the tool.",
|
||||||
|
"examples": [
|
||||||
|
".ext"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fetch_latest": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The fetch_latest schema",
|
||||||
|
"description": "Fetch the latest version from GitHub releases.",
|
||||||
|
"enum": [
|
||||||
|
"true",
|
||||||
|
"false"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The function schema",
|
||||||
|
"description": "Function name in tools.ts which returns the script to setup the tool.",
|
||||||
|
"examples": [
|
||||||
|
"function_name"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The repository schema",
|
||||||
|
"description": "GitHub repository of the tool.",
|
||||||
|
"examples": [
|
||||||
|
"user/tool"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packagist": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The repository schema",
|
||||||
|
"description": "Packagist repository of the tool in case different from repository.",
|
||||||
|
"examples": [
|
||||||
|
"user/tool"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scope": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The scope schema",
|
||||||
|
"description": "Scope of tool installation: global or scoped",
|
||||||
|
"enum": [
|
||||||
|
"global",
|
||||||
|
"scoped"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The type schema",
|
||||||
|
"description": "Type of tool: phar, composer, custom-package or custom-function.",
|
||||||
|
"enum": [
|
||||||
|
"phar",
|
||||||
|
"composer",
|
||||||
|
"custom-package",
|
||||||
|
"custom-function"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"version_parameter": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The version_parameter schema",
|
||||||
|
"description": "Parameter to get the tool version.",
|
||||||
|
"examples": [
|
||||||
|
"--version"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"version_prefix": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "The version_prefix schema",
|
||||||
|
"description": "Prefix of the version in the download URL.",
|
||||||
|
"examples": [
|
||||||
|
"v"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"fallback": {
|
||||||
|
"$ref": "#/$defs/pharFallback"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"domain": {
|
"required": [
|
||||||
"$id": "#/items/properties/domain",
|
"type"
|
||||||
"type": "string",
|
],
|
||||||
"title": "The domain schema",
|
"additionalProperties": true
|
||||||
"description": "Domain URL of the tool.",
|
|
||||||
"examples": [
|
|
||||||
"https://example.com"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"extension": {
|
|
||||||
"$id": "#/items/properties/extension",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The extension schema",
|
|
||||||
"description": "File extension of the tool.",
|
|
||||||
"examples": [
|
|
||||||
".ext"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fetch_latest": {
|
|
||||||
"$id": "#/items/properties/fetch_latest",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The fetch_latest schema",
|
|
||||||
"description": "Fetch the latest version from GitHub releases.",
|
|
||||||
"enum": [
|
|
||||||
"true",
|
|
||||||
"false"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"function": {
|
|
||||||
"$id": "#/items/properties/function",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The function schema",
|
|
||||||
"description": "Function name in tools.ts which returns the script to setup the tool.",
|
|
||||||
"examples": [
|
|
||||||
"function_name"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"$id": "#/items/properties/repository",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The repository schema",
|
|
||||||
"description": "GitHub repository of the tool.",
|
|
||||||
"examples": [
|
|
||||||
"user/tool"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"packagist": {
|
|
||||||
"$id": "#/items/properties/packagist",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The repository schema",
|
|
||||||
"description": "Packagist repository of the tool in case different from repository.",
|
|
||||||
"examples": [
|
|
||||||
"user/tool"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scope": {
|
|
||||||
"$id": "#/items/properties/scope",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The scope schema",
|
|
||||||
"description": "Scope of tool installation: global or scoped",
|
|
||||||
"enum": [
|
|
||||||
"global",
|
|
||||||
"scoped"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"$id": "#/items/properties/type",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The type schema",
|
|
||||||
"description": "Type of tool: phar, composer, custom-package or custom-function.",
|
|
||||||
"enum": [
|
|
||||||
"phar",
|
|
||||||
"composer",
|
|
||||||
"custom-package",
|
|
||||||
"custom-function"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"version_parameter": {
|
|
||||||
"$id": "#/items/properties/version_parameter",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The version_parameter schema",
|
|
||||||
"description": "Parameter to get the tool version.",
|
|
||||||
"examples": [
|
|
||||||
"--version"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"version_prefix": {
|
|
||||||
"$id": "#/items/properties/version_prefix",
|
|
||||||
"type": "string",
|
|
||||||
"title": "The version_prefix schema",
|
|
||||||
"description": "Prefix of the version in the download URL.",
|
|
||||||
"examples": [
|
|
||||||
"v"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"required": [
|
"pharFallback": {
|
||||||
"type"
|
"type": "object",
|
||||||
],
|
"title": "The fallback schema",
|
||||||
"additionalProperties": true
|
"description": "PHAR installation settings used when Composer installation fails.",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "phar"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"$ref": "#/$defs/tool/properties/repository"
|
||||||
|
},
|
||||||
|
"domain": {
|
||||||
|
"$ref": "#/$defs/tool/properties/domain"
|
||||||
|
},
|
||||||
|
"extension": {
|
||||||
|
"$ref": "#/$defs/tool/properties/extension"
|
||||||
|
},
|
||||||
|
"fetch_latest": {
|
||||||
|
"$ref": "#/$defs/tool/properties/fetch_latest"
|
||||||
|
},
|
||||||
|
"version_parameter": {
|
||||||
|
"$ref": "#/$defs/tool/properties/version_parameter"
|
||||||
|
},
|
||||||
|
"version_prefix": {
|
||||||
|
"$ref": "#/$defs/tool/properties/version_prefix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
import * as utils from './utils';
|
import * as utils from './utils.js';
|
||||||
import * as extensions from './extensions';
|
import * as extensions from './extensions.js';
|
||||||
import * as config from './config';
|
import * as config from './config.js';
|
||||||
|
|
||||||
export async function checkXdebugError(
|
export async function checkXdebugError(
|
||||||
extension: string,
|
extension: string,
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import * as utils from './utils';
|
import * as utils from './utils.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install and enable extensions for darwin
|
* Install and enable extensions for darwin
|
||||||
|
|||||||
+11
-8
@@ -1,12 +1,15 @@
|
|||||||
|
import {fileURLToPath} from 'url';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
|
||||||
import {exec} from '@actions/exec';
|
import {exec} from '@actions/exec';
|
||||||
import * as config from './config';
|
import fs from 'fs';
|
||||||
import * as core from './core';
|
import * as config from './config.js';
|
||||||
import * as coverage from './coverage';
|
import * as core from './core.js';
|
||||||
import * as extensions from './extensions';
|
import * as coverage from './coverage.js';
|
||||||
import * as tools from './tools';
|
import * as extensions from './extensions.js';
|
||||||
import * as utils from './utils';
|
import * as tools from './tools.js';
|
||||||
|
import * as utils from './utils.js';
|
||||||
|
|
||||||
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build the script
|
* Build the script
|
||||||
@@ -16,7 +19,7 @@ import * as utils from './utils';
|
|||||||
export async function getScript(os: string): Promise<string> {
|
export async function getScript(os: string): Promise<string> {
|
||||||
const url = 'https://setup-php.com/sponsor';
|
const url = 'https://setup-php.com/sponsor';
|
||||||
const filename = os + (await utils.scriptExtension(os));
|
const filename = os + (await utils.scriptExtension(os));
|
||||||
const script_path = path.join(__dirname, '../src/scripts', filename);
|
const script_path = path.join(dirname, '../src/scripts', filename);
|
||||||
const run_path = script_path.replace(os, 'run');
|
const run_path = script_path.replace(os, 'run');
|
||||||
const extension_csv: string = utils.sanitizeShellInput(
|
const extension_csv: string = utils.sanitizeShellInput(
|
||||||
await utils.getInput('extensions', false),
|
await utils.getInput('extensions', false),
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import * as cv from 'compare-versions';
|
import * as cv from 'compare-versions';
|
||||||
import * as fetch from './fetch';
|
import * as fetch from './fetch.js';
|
||||||
|
|
||||||
type RS = Record<string, string>;
|
type RS = Record<string, string>;
|
||||||
type RSRS = Record<string, RS>;
|
type RSRS = Record<string, RS>;
|
||||||
|
|||||||
@@ -168,8 +168,12 @@ patch_brew() {
|
|||||||
# Function to update dependencies.
|
# Function to update dependencies.
|
||||||
update_dependencies() {
|
update_dependencies() {
|
||||||
if ! [ -e /tmp/update_dependencies ]; then
|
if ! [ -e /tmp/update_dependencies ]; then
|
||||||
for repo in "$brew_repo" "${core_repo:?}"; do
|
local repos=("$brew_repo")
|
||||||
if [ -e "$repo" ]; then
|
if [ -n "${HOMEBREW_NO_INSTALL_FROM_API:-}" ]; then
|
||||||
|
repos+=("${core_repo:?}")
|
||||||
|
fi
|
||||||
|
for repo in "${repos[@]}"; do
|
||||||
|
if [ -d "$repo" ]; then
|
||||||
git_retry -C "$repo" fetch origin main && git -C "$repo" reset --hard origin/main || return $?
|
git_retry -C "$repo" fetch origin main && git -C "$repo" reset --hard origin/main || return $?
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -341,7 +345,6 @@ export HOMEBREW_NO_AUTO_UPDATE=1
|
|||||||
export HOMEBREW_NO_ENV_HINTS=1
|
export HOMEBREW_NO_ENV_HINTS=1
|
||||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||||
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
||||||
export HOMEBREW_NO_INSTALL_FROM_API=1
|
|
||||||
|
|
||||||
# shellcheck source=.
|
# shellcheck source=.
|
||||||
. "${scripts:?}"/unix.sh
|
. "${scripts:?}"/unix.sh
|
||||||
|
|||||||
@@ -375,23 +375,33 @@ Function Add-ComposerToolHelper() {
|
|||||||
composer global config --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1
|
composer global config --no-plugins allow-plugins."$prefix$tool" true >$null 2>&1
|
||||||
}
|
}
|
||||||
composer global require $prefix$release $composer_args >$null 2>&1
|
composer global require $prefix$release $composer_args >$null 2>&1
|
||||||
|
if($LASTEXITCODE -ne 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
return composer global show $prefix$tool 2>&1 | findstr '^versions'
|
return composer global show $prefix$tool 2>&1 | findstr '^versions'
|
||||||
} else {
|
} else {
|
||||||
$release_stream = [System.IO.MemoryStream]::New([System.Text.Encoding]::ASCII.GetBytes($release))
|
$release_stream = [System.IO.MemoryStream]::New([System.Text.Encoding]::ASCII.GetBytes($release))
|
||||||
$scoped_dir_suffix = (Get-FileHash -InputStream $release_stream -Algorithm sha256).Hash
|
$scoped_dir_suffix = (Get-FileHash -InputStream $release_stream -Algorithm sha256).Hash
|
||||||
$scoped_dir = "$composer_bin\_tools\$tool-$scoped_dir_suffix"
|
$scoped_dir = "$composer_bin\_tools\$tool-$scoped_dir_suffix"
|
||||||
$unix_scoped_dir = $scoped_dir.replace('\', '/')
|
$unix_scoped_dir = $scoped_dir.replace('\', '/')
|
||||||
if(-not(Test-Path $scoped_dir)) {
|
if(-not(Test-Path $scoped_dir\vendor\autoload.php)) {
|
||||||
New-Item -ItemType Directory -Force -Path $scoped_dir > $null 2>&1
|
New-Item -ItemType Directory -Force -Path $scoped_dir > $null 2>&1
|
||||||
Set-Content -Path $scoped_dir\composer.json -Value "{}"
|
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 '')) {
|
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 >$null 2>&1
|
||||||
}
|
}
|
||||||
composer require $prefix$release -d $unix_scoped_dir $composer_args >$null 2>&1
|
composer require $prefix$release -d $unix_scoped_dir $composer_args >$null 2>&1
|
||||||
|
if($LASTEXITCODE -ne 0) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$log = composer show $prefix$tool -d $unix_scoped_dir 2>&1 | findstr '^versions'
|
||||||
|
if(-not $log) {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
[System.Environment]::SetEnvironmentVariable(($tool.replace('-', '_') + '_bin'), "$scoped_dir\vendor\bin")
|
[System.Environment]::SetEnvironmentVariable(($tool.replace('-', '_') + '_bin'), "$scoped_dir\vendor\bin")
|
||||||
Add-Path $scoped_dir\vendor\bin
|
Add-Path $scoped_dir\vendor\bin
|
||||||
return composer show $prefix$tool -d $unix_scoped_dir 2>&1 | findstr '^versions'
|
return $log
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,7 +427,13 @@ Function Add-ComposerTool() {
|
|||||||
[ValidateNotNull()]
|
[ValidateNotNull()]
|
||||||
[ValidateLength(1, [int]::MaxValue)]
|
[ValidateLength(1, [int]::MaxValue)]
|
||||||
[string]
|
[string]
|
||||||
$scope
|
$scope,
|
||||||
|
[Parameter(Position = 4, Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$fallback_url,
|
||||||
|
[Parameter(Position = 5, Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$fallback_version_parameter
|
||||||
)
|
)
|
||||||
$composer_args = ""
|
$composer_args = ""
|
||||||
if($composer_version.split('.')[0] -ne "1") {
|
if($composer_version.split('.')[0] -ne "1") {
|
||||||
@@ -433,10 +449,13 @@ Function Add-ComposerTool() {
|
|||||||
if(Test-Path $composer_bin\composer) {
|
if(Test-Path $composer_bin\composer) {
|
||||||
Copy-Item -Path "$bin_dir\composer" -Destination "$composer_bin\composer" -Force
|
Copy-Item -Path "$bin_dir\composer" -Destination "$composer_bin\composer" -Force
|
||||||
}
|
}
|
||||||
Add-ToolsHelper $tool
|
|
||||||
if($log) {
|
if($log) {
|
||||||
$tool_version = Get-ToolVersion "Write-Output" "$log"
|
$tool_version = Get-ToolVersion "Write-Output" "$log"
|
||||||
|
Add-ToolsHelper $tool
|
||||||
Add-Log $tick $tool "Added $tool $tool_version"
|
Add-Log $tick $tool "Added $tool $tool_version"
|
||||||
|
} elseif($fallback_url) {
|
||||||
|
Add-Log "!" $tool "Could not setup $tool using Composer. Falling back to PHAR."
|
||||||
|
Add-Tool $fallback_url $tool $fallback_version_parameter
|
||||||
} else {
|
} else {
|
||||||
Add-Log $cross $tool "Could not setup $tool"
|
Add-Log $cross $tool "Could not setup $tool"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -293,19 +293,20 @@ add_composer_tool_helper() {
|
|||||||
if composer global show "$prefix$tool" "$tool_version" -a 2>&1 | grep -qE '^type *: *composer-plugin' && [ -n "$composer_args" ]; then
|
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 >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
composer global require "$prefix$release" "$composer_args" >/dev/null 2>&1
|
composer global require "$prefix$release" "$composer_args" >/dev/null 2>&1 || return 1
|
||||||
composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
|
composer global show "$prefix$tool" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
|
||||||
else
|
else
|
||||||
scoped_dir="$composer_bin/_tools/$tool-$(echo -n "$release" | shasum -a 256 | cut -d ' ' -f 1)"
|
scoped_dir="$composer_bin/_tools/$tool-$(echo -n "$release" | shasum -a 256 | cut -d ' ' -f 1)"
|
||||||
if ! [ -d "$scoped_dir" ]; then
|
if ! [ -f "$scoped_dir/vendor/autoload.php" ]; then
|
||||||
mkdir -p "$scoped_dir"
|
mkdir -p "$scoped_dir"
|
||||||
echo '{}' | tee "$scoped_dir/composer.json" >/dev/null
|
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
|
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 >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
composer require "$prefix$release" -d "$scoped_dir" "$composer_args" >/dev/null 2>&1
|
composer require "$prefix$release" -d "$scoped_dir" "$composer_args" >/dev/null 2>&1 || return 1
|
||||||
composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
|
|
||||||
fi
|
fi
|
||||||
|
composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
|
||||||
|
[ -s /tmp/composer.log ] || return 1
|
||||||
add_path "$scoped_dir"/vendor/bin
|
add_path "$scoped_dir"/vendor/bin
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -316,6 +317,7 @@ add_composer_tool() {
|
|||||||
release=$2
|
release=$2
|
||||||
prefix=$3
|
prefix=$3
|
||||||
scope=$4
|
scope=$4
|
||||||
|
local fallback_url=${5:-} fallback_version_parameter=${6:-}
|
||||||
composer_args=
|
composer_args=
|
||||||
composer_major_version=$(cut -d'.' -f 1 /tmp/composer_version)
|
composer_major_version=$(cut -d'.' -f 1 /tmp/composer_version)
|
||||||
if [ "$composer_major_version" != "1" ]; then
|
if [ "$composer_major_version" != "1" ]; then
|
||||||
@@ -326,11 +328,17 @@ add_composer_tool() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
add_composer_tool_helper "$tool" "$release" "$prefix" "$scope" "$composer_args"
|
sudo rm -f /tmp/composer.log
|
||||||
tool_version=$(get_tool_version cat /tmp/composer.log)
|
if add_composer_tool_helper "$tool" "$release" "$prefix" "$scope" "$composer_args" && [ -s /tmp/composer.log ]; then
|
||||||
([ -s /tmp/composer.log ] && add_log "$tick" "$tool" "Added $tool $tool_version"
|
tool_version=$(get_tool_version cat /tmp/composer.log)
|
||||||
) || add_log "$cross" "$tool" "Could not setup $tool"
|
add_tools_helper "$tool"
|
||||||
add_tools_helper "$tool"
|
add_log "$tick" "$tool" "Added $tool $tool_version"
|
||||||
|
elif [ -n "$fallback_url" ]; then
|
||||||
|
add_log "!" "$tool" "Could not setup $tool using Composer. Falling back to PHAR."
|
||||||
|
add_tool "$fallback_url" "$tool" "$fallback_version_parameter"
|
||||||
|
else
|
||||||
|
add_log "$cross" "$tool" "Could not setup $tool"
|
||||||
|
fi
|
||||||
if [ -e "$composer_bin/composer" ]; then
|
if [ -e "$composer_bin/composer" ]; then
|
||||||
sudo cp -a "$tool_path_dir/composer" "$composer_bin"
|
sudo cp -a "$tool_path_dir/composer" "$composer_bin"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -225,6 +225,11 @@ configure_brew() {
|
|||||||
tap_dir="$brew_repo"/Library/Taps
|
tap_dir="$brew_repo"/Library/Taps
|
||||||
core_repo="$tap_dir"/homebrew/homebrew-core
|
core_repo="$tap_dir"/homebrew/homebrew-core
|
||||||
|
|
||||||
|
if [ -d "$core_repo" ]; then
|
||||||
|
export HOMEBREW_NO_INSTALL_FROM_API=1
|
||||||
|
else
|
||||||
|
unset HOMEBREW_NO_INSTALL_FROM_API
|
||||||
|
fi
|
||||||
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
||||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
export HOMEBREW_NO_ENV_HINTS=1
|
export HOMEBREW_NO_ENV_HINTS=1
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ Function Step-Log($message) {
|
|||||||
Function Add-Log($mark, $subject, $message) {
|
Function Add-Log($mark, $subject, $message) {
|
||||||
if ($mark -eq $tick) {
|
if ($mark -eq $tick) {
|
||||||
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
||||||
|
} elseif ($mark -eq "!") {
|
||||||
|
printf "\033[33;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
||||||
} else {
|
} else {
|
||||||
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
||||||
if($env:fail_fast -eq 'true') {
|
if($env:fail_fast -eq 'true') {
|
||||||
|
|||||||
+42
-8
@@ -1,9 +1,12 @@
|
|||||||
|
import {fileURLToPath} from 'url';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import * as cv from 'compare-versions';
|
import * as cv from 'compare-versions';
|
||||||
import * as fetch from './fetch';
|
import * as fetch from './fetch.js';
|
||||||
import * as packagist from './packagist';
|
import * as packagist from './packagist.js';
|
||||||
import * as utils from './utils';
|
import * as utils from './utils.js';
|
||||||
|
|
||||||
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Valid function names for custom tool handlers
|
* Valid function names for custom tool handlers
|
||||||
@@ -48,6 +51,7 @@ export interface ToolData {
|
|||||||
url: string;
|
url: string;
|
||||||
uri?: string;
|
uri?: string;
|
||||||
error?: string;
|
error?: string;
|
||||||
|
fallback?: ToolFallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,8 +76,19 @@ interface ToolConfig {
|
|||||||
version_parameter?: string;
|
version_parameter?: string;
|
||||||
version_prefix?: string;
|
version_prefix?: string;
|
||||||
packagist?: string;
|
packagist?: string;
|
||||||
|
fallback?: ToolFallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ToolFallback = Pick<
|
||||||
|
ToolConfig,
|
||||||
|
| 'repository'
|
||||||
|
| 'domain'
|
||||||
|
| 'extension'
|
||||||
|
| 'fetch_latest'
|
||||||
|
| 'version_parameter'
|
||||||
|
| 'version_prefix'
|
||||||
|
> & {type: 'phar'};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Regex to match a checksum suffix in a tool release - tool:version@sha256:<hash>
|
* Regex to match a checksum suffix in a tool release - tool:version@sha256:<hash>
|
||||||
*/
|
*/
|
||||||
@@ -155,7 +170,7 @@ export function skipGitHubAuthForComposerVersion(version: string): boolean {
|
|||||||
}
|
}
|
||||||
return fs
|
return fs
|
||||||
.readFileSync(
|
.readFileSync(
|
||||||
path.join(__dirname, '../src/configs/composer-gh-auth-no-op'),
|
path.join(dirname, '../src/configs/composer-gh-auth-no-op'),
|
||||||
'utf8'
|
'utf8'
|
||||||
)
|
)
|
||||||
.trim()
|
.trim()
|
||||||
@@ -414,7 +429,23 @@ export async function addPackage(data: ToolData): Promise<string> {
|
|||||||
const args = [parts[1], data.release, parts[0] + '/', data.scope]
|
const args = [parts[1], data.release, parts[0] + '/', data.scope]
|
||||||
.map(a => utils.safeArg(a, data.os))
|
.map(a => utils.safeArg(a, data.os))
|
||||||
.join(' ');
|
.join(' ');
|
||||||
return command + args;
|
if (!data.fallback) return command + args;
|
||||||
|
const fallback = await getData(
|
||||||
|
data.release.replace(/\.\*$/, ''),
|
||||||
|
data.php_version,
|
||||||
|
data.os,
|
||||||
|
data.fallback
|
||||||
|
);
|
||||||
|
// A failed version lookup must not prevent a successful Composer install.
|
||||||
|
if (fallback.error) return command + args;
|
||||||
|
return (
|
||||||
|
command +
|
||||||
|
args +
|
||||||
|
' ' +
|
||||||
|
utils.safeArg(fallback.url, data.os) +
|
||||||
|
' ' +
|
||||||
|
(fallback.version_parameter || '""')
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -670,9 +701,10 @@ export async function addWPCLI(data: ToolData): Promise<string> {
|
|||||||
export async function getData(
|
export async function getData(
|
||||||
release: string,
|
release: string,
|
||||||
php_version: string,
|
php_version: string,
|
||||||
os: string
|
os: string,
|
||||||
|
overrides: ToolConfig = {}
|
||||||
): Promise<ToolData> {
|
): Promise<ToolData> {
|
||||||
const json_file_path = path.join(__dirname, '../src/configs/tools.json');
|
const json_file_path = path.join(dirname, '../src/configs/tools.json');
|
||||||
const json_file: string = fs.readFileSync(json_file_path, 'utf8');
|
const json_file: string = fs.readFileSync(json_file_path, 'utf8');
|
||||||
const json_objects: Record<string, ToolConfig> = JSON.parse(json_file);
|
const json_objects: Record<string, ToolConfig> = JSON.parse(json_file);
|
||||||
release = release.replace(/\s+/g, '');
|
release = release.replace(/\s+/g, '');
|
||||||
@@ -702,6 +734,7 @@ export async function getData(
|
|||||||
config = {tool};
|
config = {tool};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
config = {...config, ...overrides};
|
||||||
const github = 'https://github.com';
|
const github = 'https://github.com';
|
||||||
const domain = config.domain ?? github;
|
const domain = config.domain ?? github;
|
||||||
const data: ToolData = {
|
const data: ToolData = {
|
||||||
@@ -727,7 +760,8 @@ export async function getData(
|
|||||||
packagist: config.packagist ?? config.repository ?? '',
|
packagist: config.packagist ?? config.repository ?? '',
|
||||||
type: config.type,
|
type: config.type,
|
||||||
function: config.function,
|
function: config.function,
|
||||||
alias: config.alias
|
alias: config.alias,
|
||||||
|
fallback: config.fallback
|
||||||
};
|
};
|
||||||
data.checksum = checksum_data.checksum;
|
data.checksum = checksum_data.checksum;
|
||||||
data.error = checksum_data.error;
|
data.error = checksum_data.error;
|
||||||
|
|||||||
+9
-9
@@ -1,7 +1,10 @@
|
|||||||
|
import {fileURLToPath} from 'url';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as core from './core';
|
import * as core from './core.js';
|
||||||
import * as fetch from './fetch';
|
import * as fetch from './fetch.js';
|
||||||
|
|
||||||
|
const dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to read environment variable and return a string value.
|
* Function to read environment variable and return a string value.
|
||||||
@@ -88,12 +91,9 @@ export async function parseVersion(version: string): Promise<string> {
|
|||||||
if (!/^\d+(\.\d+){0,2}$/.test(version)) {
|
if (!/^\d+(\.\d+){0,2}$/.test(version)) {
|
||||||
throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
|
throw new Error(`Invalid PHP version: ${version.slice(0, 20)}`);
|
||||||
}
|
}
|
||||||
switch (true) {
|
return version.includes('.')
|
||||||
case version.length > 1:
|
? version.split('.').slice(0, 2).join('.')
|
||||||
return version.slice(0, 3);
|
: version + '.0';
|
||||||
default:
|
|
||||||
return version + '.0';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,7 +480,7 @@ export async function customPackage(
|
|||||||
const pkg_name: string = pkg.replace(/\d+|(pdo|pecl)[_-]|[_-]db2/, '');
|
const pkg_name: string = pkg.replace(/\d+|(pdo|pecl)[_-]|[_-]db2/, '');
|
||||||
const script_extension: string = await scriptExtension(os);
|
const script_extension: string = await scriptExtension(os);
|
||||||
const script: string = path.join(
|
const script: string = path.join(
|
||||||
__dirname,
|
dirname,
|
||||||
'../src/scripts/' + type + '/' + pkg_name + script_extension
|
'../src/scripts/' + type + '/' + pkg_name + script_extension
|
||||||
);
|
);
|
||||||
const command: string = await getCommand(os, pkg_name);
|
const command: string = await getCommand(os, pkg_name);
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
"lib": [
|
"lib": [
|
||||||
"ES2025"
|
"ES2025"
|
||||||
],
|
],
|
||||||
"module": "Node20",
|
"module": "NodeNext",
|
||||||
"moduleResolution": "Node16",
|
"moduleResolution": "NodeNext",
|
||||||
"noImplicitAny": true,
|
"noImplicitAny": true,
|
||||||
"outDir": "./lib",
|
"outDir": "./lib",
|
||||||
"removeComments": true,
|
"removeComments": true,
|
||||||
|
|||||||
Reference in new issue
Block a user