diff --git a/Gruntfile.coffee b/Gruntfile.coffee index dac7ba6d0..ba1d5a8c3 100755 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -1,4 +1,6 @@ +path = require 'path' crx = require 'crx' +JSZip = require 'jszip' module.exports = (grunt) -> grunt.util.linefeed = '\n' @@ -234,19 +236,6 @@ module.exports = (grunt) -> ] tasks: 'build' - compress: - crx: - options: - archive: 'testbuilds/<%= pkg.name %><%= pkg.meta.suffix[pkg.channel] %>.crx.zip' - level: 9 - pretty: true - expand: true - flatten: true - src: 'testbuilds/crx<%= pkg.meta.suffix[pkg.channel] %>/*' - dest: '/' - date: '<%= pkg.meta.date %>' - mode: parseInt('644', 8) - clean: builds: 'builds' testbuilds: 'testbuilds' @@ -329,7 +318,7 @@ module.exports = (grunt) -> grunt.registerTask 'build-crx-channel', [ 'concat:crx' 'copy:crx' - 'compress:crx' + 'zip-crx' ] grunt.registerTask 'build-crx', [ @@ -348,6 +337,17 @@ module.exports = (grunt) -> 'clean:tmpcrx' ] + grunt.registerTask 'zip-crx', 'Pack CRX contents in ZIP file', -> + pkg = grunt.config 'pkg' + zip = new JSZip() + for file in grunt.file.expand "testbuilds/crx#{pkg.meta.suffix[pkg.channel]}/*" + zip.file path.basename(file), grunt.file.read(file, {encoding: null}), {date: new Date(pkg.meta.date)} + output = zip.generate + type: 'nodebuffer' + compression: 'DEFLATE' + compressionOptions: {level: 9} + grunt.file.write "testbuilds/#{pkg.name}#{pkg.meta.suffix[pkg.channel]}.crx.zip", output + grunt.registerTask 'sign-channel', 'Sign CRX package', (channel) -> done = @async() pkg = grunt.config 'pkg' diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 46cc83a2c..686d074f5 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -465,198 +465,6 @@ } } }, - "grunt-contrib-compress": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-0.13.0.tgz", - "dependencies": { - "archiver": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.13.1.tgz", - "dependencies": { - "async": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" - }, - "buffer-crc32": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" - }, - "glob": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz", - "dependencies": { - "inflight": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "lazystream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" - }, - "lodash": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz" - }, - "readable-stream": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } - }, - "tar-stream": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.2.tgz", - "dependencies": { - "bl": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz" - }, - "end-of-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", - "dependencies": { - "once": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "xtend": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" - } - } - }, - "zip-stream": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.0.tgz", - "dependencies": { - "compress-commons": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.0.tgz", - "dependencies": { - "crc32-stream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.1.tgz" - }, - "node-int64": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz" - } - } - } - } - } - } - }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "prettysize": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz" - } - } - }, "grunt-contrib-concat": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz", @@ -1081,6 +889,16 @@ } } }, + "jszip": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", + "dependencies": { + "pako": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz" + } + } + }, "load-grunt-tasks": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.1.0.tgz", diff --git a/package.json b/package.json index f63b265c9..6c6beb57f 100755 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "grunt-concurrent": "^1.0.0", "grunt-contrib-clean": "^0.6.0", "grunt-contrib-coffee": "^0.13.0", - "grunt-contrib-compress": "^0.13.0", "grunt-contrib-concat": "^0.5.1", "grunt-contrib-copy": "^0.8.0", "grunt-contrib-jshint": "^0.11.1", @@ -57,6 +56,7 @@ "grunt-markdown": "^0.7.0", "grunt-shell": "^1.1.2", "grunt-webstore-upload": "^0.8.2", + "jszip": "^2.5.0", "load-grunt-tasks": "^3.1.0", "npm-shrinkwrap": "^5.3.0" },