UNPKG

grunt-remove

Version:
113 lines (94 loc) 3.55 kB
/* * grunt-remove * https://github.com/nvoinov/grunt-remove * * Copyright (c) 2013 nvoinov * Licensed under the MIT license. */ 'use strict'; 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.'); }); };