'use strict';

Object.defineProperty(exports, '__esModule', {
  value: true
});
exports.default = getConfigsOfProjectsToRun;

var _getProjectDisplayName = _interopRequireDefault(
  require('./getProjectDisplayName')
);

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {default: obj};
}

/**
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
function getConfigsOfProjectsToRun(projectConfigs, opts) {
  const projectFilter = createProjectFilter(opts);
  return projectConfigs.filter(config => {
    const name = (0, _getProjectDisplayName.default)(config);
    return projectFilter(name);
  });
}

function createProjectFilter(opts) {
  const {selectProjects, ignoreProjects} = opts;

  const always = () => true;

  const selected = selectProjects
    ? name => name && selectProjects.includes(name)
    : always;
  const notIgnore = ignoreProjects
    ? name => !(name && ignoreProjects.includes(name))
    : always;

  function test(name) {
    return selected(name) && notIgnore(name);
  }

  return test;
}
