blob: 2c01bfb8e9b75e23ae02b364ff6fdc7e4f1c53be [file] [log] [blame]
# 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