nixpkgs/pkgs/development/compilers/mint/crystal2nix.cr
2018-06-17 13:03:47 +02:00

36 lines
912 B
Crystal

require "yaml"
require "json"
class PrefetchJSON
JSON.mapping(sha256: String)
end
File.open "shards.nix", "w+" do |file|
file.puts %({)
yaml = YAML.parse(File.read("shard.lock"))
yaml["shards"].as_h.each do |key, value|
owner, repo = value["github"].as_s.split("/")
url = "https://github.com/#{value["github"]}"
rev = if value["version"]?
"v#{value["version"]}"
else
value["commit"].as_s
end
sha256 = ""
args = ["--url", url, "--rev", rev]
Process.run("nix-prefetch-git", args: args) do |x|
x.error.each_line { |e| puts e }
sha256 = PrefetchJSON.from_json(x.output).sha256
end
file.puts %( #{key} = {)
file.puts %( owner = "#{owner}";)
file.puts %( repo = "#{repo}";)
file.puts %( rev = "#{rev}";)
file.puts %( sha256 = "#{sha256}";)
file.puts %( };)
end
file.puts %(})
end