| 
									
										
										
										
											2017-09-22 19:51:03 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // tslint:disable:no-console
 | 
					
						
							| 
									
										
										
										
											2017-02-03 08:10:41 +00:00
										 |  |  | module.exports = (gulp) => () => { | 
					
						
							|  |  |  |   const validateCommitMessage = require('../validate-commit-message'); | 
					
						
							|  |  |  |   const childProcess = require('child_process'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // We need to fetch origin explicitly because it might be stale.
 | 
					
						
							|  |  |  |   // I couldn't find a reliable way to do this without fetch.
 | 
					
						
							|  |  |  |   childProcess.exec( | 
					
						
							|  |  |  |       'git fetch origin master && git log --reverse --format=%s HEAD ^origin/master', | 
					
						
							|  |  |  |       (error, stdout, stderr) => { | 
					
						
							|  |  |  |         if (error) { | 
					
						
							|  |  |  |           console.log(stderr); | 
					
						
							|  |  |  |           process.exit(1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         let someCommitsInvalid = false; | 
					
						
							| 
									
										
										
										
											2017-02-10 21:22:58 -08:00
										 |  |  |         let commitsByLine = stdout.trim().split(/\n/).filter(line => line != ''); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-03 08:10:41 +00:00
										 |  |  |         console.log(`Examining ${commitsByLine.length} commits between HEAD and master`); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (commitsByLine.length == 0) { | 
					
						
							|  |  |  |           console.log('There are zero new commits between this HEAD and master'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         someCommitsInvalid = !commitsByLine.every(validateCommitMessage); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (someCommitsInvalid) { | 
					
						
							|  |  |  |           console.log('Please fix the failing commit messages before continuing...'); | 
					
						
							|  |  |  |           console.log( | 
					
						
							|  |  |  |               'Commit message guidelines: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#-commit-message-guidelines'); | 
					
						
							|  |  |  |           process.exit(1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | }; |