mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Update tooling to use yapf for Python file formatting (issue #2171)
This commit is contained in:
@@ -5,13 +5,22 @@
|
||||
|
||||
import os, re, sys
|
||||
from clang_util import clang_format
|
||||
from file_util import *
|
||||
from file_util import eval_file, get_files, read_file, write_file
|
||||
from git_util import get_changed_files
|
||||
from yapf_util import yapf_format
|
||||
|
||||
# Valid extensions for files we want to clang-format.
|
||||
DEFAULT_LINT_WHITELIST_REGEX = r"(.*\.cpp|.*\.cc|.*\.h|.*\.mm)$"
|
||||
# File extensions that can be formatted.
|
||||
DEFAULT_LINT_WHITELIST_REGEX = r"(.*\.cpp|.*\.cc|.*\.h|.*\.java|.*\.mm|.*\.py)$"
|
||||
DEFAULT_LINT_BLACKLIST_REGEX = r"$^"
|
||||
|
||||
# Directories containing these path components will be ignored.
|
||||
IGNORE_DIRECTORIES = []
|
||||
|
||||
# Script directory.
|
||||
script_dir = os.path.dirname(__file__)
|
||||
root_dir = os.path.join(script_dir, os.pardir)
|
||||
|
||||
|
||||
def msg(filename, status):
|
||||
if sys.platform == 'win32':
|
||||
# Use Unix path separator.
|
||||
@@ -27,14 +36,32 @@ def msg(filename, status):
|
||||
|
||||
print "%-60s %s" % (filename, status)
|
||||
|
||||
|
||||
updatect = 0
|
||||
|
||||
|
||||
def read_config():
|
||||
style_cfg = os.path.join(root_dir, ".style.cfg")
|
||||
if os.path.exists(style_cfg):
|
||||
config = eval_file(style_cfg)
|
||||
if 'ignore_directories' in config:
|
||||
global IGNORE_DIRECTORIES
|
||||
IGNORE_DIRECTORIES = config['ignore_directories']
|
||||
|
||||
|
||||
def update_file(filename):
|
||||
oldcontents = read_file(filename)
|
||||
if len(oldcontents) == 0:
|
||||
msg(filename, "empty")
|
||||
return;
|
||||
return
|
||||
|
||||
if os.path.splitext(filename)[1] == ".py":
|
||||
# Format Python files using YAPF.
|
||||
newcontents = yapf_format(filename, oldcontents)
|
||||
else:
|
||||
# Format C/C++/ObjC/Java files using clang-format.
|
||||
newcontents = clang_format(filename, oldcontents)
|
||||
|
||||
newcontents = clang_format(filename, oldcontents)
|
||||
if newcontents is None:
|
||||
raise Exception("Failed to process %s" % filename)
|
||||
|
||||
@@ -47,7 +74,8 @@ def update_file(filename):
|
||||
msg(filename, "ok")
|
||||
return
|
||||
|
||||
def fix_style(filenames, white_list = None, black_list = None):
|
||||
|
||||
def fix_style(filenames, white_list=None, black_list=None):
|
||||
""" Execute clang-format with the specified arguments. """
|
||||
if not white_list:
|
||||
white_list = DEFAULT_LINT_WHITELIST_REGEX
|
||||
@@ -57,6 +85,16 @@ def fix_style(filenames, white_list = None, black_list = None):
|
||||
black_regex = re.compile(black_list)
|
||||
|
||||
for filename in filenames:
|
||||
# Ignore files from specific directories.
|
||||
ignore = False
|
||||
for dir_part in filename.split(os.sep):
|
||||
if dir_part in IGNORE_DIRECTORIES:
|
||||
msg(filename, "ignored")
|
||||
ignore = True
|
||||
break
|
||||
if ignore:
|
||||
continue
|
||||
|
||||
if filename.find('*') > 0:
|
||||
# Expand wildcards.
|
||||
filenames.extend(get_files(filename))
|
||||
@@ -83,6 +121,7 @@ def fix_style(filenames, white_list = None, black_list = None):
|
||||
else:
|
||||
msg(filename, "skipped")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) == 1:
|
||||
print "Usage: %s [file-path|git-hash|unstaged|staged] ..." % sys.argv[0]
|
||||
@@ -96,6 +135,9 @@ if __name__ == "__main__":
|
||||
print " staged\t\tProcess all staged files in the Git repo."
|
||||
sys.exit(1)
|
||||
|
||||
# Read the configuration file.
|
||||
read_config()
|
||||
|
||||
# Process anything passed on the command-line.
|
||||
fix_style(sys.argv[1:])
|
||||
print 'Done - Wrote %d files.' % updatect
|
||||
|
Reference in New Issue
Block a user