40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { escape } from 'lodash';
 | |
| import { __ } from '~/locale';
 | |
| 
 | |
| const CODEOWNERS_REGEX = /Push.*protected branches.*CODEOWNERS/;
 | |
| const BRANCH_CHANGED_REGEX = /changed.*since.*start.*edit/;
 | |
| 
 | |
| export const createUnexpectedCommitError = () => ({
 | |
|   title: __('Unexpected error'),
 | |
|   messageHTML: __('Could not commit. An unexpected error occurred.'),
 | |
|   canCreateBranch: false,
 | |
| });
 | |
| 
 | |
| export const createCodeownersCommitError = message => ({
 | |
|   title: __('CODEOWNERS rule violation'),
 | |
|   messageHTML: escape(message),
 | |
|   canCreateBranch: true,
 | |
| });
 | |
| 
 | |
| export const createBranchChangedCommitError = message => ({
 | |
|   title: __('Branch changed'),
 | |
|   messageHTML: `${escape(message)}<br/><br/>${__('Would you like to create a new branch?')}`,
 | |
|   canCreateBranch: true,
 | |
| });
 | |
| 
 | |
| export const parseCommitError = e => {
 | |
|   const { message } = e?.response?.data || {};
 | |
| 
 | |
|   if (!message) {
 | |
|     return createUnexpectedCommitError();
 | |
|   }
 | |
| 
 | |
|   if (CODEOWNERS_REGEX.test(message)) {
 | |
|     return createCodeownersCommitError(message);
 | |
|   } else if (BRANCH_CHANGED_REGEX.test(message)) {
 | |
|     return createBranchChangedCommitError(message);
 | |
|   }
 | |
| 
 | |
|   return createUnexpectedCommitError();
 | |
| };
 |