File: //proc/1526/task/1530/cwd/zaklada/html/node_modules/yargs/lib/apply-extends.js
var fs = require('fs')
var path = require('path')
var assign = require('./assign')
var YError = require('./yerror')
var previouslyVisitedConfigs = []
function checkForCircularExtends (path) {
  if (previouslyVisitedConfigs.indexOf(path) > -1) {
    throw new YError("Circular extended configurations: '" + path + "'.")
  }
}
function getPathToDefaultConfig (cwd, pathToExtend) {
  return path.resolve(cwd, pathToExtend)
}
function applyExtends (config, cwd, subKey) {
  var defaultConfig = {}
  if (config.hasOwnProperty('extends')) {
    var pathToDefault = getPathToDefaultConfig(cwd, config.extends)
    checkForCircularExtends(pathToDefault)
    previouslyVisitedConfigs.push(pathToDefault)
    delete config.extends
    defaultConfig = JSON.parse(fs.readFileSync(pathToDefault, 'utf8'))
    if (subKey) {
      defaultConfig = defaultConfig[subKey] || {}
    }
    defaultConfig = applyExtends(defaultConfig, path.dirname(pathToDefault), subKey)
  }
  previouslyVisitedConfigs = []
  return assign(defaultConfig, config)
}
module.exports = applyExtends