blob: b8d7905591b22dba4c5309d25fa9d053ff2ddd9f [file] [log] [blame]
Shawn Pearce346914f2013-06-22 14:20:21 -07001<html>
2<head>
3 <title>Gerrit Code Review - Releases</title>
4 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
5 <style>
6 #diffy_logo {
7 float: left;
8 width: 75px;
9 height: 70px;
10 margin-right: 20px;
11 }
12 #download_container table {
13 border-spacing: 0;
14 }
Shawn Pearcedf2ed282013-06-22 18:23:29 -070015 #download_container td {
16 padding-right: 5px;
17 }
Shawn Pearce346914f2013-06-22 14:20:21 -070018 .latest-release {
19 background-color: lightgreen;
20 }
21 .rc {
22 padding-left: 1em;
23 font-style: italic;
24 }
25 .size {
26 text-align: right;
27 }
28 </style>
29</head>
30<body>
31
32<h1>Gerrit Code Review - Releases</h1>
33<a href="http://code.google.com/p/gerrit">
Dave Borowitz261b2f02013-09-09 14:55:41 -070034 <img id="diffy_logo" src="https://gerrit-review.googlesource.com/static/diffy1.cache.png">
Shawn Pearce346914f2013-06-22 14:20:21 -070035</a>
36
37<div id='download_container'>
38</div>
39
40<script>
41$.getJSON(
David Ostrovskye19513c2013-07-12 22:16:49 +020042'https://www.googleapis.com/storage/v1beta2/b/gerrit-releases/o?projection=noAcl&fields=items(name%2Csize)&callback=?',
Shawn Pearce346914f2013-06-22 14:20:21 -070043function(data) {
44 var doc = document;
45 var frg = doc.createDocumentFragment();
46 var rx = /^gerrit(?:-full)?-([0-9.]+(?:-rc[0-9]+)?)[.]war/;
David Pursehouse1f470bb2013-10-17 14:41:50 +090047 var docs = 'https://gerrit-documentation.storage.googleapis.com/';
Shawn Pearce429eed32013-07-08 11:39:51 -070048 var src = 'https://gerrit.googlesource.com/gerrit/+/'
Shawn Pearce346914f2013-06-22 14:20:21 -070049
Dave Borowitza2d89252014-02-18 15:24:52 -080050 var items = data.items.filter(function(i) {
51 return i.name.indexOf('gerrit-snapshot-') != 0;
52 });
53
54
55 items.sort(function(a,b) {
Shawn Pearce346914f2013-06-22 14:20:21 -070056 var av = rx.exec(a.name);
57 var bv = rx.exec(b.name);
58 if (!av || !bv) {
59 return a.name > b.name ? 1 : -1;
60 }
61
62 var an = av[1].replace('-rc', '.rc').split('.')
63 var bn = bv[1].replace('-rc', '.rc').split('.')
64 while (an.length < bn.length) an.push('0');
65 while (an.length > bn.length) bn.push('0');
66 for (var i = 0; i < an.length; i++) {
67 var ai = an[i].indexOf('rc') == 0
68 ? parseInt(an[i].substring(2))
69 : 1000 + parseInt(an[i]);
70
71 var bi = bn[i].indexOf('rc') == 0
72 ? parseInt(bn[i].substring(2))
73 : 1000 + parseInt(bn[i]);
74
75 if (ai != bi) {
76 return ai > bi ? -1 : 1;
77 }
78 }
79 return 0;
80 });
81
82 var latest = false;
Dave Borowitza2d89252014-02-18 15:24:52 -080083 for (var i = 0; i < items.length; i++) {
84 var f = items[i];
Shawn Pearce346914f2013-06-22 14:20:21 -070085 var v = rx.exec(f.name);
86
87 if ('index.html' == f.name) {
88 continue;
89 }
90
91 var tr = doc.createElement('tr');
92 var td = doc.createElement('td');
93 var a = doc.createElement('a');
94 a.href = f.name;
95 if (v) {
96 a.appendChild(doc.createTextNode('Gerrit ' + v[1]));
97 } else {
98 a.appendChild(doc.createTextNode(f.name));
99 }
100 if (f.name.indexOf('-rc') > 0) {
101 td.className = 'rc';
102 } else if (!latest) {
103 latest = true;
104 tr.className='latest-release';
105 }
106 td.appendChild(a);
107 tr.appendChild(td);
108
109 td = doc.createElement('td');
Shawn Pearce429eed32013-07-08 11:39:51 -0700110 td.className = 'size';
111 if (f.size/(1024*1024) < 1) {
112 sizeText = Math.round(f.size/1024*10)/10 + ' KiB';
113 } else {
114 sizeText = Math.round(f.size/(1024*1024)*10)/10 + ' MiB';
115 }
116 td.appendChild(doc.createTextNode(sizeText));
117 tr.appendChild(td);
118
David Pursehouse1f470bb2013-10-17 14:41:50 +0900119 td_rel = doc.createElement('td');
120 td_doc = doc.createElement('td');
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700121 if (v && f.name.indexOf('-rc') < 0) {
David Pursehouse1f470bb2013-10-17 14:41:50 +0900122 // Release notes link
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700123 a = doc.createElement('a');
David Pursehouse1f470bb2013-10-17 14:41:50 +0900124 a.href = docs + 'ReleaseNotes/ReleaseNotes-' + v[1] + '.html';
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700125 a.appendChild(doc.createTextNode('Release Notes'));
David Pursehouse1f470bb2013-10-17 14:41:50 +0900126 td_rel.appendChild(a);
127
128 // Documentation link
129 a = doc.createElement('a');
130 a.href = docs + 'Documentation/' + v[1] + '/index.html';
131 a.appendChild(doc.createTextNode('Documentation'));
132 td_doc.appendChild(a);
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700133 }
David Pursehouse1f470bb2013-10-17 14:41:50 +0900134 tr.appendChild(td_rel);
135 tr.appendChild(td_doc);
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700136
137 td = doc.createElement('td');
Shawn Pearce429eed32013-07-08 11:39:51 -0700138 if (v) {
139 a = doc.createElement('a');
140 a.href = src + 'v' + v[1];
141 a.appendChild(doc.createTextNode('src'));
142 td.appendChild(a);
David Pursehousee75106a2013-06-24 19:10:18 +0900143 }
Shawn Pearce346914f2013-06-22 14:20:21 -0700144 tr.appendChild(td);
145
146 frg.appendChild(tr);
147 }
148
149 var tr = doc.createElement('tr');
150 var th = doc.createElement('th');
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700151 th.appendChild(doc.createTextNode('File'));
Shawn Pearce346914f2013-06-22 14:20:21 -0700152 tr.appendChild(th);
153
154 th = doc.createElement('th');
Shawn Pearcedf2ed282013-06-22 18:23:29 -0700155 th.appendChild(doc.createTextNode('Size'));
Shawn Pearce346914f2013-06-22 14:20:21 -0700156 tr.appendChild(th);
157
Shawn Pearce429eed32013-07-08 11:39:51 -0700158 tr.appendChild(doc.createElement('th'));
159 tr.appendChild(doc.createElement('th'));
160
Shawn Pearce346914f2013-06-22 14:20:21 -0700161 var table = doc.createElement('table');
162 table.appendChild(tr);
163 table.appendChild(frg);
164 doc.getElementById('download_container').appendChild(table);
165});
166</script>
167
168</body>
169</html>