def METHOD_NAME(package_name: str, output_folder: str, build_conf: bool = False) -> None:
    _LOGGER.info("Building template %s", package_name)
    package_folder = Path(output_folder) / Path(package_name)
    if build_conf:
        build_default_conf(package_folder, package_name)
    conf = read_conf(package_folder)
    if not conf:
        raise ValueError("Create a {} file before calling this script".format(package_folder / CONF_NAME))
    if not conf.get("auto_update", True):
        _LOGGER.info(f"Package {package_name} has no auto-packaging update enabled")
        return
    env = Environment(loader=PackageLoader("packaging_tools", "templates/packaging_files"), keep_trailing_newline=True)
    conf = build_config(conf)
    for template_name in env.list_templates():
        future_filepath = Path(output_folder) / package_name / template_name
        # Might decide to make it more generic one day
        if template_name == "CHANGELOG.md" and future_filepath.exists():
            _LOGGER.info("Skipping CHANGELOG.md template, since a previous one was found")
            # Never overwirte the ChangeLog
            continue
        template = env.get_template(template_name)
        result = template.render(**conf)
        # __init__.py is a weird one
        if template_name == "__init__.py":
            split_package_name = package_name.split("-")[:-1]
            for i in range(len(split_package_name)):
                init_path = Path(output_folder).joinpath(package_name, *split_package_name[: i + 1], template_name)
                with open(init_path, "w") as fd:
                    fd.write(result)
            continue
        with open(future_filepath, "w") as fd:
            fd.write(result)
    # azure_bdist_wheel had been removed, but need to delete it manually
    with suppress(FileNotFoundError):
        (Path(output_folder) / package_name / "azure_bdist_wheel.py").unlink()
    _LOGGER.info("Template done %s", package_name)