# This config file disables some of the ChromiumOS source style checks and
# adds a hook to validate .py files. Comment out the disable-flags for
# any checks you want to leave enabled. Edit utils/pylintrc to disable any
# pylint checks.

[Hook Overrides]
cros_license_check: false
long_line_check: true

[Hook Scripts]
pylint = ./utils/run_pylint.py
check_control_files = ./site_utils/presubmit_hooks/check_control_files.py
# Not enabled because it takes a few minutes. Put here for convenience
# and as a bookmark. TODO: http://crbug.com/558819 some wrapper script
# computing optimal -r options based on PRESUBMIT_FILES.
# unittest_suite = ./utils/unittest_suite.py # -r server/
check_json_files = ./site_utils/presubmit_hooks/check_json_files.py

[Hook Overrides Options]
long_line_check: --exclude_regex=\bfirmware_Cr50ConsoleCommands/pinmux$ --exclude_regex=\bcontrol(\.[\S]+)?$
