[Builtin Hooks]
rustfmt = true
bpfmt = true
clang_format = true

[Builtin Hooks Options]
rustfmt = --config-path=rustfmt.toml
# Only turn on clang-format check for the following subfolders.
clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
               cmds/idlcli/
               cmds/installd/
               cmds/servicemanager/
               include/input/
               include/powermanager/
               libs/binder/fuzzer/
               libs/binder/
               libs/binderthreadstate/
               libs/graphicsenv/
               libs/gui/
               libs/input/
               libs/nativedisplay/
               libs/renderengine/
               libs/ui/
               libs/vr/
               opengl/libs/
               services/bufferhub/
               services/inputflinger/
               services/powermanager/
               services/surfaceflinger/
               services/vibratorservice/
               services/vr/
               vulkan/
bpfmt = -d

[Hook Scripts]
owners_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "OWNERS$"
installd_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "^cmds/installd/"
dumpstate_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "^cmds/dumpstate/"
dumpsys_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "^cmds/dumpsys/"
# bugreports matches both cmds/bugreport and cmds/bugreportz
bugreports_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "^cmds/bugreport"
