mirror of
https://github.com/bentoml/OpenLLM.git
synced 2026-01-23 06:52:42 -05:00
50 lines
2.3 KiB
Python
Executable File
50 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
import os
|
|
import typing as t
|
|
from pathlib import Path
|
|
|
|
import fs
|
|
from ghapi.all import GhApi
|
|
from jinja2 import Environment
|
|
from jinja2.loaders import FileSystemLoader
|
|
from plumbum.cmd import curl, cut, shasum
|
|
|
|
if t.TYPE_CHECKING:
|
|
from plumbum.commands.base import Pipeline
|
|
|
|
from openllm._types import DictStrAny
|
|
|
|
# get git root from this file
|
|
ROOT = Path(__file__).parent.parent
|
|
|
|
_OWNER = "bentoml"
|
|
_REPO = "openllm"
|
|
|
|
_gz_strategies: dict[t.Literal["macos_arm", "macos_intel", "linux_intel"], str] = {"macos_arm": "aarch64-apple-darwin", "macos_intel": "x86_64-apple-darwin", "linux_intel": "x86_64-unknown-linux-musl"}
|
|
|
|
def determine_release_url(svn_url: str, tag: str, target: t.Literal["macos_arm", "macos_intel", "linux_intel", "archive"]) -> str:
|
|
if target == "archive": return f"{svn_url}/archive/{tag}.tar.gz"
|
|
return f"{svn_url}/releases/download/{tag}/openllm-{tag.replace('v', '')}-{_gz_strategies[target]}.tar.gz"
|
|
|
|
# curl -sSL <svn_url>/archive/refs/tags/<tag>.tar.gz | shasum -a256 | cut -d'' -f1
|
|
def get_release_hash_command(svn_url: str, tag: str) -> Pipeline:
|
|
return curl["-sSL", svn_url] | shasum["-a256"] | cut["-d", " ", "-f1"]
|
|
|
|
def main() -> int:
|
|
api = GhApi(owner=_OWNER, repo=_REPO, authenticate=False)
|
|
_info = api.repos.get()
|
|
release_tag = api.repos.get_latest_release().name
|
|
|
|
shadict: DictStrAny = {k: get_release_hash_command(determine_release_url(_info.svn_url, release_tag, k), release_tag)().strip() for k in _gz_strategies}
|
|
shadict["archive"] = get_release_hash_command(determine_release_url(_info.svn_url, release_tag, "archive"), release_tag)().strip()
|
|
|
|
ENVIRONMENT = Environment(extensions=["jinja2.ext.do", "jinja2.ext.loopcontrols", "jinja2.ext.debug"], trim_blocks=True, lstrip_blocks=True, loader=FileSystemLoader((ROOT / "Formula").__fspath__(), followlinks=True))
|
|
template_file = "openllm.rb.j2"
|
|
with (ROOT / "Formula" / "openllm.rb").open("w") as f:
|
|
f.write(ENVIRONMENT.get_template(template_file, globals={"determine_release_url": determine_release_url}).render(shadict=shadict, __tag__=release_tag, __cmd__=fs.path.join(os.path.basename(os.path.dirname(__file__)), os.path.basename(__file__)), __template_file__=fs.path.join("Formula", template_file), __gz_extension__=_gz_strategies, **_info))
|
|
f.write("\n")
|
|
return 0
|
|
|
|
if __name__ == "__main__": raise SystemExit(main())
|