blob: 0e4ada7124cfab2bed0cad6db156022232fbb014 [file] [log] [blame]
#!/usr/bin/env python3
# Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
import argparse
import os
import subprocess
import sys
import utils
from subprocess import Popen, PIPE
GOOGLE_JAVA_FORMAT_DIFF = os.path.join(utils.THIRD_PARTY, 'google',
'google-java-format', '1.14.0',
'google-java-format-1.14.0', 'scripts',
'google-java-format-diff.py')
GOOGLE_YAPF = os.path.join(utils.THIRD_PARTY, 'google/yapf/20231013')
def ParseOptions():
result = argparse.ArgumentParser()
result.add_argument('--no-java',
help='Run google-java-format.',
action='store_true',
default=False)
result.add_argument('--python',
help='Run YAPF.',
action='store_true',
default=False)
return result.parse_known_args()
def FormatJava(upstream):
git_diff_process = Popen(['git', 'diff', '-U0', upstream], stdout=PIPE)
fmt_process = Popen([sys.executable, GOOGLE_JAVA_FORMAT_DIFF, '-p1', '-i'],
stdin=git_diff_process.stdout)
git_diff_process.stdout.close()
fmt_process.communicate()
def FormatPython(upstream):
changed_files_cmd = ['git', 'diff', '--name-only', upstream, '*.py']
changed_files = subprocess.check_output(changed_files_cmd).decode(
'utf-8').splitlines()
if not changed_files:
return
format_cmd = [
sys.executable,
os.path.join(GOOGLE_YAPF, 'yapf'), '--in-place', '--style', 'google'
]
format_cmd.extend(changed_files)
yapf_python_path = [GOOGLE_YAPF, os.path.join(GOOGLE_YAPF, 'third_party')]
subprocess.check_call(format_cmd,
env={'PYTHONPATH': ':'.join(yapf_python_path)})
def main():
(options, args) = ParseOptions()
upstream = subprocess.check_output(['git', 'cl',
'upstream']).decode('utf-8').strip()
if not options.no_java:
FormatJava(upstream)
if options.python:
FormatPython(upstream)
if __name__ == '__main__':
sys.exit(main())