| # Copyright 2022 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Provides utility for formatting C & C++ files. |
| |
| This currently only supports clang-format. |
| """ |
| |
| import os |
| from typing import Optional, Union |
| |
| from chromite.lib import constants |
| from chromite.lib import cros_build_lib |
| |
| |
| def Data( |
| data: str, |
| path: Optional[Union[str, os.PathLike]] = None, |
| ) -> str: |
| """Format C & C++ |data|. |
| |
| Args: |
| data: The file content to lint. |
| path: The file name for diagnostics/configs/etc... |
| |
| Returns: |
| Formatted data. |
| """ |
| result = cros_build_lib.run( |
| [ |
| constants.CHROMITE_SCRIPTS_DIR / "clang-format", |
| "--style=file", |
| f"--assume-filename={path}", |
| ], |
| capture_output=True, |
| input=data, |
| encoding="utf-8", |
| ) |
| return result.stdout |