Skip to content

Commit

Permalink
Add script to clang-format the entire repo.
Browse files Browse the repository at this point in the history
  • Loading branch information
David Goodwin committed Dec 18, 2018
1 parent 0897387 commit 0df75b3
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
BasedOnStyle: Google

IndentWidth: 2
ContinuationIndentWidth: 2
ContinuationIndentWidth: 4
UseTab: Never
MaxEmptyLinesToKeep: 2

Expand Down
6 changes: 6 additions & 0 deletions docs/contribute.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,9 @@ before submitting a pull request::

$ apt-get install clang-format clang-format-6.0
$ clang-format-6.0 --style=file -i *.proto *.cc *.h

For convenience there is a format.py script in tools/ that can be used
to clang-format all files within the repo::

$ cd .../tensorrt-inference-server # top-level of repo
$ python format.py *
92 changes: 92 additions & 0 deletions tools/format.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/usr/bin/python

# Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import argparse
import os
import subprocess

FLAGS = None
FORMAT_EXTS = ('proto', 'cc', 'h')
SKIP_PATHS = ('tools',)

def visit(path):
if FLAGS.verbose:
print("visiting " + path)

valid_ext = False
for ext in FORMAT_EXTS:
if path.endswith('.' + ext):
valid_ext = True
break
if not valid_ext:
if FLAGS.verbose:
print("skipping due to extension: " + path)
return True

for skip in SKIP_PATHS:
if path.startswith(skip):
if FLAGS.verbose:
print("skipping due to path prefix: " + path)
return True

args = ['clang-format-6.0', '--style=file', '-i']
if FLAGS.verbose:
args.append('-verbose')
args.append(path)

ret = subprocess.call(args)
if ret != 0:
print("format failed for " + path)
return False

return True

if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-v', '--verbose', action="store_true", required=False, default=False,
help='Enable verbose output')
parser.add_argument('paths', type=str, nargs='*', default=None,
help='Directories or files to format')
FLAGS = parser.parse_args()

if (FLAGS.paths is None) or (len(FLAGS.paths) == 0):
parser.print_help()
exit(1)

ret = True
for path in FLAGS.paths:
if not os.path.isdir(path):
if not visit(path):
ret = False
else:
for root, dirs, files in os.walk(path):
for name in files:
if not visit(os.path.join(root, name)):
ret = False

exit(0 if ret else 1)

0 comments on commit 0df75b3

Please sign in to comment.