'repo', META, ), MigrateShaToRev(), cfgv.WarnAdditionalKeys(('repo', 'rev', 'hooks'), warn_unknown_keys_repo), ) DEFAULT_LANGUAGE_VERSION = cfgv.Map( 'DefaultLanguageVersion', None, cfgv.NoAdditionalKeys(all_languages), *[cfgv.Optional(x, cfgv.check_string, C.DEFAULT) for x in all_languages]) CONFIG_SCHEMA = cfgv.Map( 'Config', None, cfgv.RequiredRecurse('repos', cfgv.Array(CONFIG_REPO_DICT)), cfgv.OptionalRecurse( 'default_language_version', DEFAULT_LANGUAGE_VERSION, {}, ), cfgv.Optional( 'default_stages', cfgv.check_array(cfgv.check_one_of(C.STAGES)), C.STAGES, ), cfgv.Optional('exclude', cfgv.check_regex, '^$'), cfgv.Optional('fail_fast', cfgv.check_bool, False), cfgv.Optional( 'minimum_pre_commit_version', cfgv.check_and(cfgv.check_string, check_min_version), '0', ), cfgv.WarnAdditionalKeys(
cfgv.check_one_of(('weekly', 'monthly', 'quarterly')), 'weekly', ), cfgv.Optional('skip', cfgv.check_array(cfgv.check_string), []), cfgv.Optional('submodules', cfgv.check_bool, False), ) SCHEMA = cfgv.Map( 'Config', None, # to cross-validate hook values cfgv.RequiredRecurse('repos', cfgv.Array(CONFIG_REPO_DICT)), # our configuration cfgv.OptionalRecurse('ci', CI_DICT, {}), ValidateSkip(), ) def main(argv: Sequence[str] | None = None) -> int: parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='*') args = parser.parse_args(argv) retv = 0 for filename in args.filenames: try: cfgv.load_from_filename( filename, schema=SCHEMA,