summary refs log tree commit diff
path: root/pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb')
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb56
1 files changed, 37 insertions, 19 deletions
diff --git a/pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb b/pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb
index 308e0b71c05..1bf623a4b77 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb
+++ b/pkgs/applications/networking/mailreaders/thunderbird-bin/generate_sources.rb
@@ -1,43 +1,61 @@
-require "open-uri"
-
 version = if ARGV.empty?
             "latest"
           else
             ARGV[0]
           end
 
-base_path = "http://archive.mozilla.org/pub/thunderbird/releases"
+base_path = "archive.mozilla.org/pub/thunderbird/releases"
 
-Source = Struct.new(:hash, :arch, :locale, :filename)
+arches = ["linux-i686", "linux-x86_64"]
 
-sources = open("#{base_path}/#{version}/SHA1SUMS") do |input|
-  input.readlines
-end.select do |line|
-  /\/thunderbird-.*\.tar\.bz2$/ === line && !(/source/ === line)
-end.map do |line|
-  hash, name = line.chomp.split(/ +/)
-  Source.new(hash, *(name.split("/")))
-end.sort_by do |source|
-  [source.locale, source.arch]
+arches.each do |arch|
+  system("wget", "--recursive", "--continue", "--no-parent", "--reject-regex", ".*\\?.*", "--reject", "xpi", "http://#{base_path}/#{version}/#{arch}/")
 end
 
-real_version = sources[0].filename.match(/thunderbird-([0-9.]*)\.tar\.bz2/)[1]
+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]}/thunderbird-*")[0].match(/thunderbird-([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}/thunderbird-*")[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
 
-arches = ["linux-i686", "linux-x86_64"]
 
 puts(<<"EOH")
-# This file is generated from generate_nix.rb. DO NOT EDIT.
+# 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_source.rb > source.nix
+# ruby generate_sources.rb > sources.nix
 
 {
   version = "#{real_version}";
   sources = [
 EOH
 
-sources.each do |source|
-  puts(%Q|    { locale = "#{source.locale}"; arch = "#{source.arch}"; sha1 = "#{source.hash}"; }|)
+locale_arch_path_tuples.zip(hashes) do |tuple, hash|
+  locale, arch, path = tuple
+
+  puts(%Q|    { locale = "#{locale}"; arch = "#{arch}"; sha256 = "#{hash}"; }|)
 end
 
 puts(<<'EOF')