scripts:preupload: Use upstream clang-format preupload hooks

upstream hooks has the autofix function implemented/fixed.
https://android-review.googlesource.com/c/platform/tools/repohooks/+/2135957

Change-Id: Ib57ae76cf8de5c523d323aaecd53103c35018085
diff --git a/preupload-hooks/GLOBAL-PREUPLOAD.cfg b/preupload-hooks/GLOBAL-PREUPLOAD.cfg
index 3e8c2d7..b87fdec 100644
--- a/preupload-hooks/GLOBAL-PREUPLOAD.cfg
+++ b/preupload-hooks/GLOBAL-PREUPLOAD.cfg
@@ -7,6 +7,7 @@
 [Builtin Hooks]
 pylint3 = true
 cpplint = true
+clang_format = true
 
-[Hook Scripts]
-repo_clang_format = ${REPO_ROOT}/scripts/preupload-hooks/clang-format.py --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
+[Builtin Hooks Options]
+clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
diff --git a/preupload-hooks/clang-format.py b/preupload-hooks/clang-format.py
deleted file mode 100755
index bedbaf3..0000000
--- a/preupload-hooks/clang-format.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/env python3
-# Copyright 2022 Google LLC
-# Copyright 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Wrapper to run git-clang-format and parse its output."""
-
-import argparse
-import os
-import sys
-
-_path = os.path.realpath(__file__ + '/../../../repohooks/')
-if sys.path[0] != _path:
-    sys.path.insert(0, _path)
-del _path
-# We have to import our local modules after the sys.path tweak.  We can't use
-# relative imports because this is an executable program, not a module.
-# pylint: disable=wrong-import-position,import-error
-import rh.shell
-import rh.utils
-
-
-# Since we're asking git-clang-format to print a diff, all modified filenames
-# that have formatting errors are printed with this prefix.
-DIFF_MARKER_PREFIX = '+++ b/'
-
-
-def get_parser():
-    """Return a command line parser."""
-    parser = argparse.ArgumentParser(description=__doc__)
-    parser.add_argument('--clang-format', default='clang-format',
-                        help='The path of the clang-format executable.')
-    parser.add_argument('--git-clang-format', default='git-clang-format',
-                        help='The path of the git-clang-format executable.')
-    parser.add_argument('--style', metavar='STYLE', type=str,
-                        help='The style that clang-format will use.')
-    parser.add_argument('--extensions', metavar='EXTENSIONS', type=str,
-                        help='Comma-separated list of file extensions to '
-                             'format.')
-    parser.add_argument('--fix', action='store_true',
-                        help='Fix any formatting errors automatically.')
-
-    scope = parser.add_mutually_exclusive_group(required=True)
-    scope.add_argument('--commit', type=str, default='HEAD',
-                       help='Specify the commit to validate.')
-    scope.add_argument('--working-tree', action='store_true',
-                       help='Validates the files that have changed from '
-                            'HEAD in the working directory.')
-
-    parser.add_argument('files', type=str, nargs='*',
-                        help='If specified, only consider differences in '
-                             'these files.')
-    return parser
-
-
-def main(argv):
-    """The main entry."""
-    parser = get_parser()
-    opts = parser.parse_args(argv)
-
-    cmd = [opts.git_clang_format, '--binary', opts.clang_format, '--diff']
-    if opts.style:
-        cmd.extend(['--style', opts.style])
-    if opts.extensions:
-        cmd.extend(['--extensions', opts.extensions])
-    if not opts.working_tree:
-        cmd.extend([f'{opts.commit}^', opts.commit])
-    cmd.extend(['--'] + opts.files)
-
-    # Fail gracefully if clang-format itself aborts/fails.
-    result = rh.utils.run(cmd, capture_output=True, check=False)
-    # Newer versions of git-clang-format will exit 1 when it worked.  Assume a
-    # real failure is any exit code above 1, or any time stderr is used, or if
-    # it exited 1 and produce anything useful to stdout.  If it exited 0,
-    # then assume all is well and we'll attempt to parse its output below.
-    if (result.returncode > 1 or result.stderr or
-        (result.stdout and result.returncode)):
-        print(f'clang-format failed:\ncmd: {result.cmdstr}\n'
-              f'stdout:\n{result.stdout}\nstderr:\n{result.stderr}',
-              file=sys.stderr)
-        return 1
-
-    stdout = result.stdout
-    if stdout.rstrip('\n') == 'no modified files to format':
-        # This is always printed when only files that clang-format does not
-        # understand were modified.
-        return 0
-
-    diff_filenames = []
-    for line in stdout.splitlines():
-        if line.startswith(DIFF_MARKER_PREFIX):
-            diff_filenames.append(line[len(DIFF_MARKER_PREFIX):].rstrip())
-
-    if diff_filenames:
-        if opts.fix:
-            result = rh.utils.run(['git', 'apply'], input=stdout, check=False)
-            if result.returncode:
-                print('Error: Unable to automatically fix things.\n'
-                      '  Make sure your checkout is clean first.\n'
-                      '  If you have multiple commits, you might have to '
-                      'manually rebase your tree first.',
-                      file=sys.stderr)
-                return result.returncode
-        else:
-            print('The following files have formatting errors:')
-            for filename in diff_filenames:
-                print(f'\t{filename}')
-            print('You can try to fix this by running:\n'
-                  f'{sys.argv[0]} --fix {rh.shell.cmd_to_str(argv)}')
-            return 1
-
-    return 0
-
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv[1:]))