Validates and normalizes the options passed to `process`.

@private
@param  {Object} options
@return {Object}
function validateOptions (options) {
  // doesn't make sense to pass both, so prevent it
  if (options.includeSheets && options.excludeSheets) {
    throw new Error("Do not pass both `includeSheets` and `excludeSheets`. It's confusing.")
  }

  // if `includeSheets` exists and isn't an Array, make it so
  if (options.includeSheets) {
    if (!Array.isArray(options.includeSheets)) options.includeSheets = [options.includeSheets]
  }

  // if `excludeSheets` exists and isn't an Array, make it so
  if (options.excludeSheets) {
    if (!Array.isArray(options.excludeSheets)) options.excludeSheets = [options.excludeSheets]
  }

  // if `excludeSheets` is set and one of them show up in `overrides`, it won't
  // break anything, but the user should be aware it won't work
  if (options.excludeSheets && options.overrides) {
    const overrides = Object.keys(options.overrides)

    overrides.forEach((override) => {
      if (options.excludeSheets.indexOf(override) !== -1) {
        console.warn(`\`${override}\` has an override, but it is also being excluded in \`excludeSheets\`.`)
      }
    })
  }

  return options
}