2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  os  from  'os' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  path  from  'path' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  *  as  fs  from  'fs' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  *  as  semver  from  'semver' ;  
						 
					
						
							
								
									
										
										
										
											2022-04-01 00:39:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  *  as  cache  from  '@actions/cache' ;  
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  *  as  core  from  '@actions/core' ;  
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  *  as  tc  from  '@actions/tool-cache' ;  
						 
					
						
							
								
									
										
										
										
											2021-08-20 01:19:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  INPUT_JOB_STATUS  }  from  './constants' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								export  function  getTempDir() {  
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let  tempDirectory  =  process . env [ 'RUNNER_TEMP' ]  ||  os . tmpdir ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  tempDirectory ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  function  getBooleanInput ( inputName : string ,  defaultValue : boolean  =  false )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( core . getInput ( inputName )  ||  String ( defaultValue ) ) . toUpperCase ( )  ===  'TRUE' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  function  getVersionFromToolcachePath ( toolPath : string )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( toolPath )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  path . basename ( path . dirname ( toolPath ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  toolPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  async  function  extractJdkFile ( toolPath : string ,  extension? : string )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( ! extension )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    extension  =  toolPath . endsWith ( '.tar.gz' )  ?  'tar.gz'  :  path . extname ( toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( extension . startsWith ( '.' ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      extension  =  extension . substring ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  switch  ( extension )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'tar.gz' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'tar' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  await  tc . extractTar ( toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case  'zip' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  await  tc . extractZip ( toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  await  tc . extract7z ( toolPath ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  function  getDownloadArchiveExtension() {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  process . platform  ===  'win32'  ?  'zip'  :  'tar.gz' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  function  isVersionSatisfies ( range : string ,  version : string ) :  boolean  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( semver . valid ( range ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 20:49:24 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // if full version with build digit is provided as a range (such as '1.2.3+4')
 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 13:02:27 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    // we should check for exact equal via compareBuild
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // since semver.satisfies doesn't handle 4th digit
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  semRange  =  semver . parse ( range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( semRange  &&  semRange . build ? . length  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  semver . compareBuild ( range ,  version )  ===  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  semver . satisfies ( version ,  range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  function  getToolcachePath ( toolName : string ,  version : string ,  architecture : string )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  toolcacheRoot  =  process . env [ 'RUNNER_TOOL_CACHE' ]  ? ?  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  fullPath  =  path . join ( toolcacheRoot ,  toolName ,  version ,  architecture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( fs . existsSync ( fullPath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  fullPath ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  null ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-02 04:33:15 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2021-08-20 01:19:35 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  function  isJobStatusSuccess() {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  jobStatus  =  core . getInput ( INPUT_JOB_STATUS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  jobStatus  ===  'success' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2022-04-01 00:39:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'Caching is only supported on GHES version >= 3.5. If you are on a version >= 3.5, please check with your GHES admin if the 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 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}