grunt-remove
Version:
Remove directory and files
113 lines (94 loc) • 3.55 kB
JavaScript
/*
* grunt-remove
* https://github.com/nvoinov/grunt-remove
*
* Copyright (c) 2013 nvoinov
* Licensed under the MIT license.
*/
;
var path = require('path'),
fs = require('fs');
module.exports = function (grunt) {
// Please see the Grunt documentation for more information regarding task
// creation: http://gruntjs.com/creating-tasks
grunt.registerMultiTask('remove', 'Remove directories and files.', function () {
var options = this.options();
var isTrace = options.trace === true ? true : false;
var dirList = this.data.dirList;
var fileList = this.data.fileList;
var isExists = fs.existsSync || path.existsSync;
var i = 0;
var _trace = function (msg) {
if (isTrace) {
grunt.log.writeln(msg.toString());
}
};
var delete_file = function (path) {
try {
fs.unlinkSync(path);
} catch (e) {
grunt.log.writeln('Unable to delete file: "' + path + '" Message : ' + e.toString());
}
};
var delete_dir = function (path) {
try {
fs.rmdirSync(path);
} catch (e) {
grunt.log.writeln('Unable to delete directory: "' + path + '" Message : ' + e.toString());
}
};
var isFile = function (path) {
return fs.statSync(path).isFile()
};
var isDirectory = function (path) {
return fs.statSync(path).isDirectory()
};
var delete_files_in_folder = function (dir) {
var iFile = 0;
var dFileList, filePath;
try {
dFileList = fs.readdirSync(dir);
} catch (e) {
grunt.log.writeln('Error read directory. ' + dir + ' Message : ' + e.toString());
return;
}
if (dFileList.length > 0) {
for (iFile = 0; iFile < dFileList.length; iFile += 1) {
filePath = path.resolve(dir, dFileList[iFile]);
if (isFile(filePath)) {
_trace('Delete file: ' + filePath);
delete_file(filePath);
} else {
if (isDirectory(filePath)) {
_trace('Delete files in directory: ' + filePath);
delete_files_in_folder(filePath);
}
}
}
}
_trace('Delete directory: ' + dir);
delete_dir(dir);
};
_trace('Start Delete directories...');
if (dirList && dirList.length > 0) {
for (i = 0; i < dirList.length; i += 1) {
if (isExists(dirList[i])) {
delete_files_in_folder(dirList[i]);
}
}
}
_trace('Directories has been deleted.');
_trace('Start delete files...');
if (fileList && fileList.length > 0) {
for (i = 0; i < fileList.length; i += 1) {
_trace('Delete file: ' + fileList[i]);
if (isExists(fileList[i])) {
if (isFile(fileList[i])) {
delete_file(fileList[i]);
}
}
}
}
_trace('Files has been deleted.');
});
};