initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
"""Download and extract Zig for this operating system."""
|
||||
import os
|
||||
import platform
|
||||
from pathlib import Path
|
||||
|
||||
from fetch import ensure_archive, extract_archive
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
TOOLS = ROOT / "tools"
|
||||
VERSION = "0.16.0"
|
||||
RELEASE = f"https://github.com/ziglang/zig/releases/tag/{VERSION}"
|
||||
|
||||
ARCH = {
|
||||
"amd64": "x86_64",
|
||||
"x86_64": "x86_64",
|
||||
"arm64": "aarch64",
|
||||
"aarch64": "aarch64",
|
||||
}
|
||||
OS_FILE = {
|
||||
"windows": ("windows", "zip", "zig.exe"),
|
||||
"darwin": ("macos", "tar.xz", "zig"),
|
||||
"linux": ("linux", "tar.xz", "zig"),
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
system = platform.system().lower()
|
||||
arch = ARCH.get(platform.machine().lower())
|
||||
spec = OS_FILE.get(system)
|
||||
if not arch or not spec:
|
||||
print(RELEASE)
|
||||
raise SystemExit(2)
|
||||
|
||||
os_name, ext, binary = spec
|
||||
folder = f"zig-{arch}-{os_name}-{VERSION}"
|
||||
if any(TOOLS.glob(f"zig*/{binary}")):
|
||||
return
|
||||
url = f"https://ziglang.org/download/{VERSION}/{folder}.{ext}"
|
||||
archive = TOOLS / f"{folder}.{ext}"
|
||||
print(url, flush=True)
|
||||
ensure_archive(url, archive)
|
||||
extract_archive(archive, TOOLS)
|
||||
found = sorted(TOOLS.glob(f"zig*/{binary}"))
|
||||
if not found:
|
||||
raise SystemExit(2)
|
||||
if os.name != "nt":
|
||||
for path in found:
|
||||
path.chmod(0o755)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user