| # Copyright (c) 2017 The Chromium Embedded Framework Authors. All rights |
| # reserved. Use of this source code is governed by a BSD-style license that |
| # can be found in the LICENSE file |
| |
| from __future__ import absolute_import |
| from __future__ import print_function |
| from exec_util import exec_cmd |
| import os |
| import sys |
| |
| # Script directory. |
| script_dir = os.path.dirname(__file__) |
| root_dir = os.path.join(script_dir, os.pardir) |
| |
| if sys.platform == 'win32': |
| clang_format_exe = 'buildtools/win/clang-format.exe' |
| elif sys.platform == 'darwin': |
| clang_format_exe = 'buildtools/mac/clang-format' |
| elif sys.platform.startswith('linux'): |
| clang_format_exe = 'buildtools/linux64/clang-format' |
| else: |
| raise Exception("Unsupported platform: %s" % sys.platform) |
| |
| |
| def clang_format(file_name, file_contents): |
| # -assume-filename is necessary to find the .clang-format file and determine |
| # the language when specifying contents via stdin. |
| result = exec_cmd("%s -assume-filename=%s" % |
| (os.path.join(script_dir, clang_format_exe), |
| file_name), root_dir, file_contents.encode('utf-8')) |
| if result['err'] != '': |
| print("clang-format error: %s" % result['err']) |
| if result['out'] != '': |
| output = result['out'] |
| if sys.platform == 'win32': |
| # Convert to Unix line endings. |
| output = output.replace("\r", "") |
| return output |
| return None |