mirror of
https://github.com/FULU-Foundation/OrcaSlicer-bambulab.git
synced 2026-05-14 06:53:47 -07:00
Initial release
This commit is contained in:
66
tools/pjarczak_bambu_runtime/fetch_nlohmann_json.py
Normal file
66
tools/pjarczak_bambu_runtime/fetch_nlohmann_json.py
Normal file
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env python3
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import pathlib
|
||||
import sys
|
||||
import tempfile
|
||||
import urllib.request
|
||||
|
||||
URLS = [
|
||||
"https://raw.githubusercontent.com/nlohmann/json/v3.11.3/single_include/nlohmann/json.hpp",
|
||||
"https://raw.githubusercontent.com/nlohmann/json/develop/single_include/nlohmann/json.hpp",
|
||||
]
|
||||
|
||||
|
||||
def default_dest() -> pathlib.Path:
|
||||
return pathlib.Path(__file__).resolve().parents[2] / "src" / "nlohmann" / "json.hpp"
|
||||
|
||||
|
||||
def valid_header(text: str) -> bool:
|
||||
return "NLOHMANN_JSON_VERSION_MAJOR" in text and "namespace nlohmann" in text
|
||||
|
||||
|
||||
def download(url: str) -> str:
|
||||
with urllib.request.urlopen(url, timeout=60) as r:
|
||||
data = r.read()
|
||||
return data.decode("utf-8")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--dest", default=str(default_dest()))
|
||||
args = parser.parse_args()
|
||||
|
||||
dest = pathlib.Path(args.dest).resolve()
|
||||
if dest.is_file() and dest.stat().st_size > 0:
|
||||
text = dest.read_text(encoding="utf-8", errors="ignore")
|
||||
if valid_header(text):
|
||||
print(f"nlohmann json already present: {dest}")
|
||||
return 0
|
||||
|
||||
dest.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
last_error = None
|
||||
for url in URLS:
|
||||
try:
|
||||
print(f"downloading {url}")
|
||||
text = download(url)
|
||||
if not valid_header(text):
|
||||
raise RuntimeError("downloaded file does not look like nlohmann/json.hpp")
|
||||
with tempfile.NamedTemporaryFile("w", delete=False, encoding="utf-8", dir=str(dest.parent)) as tmp:
|
||||
tmp.write(text)
|
||||
tmp_path = pathlib.Path(tmp.name)
|
||||
tmp_path.replace(dest)
|
||||
print(f"saved {dest}")
|
||||
return 0
|
||||
except Exception as exc:
|
||||
last_error = exc
|
||||
print(f"failed {url}: {exc}", file=sys.stderr)
|
||||
|
||||
print(f"failed to fetch nlohmann/json.hpp: {last_error}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user