31 lines
		
	
	
		
			945 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			945 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license
							 | 
						||
| 
								 | 
							
								 * Copyright Google LLC 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
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** The parts that make up a commit message for creating a commit message string. */
							 | 
						||
| 
								 | 
							
								export interface CommitMessageParts {
							 | 
						||
| 
								 | 
							
								  prefix: string;
							 | 
						||
| 
								 | 
							
								  type: string;
							 | 
						||
| 
								 | 
							
								  npmScope: string;
							 | 
						||
| 
								 | 
							
								  scope: string;
							 | 
						||
| 
								 | 
							
								  summary: string;
							 | 
						||
| 
								 | 
							
								  body: string;
							 | 
						||
| 
								 | 
							
								  footer: string;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Generate a commit message builder function, using the provided defaults.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export function commitMessageBuilder(defaults: CommitMessageParts) {
							 | 
						||
| 
								 | 
							
								  return (params: Partial<CommitMessageParts> = {}) => {
							 | 
						||
| 
								 | 
							
								    const {prefix, type, npmScope, scope, summary, body, footer} = {...defaults, ...params};
							 | 
						||
| 
								 | 
							
								    const scopeSlug = npmScope ? `${npmScope}/${scope}` : scope;
							 | 
						||
| 
								 | 
							
								    return `${prefix}${type}${scopeSlug ? '(' + scopeSlug + ')' : ''}: ${summary}\n\n${body}\n\n${
							 | 
						||
| 
								 | 
							
								        footer}`;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 |