mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Support for status check pattern (#24633)
This PR is to allow users to specify status checks by patterns. Users can enter patterns in the "Status Check Pattern" `textarea` to match status checks and each line specifies a pattern. If "Status Check" is enabled, patterns cannot be empty and user must enter at least one pattern. Users will no longer be able to choose status checks from the table. But a __*`Matched`*__ mark will be added to the matched checks to help users enter patterns. Benefits: - Even if no status checks have been completed, users can specify necessary status checks in advance. - More flexible. Users can specify a series of status checks by one pattern. Before:  After:  --------- Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| import $ from 'jquery'; | ||||
| import {minimatch} from 'minimatch'; | ||||
| import {createMonaco} from './codeeditor.js'; | ||||
| import {onInputDebounce, toggleElem} from '../utils/dom.js'; | ||||
|  | ||||
| const {appSubUrl, csrfToken} = window.config; | ||||
|  | ||||
| @@ -81,4 +83,26 @@ export function initRepoSettingBranches() { | ||||
|     const $target = $($(this).attr('data-target')); | ||||
|     if (this.checked) $target.addClass('disabled'); // only disable, do not auto enable | ||||
|   }); | ||||
|  | ||||
|   // show the `Matched` mark for the status checks that match the pattern | ||||
|   const markMatchedStatusChecks = () => { | ||||
|     const patterns = (document.getElementById('status_check_contexts').value || '').split(/[\r\n]+/); | ||||
|     const validPatterns = patterns.map((item) => item.trim()).filter(Boolean); | ||||
|     const marks = document.getElementsByClassName('status-check-matched-mark'); | ||||
|  | ||||
|     for (const el of marks) { | ||||
|       let matched = false; | ||||
|       const statusCheck = el.getAttribute('data-status-check'); | ||||
|       for (const pattern of validPatterns) { | ||||
|         if (minimatch(statusCheck, pattern)) { | ||||
|           matched = true; | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       toggleElem(el, matched); | ||||
|     } | ||||
|   }; | ||||
|   markMatchedStatusChecks(); | ||||
|   document.getElementById('status_check_contexts').addEventListener('input', onInputDebounce(markMatchedStatusChecks)); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user