#!/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 sys, argparse import lib.fs as fs from cmakelang.format.__main__ import main as cmake_format_main # type: ignore include_files = [ "*.cmake", "CMakeLists.txt", ] exclude_dirs = ["subprojects", "build", "deps"] def main(): """ Cross-platform equivalent of using find and xargs with cmake-format. Lints by performing a dry run (--check) 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 = ["--in-place"] if args.format else ["--check"] files_recursive = fs.find_files(".", include_files, exclude_dirs) if args.format: print("Formatting files with CMake formatter:") else: print("Checking files with CMake formatter:") for file in files_recursive: print(file) if files_recursive: sys.argv = [""] + cmd_args + files_recursive result = cmake_format_main() if result == 0: print("CMake lint passed") sys.exit(result) else: print("No CMake files found to process.", file=sys.stderr) sys.exit(0) if __name__ == "__main__": main()