OpenVeo server API for plugins

API Docs for: 7.0.0
Show:

File: lib/grunt/removeTask.js

'use strict';

/**
 * @module grunt
 */

var fs = require('fs');
var async = require('async');
var fsApi = process.requireApi('lib/fileSystem.js');

/**
 * Defines a grunt task to remove a file or a directory.
 *
 *     // Register task
 *     var openVeoApi = require('@openveo/api');
 *     grunt.registerMultiTask('remove', openVeoApi.grunt.removeTask(grunt));
 *
 *     // Configure task
 *     grunt.initConfig({
 *       removeTask: {
 *         removeDirectory: {
 *           src: 'directoryToRemove'
 *         },
 *         removeFile: {
 *           src: 'fileToRemove.txt'
 *         }
 *       }
 *     });
 *
 * @class removeTask
 * @static
 */
module.exports = function(grunt) {
  return function() {
    var done = this.async();
    var asyncFunctions = [];

    // Iterate through src-dest pairs
    this.files.forEach(function(srcDestFile) {

      // Iterate through src-dest sources
      srcDestFile.src.forEach(function(src) {
        asyncFunctions.push(function(callback) {
          var removeFunction = grunt.file.isDir(src) ? fsApi.rmdir : fs.unlink;
          removeFunction(src, function(error) {
            grunt.verbose.writeln(src + ' removed');
            callback(error);
          });
        });
      });

    });

    async.series(asyncFunctions, function(error) {
      if (error)
        grunt.fail.fatal(error);

      done();
    });
  };
};