/*
|
* grunt-contrib-compress
|
* http://gruntjs.com/
|
*
|
* Copyright (c) 2016 Chris Talkington, contributors
|
* Licensed under the MIT license.
|
*/
|
|
'use strict';
|
|
module.exports = function(grunt) {
|
var _ = require('lodash');
|
var compress = require('./lib/compress')(grunt);
|
|
grunt.registerMultiTask('compress', 'Compress files.', function() {
|
compress.options = this.options({
|
archive: null,
|
mode: null,
|
createEmptyArchive: true,
|
level: 1
|
});
|
|
if (compress.options.createEmptyArchive === false && this.files.length === 0) {
|
grunt.log.ok('No files found. Archive won\'t be created ("createEmptyArchive" option is set to true)');
|
return;
|
}
|
|
if (typeof compress.options.archive === 'function') {
|
compress.options.archive = compress.options.archive();
|
}
|
|
compress.options.mode = compress.options.mode || compress.autoDetectMode(compress.options.archive);
|
|
if (_.includes(['zip', 'tar', 'tgz', 'gzip', 'deflate', 'deflateRaw', 'brotli'], compress.options.mode) === false) {
|
grunt.fail.warn('Mode ' + String(compress.options.mode) + ' not supported.');
|
}
|
|
if (/gzip|brotli/.test(compress.options.mode) || compress.options.mode.slice(0, 7) === 'deflate') {
|
compress[compress.options.mode](this.files, this.async());
|
} else {
|
compress.tar(this.files, this.async());
|
}
|
});
|
};
|