~ruther/qmk_firmware

95477749629407e2a9e33c6ccf26ecc8b24ab07a — skullY 6 years ago d076234
CLI command to format C code
2 files changed, 37 insertions(+), 0 deletions(-)

M docs/cli.md
A lib/python/qmk/cli/cformat.py
M docs/cli.md => docs/cli.md +10 -0
@@ 36,3 36,13 @@ qmk compile <configuratorExport.json>
```
qmk compile -kb <keyboard_name> -km <keymap_name>
```

## `qmk cformat`

This command formats C code using clang-format. Run it with no arguments to format all core code, or pass filenames on the command line to run it on specific files.

**Usage**:

```
qmk cformat [file1] [file2] [...] [fileN]
```

A lib/python/qmk/cli/cformat.py => lib/python/qmk/cli/cformat.py +27 -0
@@ 0,0 1,27 @@
"""Format C code according to QMK's style.
"""
import os
import subprocess

from milc import cli


@cli.entrypoint("Format C code according to QMK's style.")
def main(cli):
    """Format C code according to QMK's style.
    """
    clang_format = ['clang-format', '-i']
    code_files = []
    for dir in ['drivers', 'quantum', 'tests', 'tmk_core']:
        for dirpath, dirnames, filenames in os.walk(dir):
            if 'tmk_core/protocol/usb_hid' in dirpath:
                continue
            for name in filenames:
                if name.endswith('.c') or name.endswith('.h') or name.endswith('.cpp'):
                    code_files.append(os.path.join(dirpath, name))

    try:
        subprocess.run(clang_format + code_files, check=True)
        cli.log.info('Successfully formatted the C code.')
    except subprocess.CalledProcessError:
        cli.log.error('Error formatting C code!')