def download_from_github()

in elastic/endpoint/track_processors/assets_loader.py [0:0]


def download_from_github(track, packages, repo_path, assets_root):
    from elastic.package import assets
    from github import Github

    if not packages:
        raise ValueError("Required param 'packages' is empty or not configured")

    github = Github(os.getenv("ASSETS_AUTH_TOKEN") or None)
    repo = github.get_repo(repo_path)

    for package in packages:
        logger.info(f"Downloading assets of [{package}] from [{repo.html_url}]")
        entries = assets.get_remote_assets(package, repo)

        dest_package_path = os.path.join(assets_root, package)
        if os.path.exists(dest_package_path):
            shutil.rmtree(dest_package_path)

        count = 0
        for path, content in assets.download_assets(entries):
            asset_path = os.path.join(assets_root, path)
            os.makedirs(os.path.dirname(asset_path), exist_ok=True)
            with open(asset_path, "wb") as f:
                f.write(content)

            path_parts = os.path.split(path[len(package) + 1 :])
            if not path_parts[0]:
                continue
            if path_parts[0] in asset_loaders:
                asset_loaders[path_parts[0]](track, json.loads(content))
                count += 1

        logger.info(f"Loaded [{count}] assets")