2 * Copyright (C) 2011 KO GmbH <jos.van.den.oever@kogmbh.com>
4 * The JavaScript code in this page is free software: you can redistribute it
5 * and/or modify it under the terms of the GNU Affero General Public License
6 * (GNU AGPL) as published by the Free Software Foundation, either version 3 of
7 * the License, or (at your option) any later version. The code is distributed
8 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details.
11 * As additional permission under GNU AGPL version 3 section 7, you
12 * may distribute non-source (e.g., minimized or compacted) forms of
13 * that code without the copy of the GNU GPL normally required by
14 * section 4, provided you include this license notice and a URL
15 * through which recipients can access the Corresponding Source.
17 * As a special exception to the AGPL, any HTML file which merely makes function
18 * calls to this code, and for that purpose includes it by reference shall be
19 * deemed a separate work for copyright law purposes. In addition, the copyright
20 * holders of this code give you permission to combine this code with free
21 * software libraries that are released under the GNU LGPL. You may copy and
22 * distribute such a system following the terms of the GNU AGPL for this code
23 * and the LGPL for the libraries. If you modify this code, you may extend this
24 * exception to your version of the code, but you are not obligated to do so.
25 * If you do not wish to do so, delete this exception statement from your
28 * This license applies to this entire compilation.
30 * @source: http://www.webodf.org/
31 * @source: http://gitorious.org/odfkit/webodf/
33 /*global runtime: true, core: true*/
34 runtime.loadClass("core.Zip");
35 runtime.loadClass("core.Base64");
37 function addFiles(zip, pos, inputfiles, zipfiles, callback) {
39 if (inputfiles.length !== zipfiles.length) {
41 "Arrays inputfiles and zipfiles should have the same length.");
43 if (pos >= inputfiles.length) {
44 zip.write(function (err) {
49 var inputfile = inputfiles[pos],
50 zipmemberpath = zipfiles[pos];
51 runtime.readFile(inputfile, "binary", function (err, data) {
56 zip.save(zipmemberpath, data, false, new Date());
57 addFiles(zip, pos + 1, inputfiles, zipfiles, callback);
63 runtime.log("Usage:");
67 * This script takes 1+2n arguments
68 * First argument is the name of the target zip file.
69 * The next n arguments are the input files. The last n arguments are the
70 * names of the files in the zip file.
72 if (arguments.length % 2 !== 0) {
73 runtime.log("Wrong number of arguments.");
78 n = (args.length - 2) / 2,
79 zipfilename = args[1],
83 zip = new core.Zip(zipfilename, null);
84 for (i = 0; i < n; i += 1) {
85 inputmembers[i] = args[2 + i];
86 zipmembers[i] = args[2 + n + i];
88 addFiles(zip, 0, inputmembers, zipmembers, function (err) {