| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  | import * as core from '@actions/core'; | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | import { Action, BuildParameters, Cache, Docker, ImageTag, Output, CloudRunner, Input } from './model'; | 
					
						
							|  |  |  | import { Command } from 'commander-ts'; | 
					
						
							| 
									
										
										
										
											2021-12-19 01:45:55 +00:00
										 |  |  | import { RemoteClientCli } from './model/cloud-runner/remote-client'; | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | async function runMain() { | 
					
						
							| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  |   try { | 
					
						
							|  |  |  |     Action.checkCompatibility(); | 
					
						
							|  |  |  |     Cache.verify(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const { dockerfile, workspace, actionFolder } = Action; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const buildParameters = await BuildParameters.create(); | 
					
						
							|  |  |  |     const baseImage = new ImageTag(buildParameters); | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |     let builtImage; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-17 22:13:46 +00:00
										 |  |  |     switch (buildParameters.cloudRunnerCluster) { | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |       case 'aws': | 
					
						
							| 
									
										
										
										
											2021-06-19 20:06:11 +00:00
										 |  |  |       case 'k8s': | 
					
						
							| 
									
										
										
										
											2021-12-06 20:56:40 +00:00
										 |  |  |         await CloudRunner.run(buildParameters, baseImage.toString()); | 
					
						
							| 
									
										
										
										
											2021-04-20 20:46:37 +00:00
										 |  |  |         break; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // default and local case
 | 
					
						
							|  |  |  |       default: | 
					
						
							|  |  |  |         core.info('Building locally'); | 
					
						
							|  |  |  |         builtImage = await Docker.build({ path: actionFolder, dockerfile, baseImage }); | 
					
						
							|  |  |  |         await Docker.run(builtImage, { workspace, ...buildParameters }); | 
					
						
							|  |  |  |         break; | 
					
						
							| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Set output
 | 
					
						
							|  |  |  |     await Output.setBuildVersion(buildParameters.buildVersion); | 
					
						
							|  |  |  |   } catch (error) { | 
					
						
							| 
									
										
										
										
											2021-09-08 22:17:23 +00:00
										 |  |  |     core.setFailed((error as Error).message); | 
					
						
							| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | async function runCli() { | 
					
						
							|  |  |  |   options.versioning = 'None'; | 
					
						
							|  |  |  |   Input.cliOptions = options; | 
					
						
							|  |  |  |   const buildParameter = await BuildParameters.create(); | 
					
						
							| 
									
										
										
										
											2021-12-19 01:45:55 +00:00
										 |  |  |   const baseImage = new ImageTag(buildParameter); | 
					
						
							|  |  |  |   await CloudRunner.run(buildParameter, baseImage.toString()); | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const program = new Command(); | 
					
						
							|  |  |  | program.version('0.0.1'); | 
					
						
							| 
									
										
										
										
											2021-12-19 22:28:07 +00:00
										 |  |  | const properties = Object.getOwnPropertyNames(Input); | 
					
						
							| 
									
										
										
										
											2021-12-19 22:36:14 +00:00
										 |  |  | core.info(`\r\n`); | 
					
						
							| 
									
										
										
										
											2021-12-19 22:28:07 +00:00
										 |  |  | core.info(`INPUT:`); | 
					
						
							|  |  |  | for (const element of properties) { | 
					
						
							|  |  |  |   program.option(`--${element} <${element}>`, 'default description'); | 
					
						
							| 
									
										
										
										
											2021-12-19 22:35:28 +00:00
										 |  |  |   if (Input[element] !== undefined && Input[element] !== '') core.info(element); | 
					
						
							| 
									
										
										
										
											2021-12-19 22:28:07 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-12-19 22:36:14 +00:00
										 |  |  | core.info(`\r\n`); | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | program.option('-m, --mode <mode>', 'cli or default'); | 
					
						
							|  |  |  | program.parse(process.argv); | 
					
						
							| 
									
										
										
										
											2021-03-13 23:44:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | const options = program.opts(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-07 22:34:24 +00:00
										 |  |  | // eslint-disable-next-line no-console
 | 
					
						
							| 
									
										
										
										
											2021-12-19 01:45:55 +00:00
										 |  |  | console.log(`Entrypoint: ${options.mode}`); | 
					
						
							| 
									
										
										
										
											2021-12-19 21:38:59 +00:00
										 |  |  | Input.githubEnabled = false; | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | switch (options.mode) { | 
					
						
							|  |  |  |   case 'cli': | 
					
						
							|  |  |  |     runCli(); | 
					
						
							|  |  |  |     break; | 
					
						
							|  |  |  |   case 'remote-cli': | 
					
						
							| 
									
										
										
										
											2021-12-19 23:46:04 +00:00
										 |  |  |     RemoteClientCli.RunRemoteClient(options); | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  |     break; | 
					
						
							|  |  |  |   default: | 
					
						
							| 
									
										
										
										
											2021-12-19 21:38:59 +00:00
										 |  |  |     Input.githubEnabled = true; | 
					
						
							| 
									
										
										
										
											2021-12-13 22:21:26 +00:00
										 |  |  |     runMain(); | 
					
						
							|  |  |  |     break; | 
					
						
							|  |  |  | } |