diff options
Diffstat (limited to 'lib/python/qmk')
| -rw-r--r-- | lib/python/qmk/cli/cformat.py | 22 | 
1 files changed, 16 insertions, 6 deletions
| diff --git a/lib/python/qmk/cli/cformat.py b/lib/python/qmk/cli/cformat.py index 9333aaec4b..15158d9c7d 100644 --- a/lib/python/qmk/cli/cformat.py +++ b/lib/python/qmk/cli/cformat.py @@ -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.') [email protected]('--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 | 
