2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								import  *  as  core  from  '@actions/core' ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-30 21:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								import  *  as  exec  from  '@actions/exec' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								import  *  as  installer  from  './installer' ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 14:48:31 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								import  fs  from  'fs' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								import  *  as  auth  from  './authutil' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  *  as  path  from  'path' ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:52:44 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								import  { restoreCache }  from  './cache-restore' ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 21:10:37 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								import  { isGhes ,  isCacheFeatureAvailable }  from  './cache-utils' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-03 07:40:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								import  os  =  require ( 'os' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								export  async  function  run() { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // Version is optional.  If supplied, install / use from the tool cache
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // If not supplied then task is still used to setup proxy, auth, etc...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    //
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 14:48:31 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    let  version  =  resolveVersionInput ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-08 16:15:38 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    let  arch  =  core . getInput ( 'architecture' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:52:44 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    const  cache  =  core . getInput ( 'cache' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 11:09:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-08 16:15:38 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // if architecture supplied but node-version is not
 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 11:09:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // if we don't throw a warning, the already installed x64 node will be used which is not probably what user meant.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( arch  &&  ! version )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      core . warning ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-09 11:27:02 -06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        '`architecture` is provided but `node-version` is missing. In this configuration, the version/architecture of Node will not be changed. To fix this, provide `architecture` in combination with `node-version`' 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-06 11:09:41 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-03 07:40:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( ! arch )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      arch  =  os . arch ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    if  ( version )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      let  token  =  core . getInput ( 'token' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      let  auth  =  ! token  ||  isGhes ( )  ?  undefined  :  ` token  ${ token } ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      let  stable  =  ( core . getInput ( 'stable' )  ||  'true' ) . toUpperCase ( )  ===  'TRUE' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-29 21:56:37 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      const  checkLatest  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ( core . getInput ( 'check-latest' )  ||  'false' ) . toUpperCase ( )  ===  'TRUE' ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-09-03 07:40:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      await  installer . getNode ( version ,  stable ,  checkLatest ,  auth ,  arch ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-30 21:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // Output version of node is being used
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-01 00:46:13 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    const  { stdout : installedVersion }  =  await  exec . getExecOutput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      'node' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      [ '--version' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      { ignoreReturnCode : true } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-30 21:55:32 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    core . setOutput ( 'node-version' ,  installedVersion ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    const  registryUrl : string  =  core . getInput ( 'registry-url' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const  alwaysAuth : string  =  core . getInput ( 'always-auth' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( registryUrl )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      auth . configAuthentication ( registryUrl ,  alwaysAuth ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-31 21:10:37 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if  ( cache  &&  isCacheFeatureAvailable ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-02 20:44:59 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								      const  cacheDependencyPath  =  core . getInput ( 'cache-dependency-path' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      await  restoreCache ( cache ,  cacheDependencyPath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:52:44 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const  matchersPath  =  path . join ( __dirname ,  '../..' ,  '.github' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-20 20:58:35 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    core . info ( ` ##[add-matcher] ${ path . join ( matchersPath ,  'tsc.json' ) } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    core . info ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      ` ##[add-matcher] ${ path . join ( matchersPath ,  'eslint-stylish.json' ) } ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-01-20 20:58:35 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    core . info ( 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								      ` ##[add-matcher] ${ path . join ( matchersPath ,  'eslint-compact.json' ) } ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 14:48:31 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  }  catch  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    core . setFailed ( err . message ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 09:25:54 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 14:48:31 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								function  resolveVersionInput ( ) :  string  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-24 16:31:57 +03:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  let  version  =  core . getInput ( 'node-version' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-29 14:48:31 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  versionFileInput  =  core . getInput ( 'node-version-file' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  if  ( version  &&  versionFileInput )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    core . warning ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      'Both node-version and node-version-file inputs are specified, only node-version will be used' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  if  ( version )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return  version ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  if  ( versionFileInput )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const  versionFilePath  =  path . join ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      process . env . GITHUB_WORKSPACE ! , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      versionFileInput 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if  ( ! fs . existsSync ( versionFilePath ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      throw  new  Error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        ` The specified node version file at:  ${ versionFilePath }  does not exist ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    version  =  installer . parseNodeVersionFile ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      fs . readFileSync ( versionFilePath ,  'utf8' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    core . info ( ` Resolved  ${ versionFileInput }  as  ${ version } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  return  version ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}