zig-overlay/update

58 lines
1.7 KiB
Text
Raw Normal View History

#!/usr/bin/env nix-shell
#! nix-shell -p ruby -i ruby
require 'net/http'
require 'json'
require 'pathname'
require 'fileutils'
ZIG_URI = URI("https://ziglang.org/download/index.json")
DEFAULT_SYSTEMS = ["x86_64-linux", "aarch64-linux", "aarch64-darwin", "x86_64-darwin"]
response = JSON.parse(Net::HTTP.get(ZIG_URI))
sources = if Pathname.new("sources.json").exist?
JSON.parse(File.read("sources.json"))
else
{ "master" => {} }
end
# Update versions
response.each do |k, v|
unless k == "master"
sources[k] = DEFAULT_SYSTEMS.to_h do |system|
data = if system == "x86_64-darwin"
response[k]["x86_64-macos"] or {}
elsif system == "aarch64-darwin"
response[k]["aarch64-macos"] or {}
else
response[k][system] or {}
end
[system, { "url" => data["tarball"],
"version" => k,
"sha256" => data["shasum"] }]
end
end
end
# Update master
sources["master"][response["master"]["date"]] = DEFAULT_SYSTEMS.to_h do |system|
data = if system == "x86_64-darwin"
response["master"]["x86_64-macos"]
elsif system == "aarch64-darwin"
response["master"]["aarch64-macos"]
else
response["master"][system]
end
[system, { "url" => data["tarball"],
"version" => response["master"]["version"],
"sha256" => data["shasum"] }]
end
sources["master"]["latest"] = sources["master"][response["master"]["date"]]
FileUtils.cp "sources.json", "sources.json.bak"
File.write "sources.json", JSON.pretty_generate(sources)
# Local Variables:
# mode: ruby
# End: