'use strict';

var path = require('path');
var globby = require('globby');
var multimatch = require('multimatch');
var util = require('../util');

function deleteFile(path, store) {
  var file = store.get(path);
  file.state = 'deleted';
  file.contents = null;
  store.add(file);
}

module.exports = function (paths, options) {
  if (!Array.isArray(paths)) {
    paths = [paths];
  }

  paths = paths.map(function (filePath) {
    return path.resolve(filePath);
  });
  paths = util.globify(paths);
  options = options || {};

  var globOptions = options.globOptions || {};
  var files = globby.sync(paths, globOptions);
  files.forEach(function (file) {
    deleteFile(file, this.store);
  }.bind(this));

  this.store.each(function (file) {
    if (multimatch([file.path], paths).length !== 0) {
      deleteFile(file.path, this.store);
    }
  }.bind(this));
};
