67 lines
1.6 KiB
Ruby
67 lines
1.6 KiB
Ruby
|
# TODO share code with thunderbird-bin/generate_nix.rb
|
||
|
|
||
|
version = if ARGV.empty?
|
||
|
"latest"
|
||
|
else
|
||
|
ARGV[0]
|
||
|
end
|
||
|
|
||
|
base_path = "download-installer.cdn.mozilla.net/pub/firefox/releases"
|
||
|
|
||
|
arches = ["linux-i686", "linux-x86_64"]
|
||
|
|
||
|
arches.each do |arch|
|
||
|
system("wget", "--recursive", "--continue", "--no-parent", "--reject-regex", ".*\\?.*", "--reject", "xpi", "http://#{base_path}/#{version}/#{arch}/")
|
||
|
end
|
||
|
|
||
|
locales = Dir.glob("#{base_path}/#{version}/#{arches[0]}/*").map do |path|
|
||
|
File.basename(path)
|
||
|
end.sort
|
||
|
|
||
|
locales.delete("index.html")
|
||
|
locales.delete("xpi")
|
||
|
|
||
|
# real version number, e.g. "30.0" instead of "latest".
|
||
|
real_version = Dir.glob("#{base_path}/#{version}/#{arches[0]}/#{locales[0]}/firefox-*")[0].match(/firefox-([0-9.]*)/)[1][0..-2]
|
||
|
|
||
|
locale_arch_path_tuples = locales.flat_map do |locale|
|
||
|
arches.map do |arch|
|
||
|
path = Dir.glob("#{base_path}/#{version}/#{arch}/#{locale}/firefox-*")[0]
|
||
|
|
||
|
[locale, arch, path]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
paths = locale_arch_path_tuples.map do |tuple| tuple[2] end
|
||
|
|
||
|
hashes = IO.popen(["sha256sum", "--binary", *paths]) do |input|
|
||
|
input.each_line.map do |line|
|
||
|
$stderr.puts(line)
|
||
|
|
||
|
line.match(/^[0-9a-f]*/)[0]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
puts(<<"EOH")
|
||
|
# This file is generated from generate_sources.rb. DO NOT EDIT.
|
||
|
# Execute the following command in a temporary directory to update the file.
|
||
|
#
|
||
|
# ruby generate_sources.rb > sources.nix
|
||
|
|
||
|
{
|
||
|
version = "#{real_version}";
|
||
|
sources = [
|
||
|
EOH
|
||
|
|
||
|
locale_arch_path_tuples.zip(hashes) do |tuple, hash|
|
||
|
locale, arch, path = tuple
|
||
|
|
||
|
puts(%Q| { locale = "#{locale}"; arch = "#{arch}"; sha256 = "#{hash}"; }|)
|
||
|
end
|
||
|
|
||
|
puts(<<'EOF')
|
||
|
];
|
||
|
}
|
||
|
EOF
|