def process_directory()

in scripts/register_azureml.py [0:0]


def process_directory(directory: Path, ml_client: MLClient, version: int) -> None:
    _logger.info("Processing: {0}".format(directory))
    assert directory.is_absolute()

    registration_file = directory / REG_CONFIG_FILENAME
    reg_config = read_json_path(registration_file.resolve())

    replacements = {"VERSION_REPLACEMENT_STRING": str(version)}

    _logger.info("Changing directory")
    os.chdir(directory)

    if ENV_KEY in reg_config.keys():
        for e in reg_config[ENV_KEY]:
            _logger.info("Registering environment: {0}".format(e))
            processed_file = e + ".processed"
            process_file(e, processed_file, replacements)
            curr_env: Environment = load_environment(processed_file)
            ml_client.environments.create_or_update(curr_env)
            _logger.info("Registered {0}".format(curr_env.name))
    else:
        _logger.info("No key for environments")

    if COMP_KEY in reg_config.keys():
        for c in reg_config[COMP_KEY]:
            _logger.info("Registering component: {0}".format(c))
            processed_file = c + ".processed"
            process_file(c, processed_file, replacements)
            curr_component = load_component(source=processed_file)
            ml_client.components.create_or_update(curr_component)
            _logger.info("Registered {0}".format(curr_component.name))
    else:
        _logger.info("No key for components")

    if DATA_KEY in reg_config.keys():
        _logger.info("Working through data entries")
        for data_info in reg_config[DATA_KEY]:
            script_file = data_info["script"]
            _logger.info("Running script {0}".format(script_file))
            subprocess.run(["python", script_file], check=True)
            for d in data_info["data_yamls"]:
                _logger.info("Processing {0}".format(d))
                processed_file = d + ".processed"
                process_file(d, processed_file, replacements)
                curr_dataset: Data = load_data(processed_file)
                ml_client.data.create_or_update(curr_dataset)
                _logger.info("Registered {0}".format(curr_dataset.name))
    else:
        _logger.info("No key for datasets")

    if SUBDIR_KEY in reg_config.keys():
        _logger.info("Working through nested directories")
        for d in reg_config[SUBDIR_KEY]:
            next_dir = directory / d
            process_directory(next_dir.resolve(), ml_client, version)
            os.chdir(directory)
    else:
        _logger.info("No subdirectories found for {0}".format(directory))