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")