#!/usr/bin/env python3 # Synergy -- mouse and keyboard sharing utility # Copyright (C) 2024 Symless Ltd. # # This package is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # found in the file LICENSE that should have accompanied this file. # # This package is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import lib.env as env env.ensure_in_venv(__file__) import argparse, sys import lib.fs as fs from clang_format import clang_format # type: ignore include_files = [ "*.h", "*.c", "*.hpp", "*.cpp", ] dirs = ["src"] def main(): """ Cross-platform equivalent of using find and xargs with clang-format. Lints by performing a dry run (--dry-run) which fails when formatting is needed. """ parser = argparse.ArgumentParser() parser.add_argument( "-f", "--format", action="store_true", help="In-place format all files", ) args = parser.parse_args() cmd_args = ["-i"] if args.format else ["--dry-run", "--Werror"] files_recursive = fs.find_files(dirs, include_files) if args.format: print("Formatting files with Clang formatter:") else: print("Checking files with Clang formatter:") for file in files_recursive: print(file) if files_recursive: sys.argv = [""] + cmd_args + files_recursive result = clang_format() if result == 0: print("Clang lint passed") sys.exit(result) else: print("No files for Clang to process", file=sys.stderr) sys.exit(0) if __name__ == "__main__": main()