mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-31 07:30:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as cache from '@actions/cache';
 | |
| import * as core from '@actions/core';
 | |
| import * as exec from '@actions/exec';
 | |
| import {supportedPackageManagers, PackageManagerInfo} from './package-managers';
 | |
| 
 | |
| export const getCommandOutput = async (toolCommand: string) => {
 | |
|   let {stdout, stderr, exitCode} = await exec.getExecOutput(
 | |
|     toolCommand,
 | |
|     undefined,
 | |
|     {ignoreReturnCode: true}
 | |
|   );
 | |
| 
 | |
|   if (exitCode) {
 | |
|     stderr = !stderr.trim()
 | |
|       ? `The '${toolCommand}' command failed with exit code: ${exitCode}`
 | |
|       : stderr;
 | |
|     throw new Error(stderr);
 | |
|   }
 | |
| 
 | |
|   return stdout.trim();
 | |
| };
 | |
| 
 | |
| export const getPackageManagerInfo = async (packageManager: string) => {
 | |
|   if (!supportedPackageManagers[packageManager]) {
 | |
|     throw new Error(
 | |
|       `It's not possible to use ${packageManager}, please, check correctness of the package manager name spelling.`
 | |
|     );
 | |
|   }
 | |
|   const obtainedPackageManager = supportedPackageManagers[packageManager];
 | |
| 
 | |
|   return obtainedPackageManager;
 | |
| };
 | |
| 
 | |
| export const getCacheDirectoryPath = async (
 | |
|   packageManagerInfo: PackageManagerInfo
 | |
| ) => {
 | |
|   let pathList = await Promise.all(
 | |
|     packageManagerInfo.cacheFolderCommandList.map(command =>
 | |
|       getCommandOutput(command)
 | |
|     )
 | |
|   );
 | |
| 
 | |
|   const emptyPaths = pathList.filter(item => !item);
 | |
| 
 | |
|   if (emptyPaths.length) {
 | |
|     throw new Error(`Could not get cache folder paths.`);
 | |
|   }
 | |
| 
 | |
|   return pathList;
 | |
| };
 | |
| 
 | |
| export function isGhes(): boolean {
 | |
|   const ghUrl = new URL(
 | |
|     process.env['GITHUB_SERVER_URL'] || 'https://github.com'
 | |
|   );
 | |
|   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM';
 | |
| }
 | |
| 
 | |
| export function isCacheFeatureAvailable(): boolean {
 | |
|   if (!cache.isFeatureAvailable()) {
 | |
|     if (isGhes()) {
 | |
|       throw new Error(
 | |
|         'Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.'
 | |
|       );
 | |
|     } else {
 | |
|       core.warning(
 | |
|         'The runner was not able to contact the cache service. Caching will be skipped'
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   return true;
 | |
| }
 | 
