[tor-commits] [tor-browser-bundle/master] Bug 16551: generate a downloads.json file
gk at torproject.org
gk at torproject.org
Tue Sep 8 08:56:12 UTC 2015
commit 3dd1fc4afa36266027a2785a443757b2c6c3d93d
Author: Nicolas Vigier <boklm at torproject.org>
Date: Fri Aug 21 16:40:03 2015 +0200
Bug 16551: generate a downloads.json file
---
gitian/check-prerequisites.sh | 2 +-
tools/update-responses/README.md | 6 ++---
tools/update-responses/update_responses | 41 +++++++++++++++++++++++++++++++
3 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/gitian/check-prerequisites.sh b/gitian/check-prerequisites.sh
index 8518ffe..32c9b7b 100755
--- a/gitian/check-prerequisites.sh
+++ b/gitian/check-prerequisites.sh
@@ -60,7 +60,7 @@ else
exit 1
fi
-update_responses_pkg="libyaml-perl libfile-slurp-perl libxml-writer-perl libio-captureoutput-perl libfile-which-perl libparallel-forkmanager-perl libxml-libxml-perl libwww-perl"
+update_responses_pkg="libyaml-perl libfile-slurp-perl libxml-writer-perl libio-captureoutput-perl libfile-which-perl libparallel-forkmanager-perl libxml-libxml-perl libwww-perl libjson-perl"
missing_pkg=''
for pkg in $update_responses_pkg
do
diff --git a/tools/update-responses/README.md b/tools/update-responses/README.md
index 5fe69a2..5440b0d 100644
--- a/tools/update-responses/README.md
+++ b/tools/update-responses/README.md
@@ -14,7 +14,7 @@ Dependencies
The following perl modules need to be installed to run the script:
FindBin YAML File::Slurp Digest::SHA XML::Writer File::Temp
IO::CaptureOutput File::Which Parallel::ForkManager XML::LibXML
- LWP
+ LWP JSON
On Debian / Ubuntu you can install them with:
@@ -23,7 +23,7 @@ On Debian / Ubuntu you can install them with:
libdigest-sha-perl libxml-writer-perl \
libio-captureoutput-perl libfile-which-perl \
libparallel-forkmanager-perl libxml-libxml-perl \
- libwww-perl
+ libwww-perl libjson-perl
```
On Red Hat / Fedora you can install them with:
@@ -31,7 +31,7 @@ On Red Hat / Fedora you can install them with:
```
# for module in FindBin YAML File::Slurp Digest::SHA XML::Writer \
File::Temp IO::CaptureOutput File::Which \
- Parallel::ForkManager XML::LibXML LWP
+ Parallel::ForkManager XML::LibXML LWP JSON
do yum install "perl($module)"; done
```
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index b1b3331..72a19d7 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -19,6 +19,7 @@ use Parallel::ForkManager;
use File::Basename;
use XML::LibXML '1.70';
use LWP::Simple;
+use JSON;
# Set umask and locale to provide a consistent environment for MAR file
# generation, etc.
@@ -109,6 +110,32 @@ sub get_version_files {
$config->{versions}{$version}{files} = $files;
}
+sub get_version_downloads {
+ my ($config, $version) = @_;
+ my $downloads = {};
+ my $vdir = "$releases_dir/$version";
+ opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
+ foreach my $file (readdir $d) {
+ next unless -f "$vdir/$file";
+ my ($os, $lang);
+ if ($file =~ m/^TorBrowser-$version-osx64_(.+).dmg$/) {
+ ($os, $lang) = ('osx64', $1);
+ } elsif ($file =~ m/^tor-browser-(linux32|linux64)-${version}_(.+).tar.xz$/) {
+ ($os, $lang) = ($1, $2);
+ } elsif ($file =~ m/^torbrowser-install-${version}_(.+).exe$/) {
+ ($os, $lang) = ('win32', $1);
+ } else {
+ next;
+ }
+ $downloads->{$os}{$lang} = {
+ binary => "$config->{versions}{$version}{download_url}/$file",
+ sig => "$config->{versions}{$version}{download_url}/$file.asc",
+ };
+ }
+ closedir $d;
+ $config->{versions}{$version}{downloads} = $downloads;
+}
+
sub extract_mar {
my ($mar_file, $dest_dir) = @_;
my $old_cwd = getcwd;
@@ -301,6 +328,19 @@ sub write_htaccess {
}
}
+sub write_downloads_json {
+ my ($config, @channels) = @_;
+ @channels = keys %{$config->{channels}} unless @channels;
+ foreach my $channel (@channels) {
+ my $version = $config->{channels}{$channel};
+ my $data = {
+ version => $version,
+ downloads => get_version_downloads($config, $version),
+ };
+ write_htdocs($channel, 'downloads.json', encode_json($data));
+ }
+}
+
sub check_deps {
foreach my $bin (qw(bunzip2 mar mbsdiff make_incremental_update.sh)) {
exit_error "Cannot find $bin in PATH" unless which($bin);
@@ -501,6 +541,7 @@ my %actions = (
}
write_responses($config, @channels);
write_htaccess($config, @channels);
+ write_downloads_json($config, @channels);
clean_htdocs(@channels);
},
gen_incrementals => sub {
More information about the tor-commits
mailing list