def METHOD_NAME(config):
    workflow_yml = config.workflow.workflow
    resume_yml = config.workflow.resume_file
    resume_mode_on = config.workflow.resume
    trace_input = config.workflow.trace_input
    set_up_environment_variables(config)
    resume_dict = read_resume_info(resume_yml, workflow_yml)
    resume_step = resume_dict[workflow_yml]
    if not os.path.exists(workflow_yml):
        raise cea.ConfigError("Workflow YAML file not found: {workflow}".format(workflow=workflow_yml))
    with open(workflow_yml, 'r') as workflow_fp:
        workflow = yaml.safe_load(workflow_fp)
    for i, step in enumerate(workflow):
        if "script" in step:
            if resume_mode_on and i <= resume_step:
                # skip steps already completed while resuming
                print("Skipping workflow step {i}: script={script}".format(i=i, script=step["script"]))
                write_resume_info(resume_yml, resume_dict, workflow_yml, i)
                continue
            do_script_step(config, i, step, trace_input)
        elif "config" in step:
            config = do_config_step(config, step)
        else:
            raise ValueError("Invalid step configuration: {i} - {step}".format(i=i, step=step))
        write_resume_info(resume_yml, resume_dict, workflow_yml, i)