mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	Make sure 'cformat' only runs on core files (#12909)
Co-authored-by: Zach White <skullydazed@drpepper.org>
This commit is contained in:
		
							parent
							
								
									1c81e69503
								
							
						
					
					
						commit
						3023015c5b
					
				
							
								
								
									
										2
									
								
								.github/workflows/format.yaml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/format.yaml
									
									
									
									
										vendored
									
									
								
							| @ -34,7 +34,7 @@ jobs: | ||||
|     - name: Run qmk cformat and qmk pyformat | ||||
|       shell: 'bash {0}' | ||||
|       run: | | ||||
|         qmk cformat -n $(< ~/files.txt) | ||||
|         qmk cformat --core-only -n $(< ~/files.txt) | ||||
|         cformat_exit=$? | ||||
|         qmk pyformat -n | ||||
|         pyformat_exit=$? | ||||
|  | ||||
| @ -65,11 +65,21 @@ def cformat_run(files): | ||||
|         return False | ||||
| 
 | ||||
| 
 | ||||
| def filter_files(files): | ||||
| def filter_files(files, core_only=False): | ||||
|     """Yield only files to be formatted and skip the rest | ||||
|     """ | ||||
|     if core_only: | ||||
|         # Filter non-core files | ||||
|         for index, file in enumerate(files): | ||||
|             # The following statement checks each file to see if the file path is | ||||
|             # - in the core directories | ||||
|             # - not in the ignored directories | ||||
|             if not any(i in str(file) for i in core_dirs) or any(i in str(file) for i in ignored): | ||||
|                 files[index] = None | ||||
|                 cli.log.debug("Skipping non-core file %s, as '--core-only' is used.", file) | ||||
| 
 | ||||
|     for file in files: | ||||
|         if file.name.split('.')[-1] in c_file_suffixes: | ||||
|         if file and file.name.split('.')[-1] in c_file_suffixes: | ||||
|             yield file | ||||
|         else: | ||||
|             cli.log.debug('Skipping file %s', file) | ||||
| @ -78,6 +88,7 @@ def filter_files(files): | ||||
| @cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Flag only, don't automatically format.") | ||||
| @cli.argument('-b', '--base-branch', default='origin/master', help='Branch to compare to diffs to.') | ||||
| @cli.argument('-a', '--all-files', arg_only=True, action='store_true', help='Format all core files.') | ||||
| @cli.argument('--core-only', arg_only=True, action='store_true', help='Format core files only.') | ||||
| @cli.argument('files', nargs='*', arg_only=True, type=normpath, completer=FilesCompleter('.c'), help='Filename(s) to format.') | ||||
| @cli.subcommand("Format C code according to QMK's style.", hidden=False if cli.config.user.developer else True) | ||||
| def cformat(cli): | ||||
| @ -85,7 +96,7 @@ def cformat(cli): | ||||
|     """ | ||||
|     # Find the list of files to format | ||||
|     if cli.args.files: | ||||
|         files = list(filter_files(cli.args.files)) | ||||
|         files = list(filter_files(cli.args.files, cli.args.core_only)) | ||||
| 
 | ||||
|         if not files: | ||||
|             cli.log.error('No C files in filelist: %s', ', '.join(map(str, cli.args.files))) | ||||
| @ -96,8 +107,7 @@ def cformat(cli): | ||||
| 
 | ||||
|     elif cli.args.all_files: | ||||
|         all_files = c_source_files(core_dirs) | ||||
|         # The following statement checks each file to see if the file path is in the ignored directories. | ||||
|         files = [file for file in all_files if not any(i in str(file) for i in ignored)] | ||||
|         files = list(filter_files(all_files, True)) | ||||
| 
 | ||||
|     else: | ||||
|         git_diff_cmd = ['git', 'diff', '--name-only', cli.args.base_branch, *core_dirs] | ||||
| @ -117,7 +127,7 @@ def cformat(cli): | ||||
| 
 | ||||
|     # Sanity check | ||||
|     if not files: | ||||
|         cli.log.error('No changed files detected. Use "qmk cformat -a" to format all files') | ||||
|         cli.log.error('No changed files detected. Use "qmk cformat -a" to format all core files') | ||||
|         return False | ||||
| 
 | ||||
|     # Run clang-format on the files we've found | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Erovia
						Erovia