def iterate(config_file_path=None,<EOL>config=None,<EOL>variables=None,<EOL>tags=None,<EOL>validate=True,<EOL>validate_only=False,<EOL>with_diff=False):
<EOL>if not isinstance(variables or {}, dict):<EOL><INDENT>raise TypeError(ERRORS['<STR_LIT>'])<EOL><DEDENT>if not isinstance(tags or [], list):<EOL><INDENT>raise TypeError(ERRORS['<STR_LIT>'])<EOL><DEDENT>config = _get_config(config_file_path, config)<EOL>if validate or validate_only:<EOL><INDENT>_validate_config_schema(config)<EOL><DEDENT>if validate_only:<EOL><INDENT>logger.info('<STR_LIT>')<EOL>sys.exit(<NUM_LIT:0>)<EOL><DEDENT>repex_vars = _merge_variables(config['<STR_LIT>'], variables or {})<EOL>repex_tags = tags or []<EOL>logger.debug('<STR_LIT>', repex_tags)<EOL>for path in config['<STR_LIT>']:<EOL><INDENT>_process_path(path, repex_tags, repex_vars, with_diff)<EOL><DEDENT>
Iterate over all paths in `config_file_path`

    :param string config_file_path: a path to a repex config file
    :param dict config: a dictionary representing a repex config
    :param dict variables: a dict of variables (can be None)
    :param list tags: a list of tags to check for
    :param bool validate: whether to perform schema validation on the config
    :param bool validate_only: only perform validation without running
    :param bool with_diff: whether to write a diff of all changes to a file