mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-10-31 07:16:22 +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" | ||||
| } | ||||
| @ -58,27 +58,32 @@ export async function run(): Promise<void> { | ||||
|     core.warning( | ||||
|       'setup-php v1 is deprecated.\nPlease upgrade to v2 - https://github.com/shivammathur/setup-php/wiki/Switch-to-v2' | ||||
|     ); | ||||
|     const os_version: string = process.platform; | ||||
|     let version: string = await utils.getInput('php-version', true); | ||||
|     version = version.length > 1 ? version.slice(0, 3) : version + '.0'; | ||||
|     const version: string = await utils.parseVersion( | ||||
|       await utils.getInput('php-version', true) | ||||
|     ); | ||||
|     if (version == '8.1') { | ||||
|       core.setFailed( | ||||
|         'PHP 8.1 is not supported on setup-php v1.\nPlease upgrade to v2 - https://github.com/shivammathur/setup-php/wiki/Switch-to-v2' | ||||
|       ); | ||||
|       return; | ||||
|     } | ||||
|     // check the os version and run the respective script | ||||
|     let script_path = ''; | ||||
|     switch (os_version) { | ||||
|       case 'darwin': | ||||
|       case 'linux': | ||||
|         script_path = await build(os_version + '.sh', version, os_version); | ||||
|         await exec('bash ' + script_path + ' ' + version + ' ' + __dirname); | ||||
|         break; | ||||
|       case 'win32': | ||||
|         script_path = await build('win32.ps1', version, os_version); | ||||
|         await exec('pwsh ' + script_path + ' ' + version + ' ' + __dirname); | ||||
|         break; | ||||
|     if (version) { | ||||
|       const os_version: string = process.platform; | ||||
|       // check the os version and run the respective script | ||||
|       let script_path = ''; | ||||
|       switch (os_version) { | ||||
|         case 'darwin': | ||||
|         case 'linux': | ||||
|           script_path = await build(os_version + '.sh', version, os_version); | ||||
|           await exec('bash ' + script_path + ' ' + version + ' ' + __dirname); | ||||
|           break; | ||||
|         case 'win32': | ||||
|           script_path = await build('win32.ps1', version, os_version); | ||||
|           await exec('pwsh ' + script_path + ' ' + version + ' ' + __dirname); | ||||
|           break; | ||||
|       } | ||||
|     } else { | ||||
|       core.setFailed('Unable to get the PHP version'); | ||||
|     } | ||||
|   } catch (error) { | ||||
|     core.setFailed(error.message); | ||||
|  | ||||
							
								
								
									
										41
									
								
								src/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								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,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 | ||||
|  * | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shivam Mathur
					Shivam Mathur