| 
									
										
										
										
											2015-10-27 23:19:52 +01:00
										 |  |  | #!/usr/bin/env node | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-03 21:56:39 -08:00
										 |  |  | // Usage: | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // build analytics start|success|error|<exitCode> <actionCategory> <actionName> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-27 23:19:52 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var analytics = require('./analytics'); | 
					
						
							|  |  |  | var fs = require('fs'); | 
					
						
							|  |  |  | var path = require('path'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var eventType = process.argv[2]; | 
					
						
							|  |  |  | var actionCategory = process.argv[3]; | 
					
						
							|  |  |  | var actionName = process.argv[4]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!analytics[actionCategory + 'Start']) { | 
					
						
							|  |  |  |   throw new Error('Unknown build-analytics actionCategory "' + actionCategory + '"'); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-03 21:56:39 -08:00
										 |  |  | var exitCode = Number.parseInt(eventType, 10); | 
					
						
							|  |  |  | if (!Number.isNaN(exitCode)) { | 
					
						
							|  |  |  |   eventType = (exitCode === 0) ? 'success' : 'error'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-27 23:19:52 +01:00
										 |  |  | if (eventType != 'start' && eventType != 'success' && eventType != 'error') { | 
					
						
							|  |  |  |   throw new Error('Unknown build-analytics eventType "' + eventType + '"'); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var startTimestampFilePath = path.resolve(path.join(__dirname, '..', '..', 'tmp', 'analytics', actionCategory + '-' + actionName)); | 
					
						
							|  |  |  | var analyticsDirPath = path.dirname(startTimestampFilePath); | 
					
						
							|  |  |  | var tmpDirPath = path.dirname(analyticsDirPath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!fs.existsSync(tmpDirPath)) { | 
					
						
							|  |  |  |   fs.mkdirSync(tmpDirPath); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | if (!fs.existsSync(analyticsDirPath)) { | 
					
						
							|  |  |  |   fs.mkdirSync(analyticsDirPath); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | switch (eventType) { | 
					
						
							|  |  |  |   case 'start': | 
					
						
							|  |  |  |     analytics[actionCategory + 'Start'](actionName); | 
					
						
							|  |  |  |     fs.writeFileSync(startTimestampFilePath, Date.now(), 'utf-8'); | 
					
						
							|  |  |  |     break; | 
					
						
							|  |  |  |   case 'success': | 
					
						
							| 
									
										
										
										
											2015-12-21 14:50:56 -08:00
										 |  |  |     try { | 
					
						
							|  |  |  |       var startTime = fs.readFileSync(startTimestampFilePath, 'utf-8'); | 
					
						
							|  |  |  |       analytics[actionCategory + 'Success'](actionName, Date.now() - startTime); | 
					
						
							|  |  |  |       fs.unlinkSync(startTimestampFilePath); | 
					
						
							|  |  |  |     } catch(e) { | 
					
						
							|  |  |  |       console.log('No start timestamp file "' + startTimestampFilePath + '" found, skipping analytics.'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-10-27 23:19:52 +01:00
										 |  |  |     break; | 
					
						
							|  |  |  |   case 'error': | 
					
						
							|  |  |  |     var startTime = fs.readFileSync(startTimestampFilePath, 'utf-8'); | 
					
						
							|  |  |  |     analytics[actionCategory + 'Error'](actionName, Date.now() - startTime); | 
					
						
							|  |  |  |     fs.unlinkSync(startTimestampFilePath); | 
					
						
							|  |  |  | } |