Add support to specify version in \d.x notation

This commit is contained in:
Shivam Mathur
2021-02-22 11:48:28 +05:30
parent d0f1a91dfd
commit 5520fdb61a
5 changed files with 153 additions and 31 deletions
+41
View File
@@ -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,6 +43,45 @@ 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> {
const manifest =
'https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/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:
return version.slice(0, 3);
default:
return version + '.0';
}
}
}
/**
* Async foreach loop
*