mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-09-08 05:44:07 +07:00
Add support to specify version in \d.x notation
This commit is contained in:
6
src/configs/php-versions.json
Normal file
6
src/configs/php-versions.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"latest": "8.0",
|
||||
"5.x": "5.6",
|
||||
"7.x": "7.4",
|
||||
"8.x": "8.0"
|
||||
}
|
@ -54,11 +54,15 @@ export async function run(): Promise<void> {
|
||||
const version: string = await utils.parseVersion(
|
||||
await utils.getInput('php-version', true)
|
||||
);
|
||||
const os_version: string = process.platform;
|
||||
const tool = await utils.scriptTool(os_version);
|
||||
const script = os_version + (await utils.scriptExtension(os_version));
|
||||
const location = await getScript(script, version, os_version);
|
||||
await exec(await utils.joins(tool, location, version, __dirname));
|
||||
if (version) {
|
||||
const os_version: string = process.platform;
|
||||
const tool = await utils.scriptTool(os_version);
|
||||
const script = os_version + (await utils.scriptExtension(os_version));
|
||||
const location = await getScript(script, version, os_version);
|
||||
await exec(await utils.joins(tool, location, version, __dirname));
|
||||
} else {
|
||||
core.setFailed('Unable to get the PHP version');
|
||||
}
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
|
27
src/utils.ts
27
src/utils.ts
@ -1,4 +1,6 @@
|
||||
import {IncomingMessage} from 'http';
|
||||
import * as fs from 'fs';
|
||||
import * as https from 'https';
|
||||
import * as path from 'path';
|
||||
import * as core from '@actions/core';
|
||||
|
||||
@ -41,15 +43,34 @@ export async function getInput(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to fetch an URL
|
||||
*
|
||||
* @param url
|
||||
*/
|
||||
export async function fetch(url: string): Promise<string> {
|
||||
const fetch_promise: Promise<string> = new Promise(resolve => {
|
||||
const req = https.get(url, (res: IncomingMessage) => {
|
||||
res.setEncoding('utf8');
|
||||
let body = '';
|
||||
res.on('data', chunk => (body += chunk));
|
||||
res.on('end', () => resolve(body));
|
||||
});
|
||||
req.end();
|
||||
});
|
||||
return await fetch_promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to parse PHP version.
|
||||
*
|
||||
* @param version
|
||||
*/
|
||||
export async function parseVersion(version: string): Promise<string> {
|
||||
switch (version) {
|
||||
case 'latest':
|
||||
return '8.0';
|
||||
const manifest = 'https://dl.bintray.com/shivammathur/php/php-versions.json';
|
||||
switch (true) {
|
||||
case /latest|\d.x/.test(version):
|
||||
return JSON.parse(await fetch(manifest))[version];
|
||||
default:
|
||||
switch (true) {
|
||||
case version.length > 1:
|
||||
|
Reference in New Issue
Block a user