Source: core/service-test-runner/services-for-title.js

/**
 * @module
 */

import difference from 'lodash.difference'

/**
 * Given a pull request title like
 * '[Travis Sonar] Support user token authentication'
 * extract the list of service names in square brackets
 * as an array of strings.
 *
 * @param {string} title Pull Request title
 * @returns {string[]} Array of service names
 */
function servicesForTitle(title) {
  const bracketed = /\[([^\]]+)\]/g

  const preNormalized = title.toLowerCase()

  let services = []
  let match
  while ((match = bracketed.exec(preNormalized))) {
    const [, bracketed] = match
    services = services.concat(bracketed.split(' '))
  }
  services = services.filter(Boolean).map(service => service.toLowerCase())

  const ignored = ['wip', 'rfc', 'security']
  return difference(services, ignored)
}

export default servicesForTitle