| 
									
										
										
										
											2020-05-14 17:27:38 -04:00
										 |  |  | import * as cache from "@actions/cache"; | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  | import * as core from "@actions/core"; | 
					
						
							| 
									
										
										
										
											2020-03-18 22:35:13 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-22 16:36:34 -04:00
										 |  |  | import { Events, Inputs, State } from "./constants"; | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  | import * as utils from "./utils/actionUtils"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-13 06:48:02 +09:00
										 |  |  | async function run(): Promise<void> { | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  |     try { | 
					
						
							| 
									
										
										
										
											2019-11-21 14:37:54 -05:00
										 |  |  |         if (!utils.isValidEvent()) { | 
					
						
							|  |  |  |             utils.logWarning( | 
					
						
							|  |  |  |                 `Event Validation Error: The event type ${ | 
					
						
							|  |  |  |                     process.env[Events.Key] | 
					
						
							| 
									
										
										
										
											2020-04-17 15:46:46 -04:00
										 |  |  |                 } is not supported because it's not tied to a branch or tag ref.`
 | 
					
						
							| 
									
										
										
										
											2019-11-21 14:37:54 -05:00
										 |  |  |             ); | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  |         const state = utils.getCacheState(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // Inputs are re-evaluted before the post action, so we want the original key used for restore
 | 
					
						
							|  |  |  |         const primaryKey = core.getState(State.CacheKey); | 
					
						
							|  |  |  |         if (!primaryKey) { | 
					
						
							| 
									
										
										
										
											2019-11-21 14:37:54 -05:00
										 |  |  |             utils.logWarning(`Error retrieving key from state.`); | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (utils.isExactKeyMatch(primaryKey, state)) { | 
					
						
							|  |  |  |             core.info( | 
					
						
							|  |  |  |                 `Cache hit occurred on the primary key ${primaryKey}, not saving cache.` | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-14 17:27:38 -04:00
										 |  |  |         const cachePaths = core | 
					
						
							|  |  |  |             .getInput(Inputs.Path, { required: true }) | 
					
						
							|  |  |  |             .split("\n") | 
					
						
							|  |  |  |             .filter(x => x !== ""); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             await cache.saveCache(cachePaths, primaryKey); | 
					
						
							|  |  |  |         } catch (error) { | 
					
						
							|  |  |  |             if (error.name === cache.ValidationError.name) { | 
					
						
							|  |  |  |                 throw error; | 
					
						
							|  |  |  |             } else if (error.name === cache.ReserveCacheError.name) { | 
					
						
							|  |  |  |                 core.info(error.message); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 utils.logWarning(error.message); | 
					
						
							|  |  |  |             } | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } catch (error) { | 
					
						
							| 
									
										
										
										
											2019-11-21 14:37:54 -05:00
										 |  |  |         utils.logWarning(error.message); | 
					
						
							| 
									
										
										
										
											2019-10-30 14:48:49 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default run; |