From aa768f01dbb57ceca4df0d14db981e3c97957ee2 Mon Sep 17 00:00:00 2001 From: Jordan Demeulenaere Date: Thu, 6 Oct 2022 14:49:32 +0200 Subject: Allow preupload hooks to ignore more formatting ktlint rules This CL adds a --no-verify-format rule to ktlint.py so that preuploads can ignore more formatting rules. This will be used by projects who already use ktfmt for formatting new files, so that useful ktlint errors (like unused variables) are not hidden by a ton of ktlint formatting issues which we are now mostly ignoring. Bug: 235461679 Test: Manual Change-Id: I324bcaf4e9e2b087201810343471a55f2434339f --- .editorconfig | 6 ------ ktlint.py | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.editorconfig b/.editorconfig index e97aa07..1e3f51c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,9 +4,3 @@ max_line_length = 100 trim_trailing_whitespace = true insert_final_newline = true ij_kotlin_imports_layout=* - -# Comma-separated list of rules to disable -# ktlint disagrees on indentation with ktfmt in some cases -# TODO(b/185904220): paren spacing disabled because of a ktfmt bug -# TODO(b/189506168): curly spacing disabled because of a ktfmt bug -disabled_rules=indent,paren-spacing,curly-spacing,wrapping diff --git a/ktlint.py b/ktlint.py index 86b15ed..aefff63 100755 --- a/ktlint.py +++ b/ktlint.py @@ -42,14 +42,25 @@ def main(args=None): parser.add_argument('--file', '-f', nargs='*') parser.add_argument('--format', '-F', dest='format', action='store_true') parser.add_argument('--noformat', dest='format', action='store_false') - parser.set_defaults(format=False) + parser.add_argument('--no-verify-format', dest='verify_format', action='store_false') + parser.set_defaults(format=False, verify_format=True) args = parser.parse_args() kt_files = [f for f in args.file if f.endswith('.kt') or f.endswith('.kts')] if not kt_files: sys.exit(0) + disabled_rules = ['indent', 'paren-spacing', 'curly-spacing', 'wrapping'] + + # Disable more format-related rules if we shouldn't verify the format. This is usually + # the case if files we are checking are already checked by ktfmt. + if not args.verify_format: + disabled_rules += ['final-newline', 'no-consecutive-blank-lines', 'import-ordering'] + ktlint_args = kt_files[:] ktlint_args += ['--editorconfig', EDITOR_CONFIG] + ktlint_args += ['--disabled_rules=' + ','.join(disabled_rules)] + + # Automatically format files if requested. if args.format: ktlint_args += ['-F'] @@ -64,7 +75,8 @@ def main(args=None): if stdout: print('prebuilts/ktlint found errors in files you changed:') print(stdout.decode('utf-8')) - print(FORMAT_MESSAGE.format(MAIN_DIRECTORY, ' '.join(kt_files))) + if (args.verify_format): + print(FORMAT_MESSAGE.format(MAIN_DIRECTORY, ' '.join(kt_files))) sys.exit(1) else: sys.exit(0) -- cgit v1.2.3