Sha256: f3eff902bd31469a939a32e84db62f69b04872d655513a3cbda90df6d7e19d7b

Contents?: true

Size: 1.04 KB

Versions: 24

Compression:

Stored size: 1.04 KB

Contents

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

Version data entries

24 entries across 24 versions & 9 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
disco_app-0.18.0 test/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
disco_app-0.18.2 test/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
enju_library-0.3.8 spec/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ilog-0.4.1 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ilog-0.4.0 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ilog-0.3.3 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
jester-data-8.0.0 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-5.2.1 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-2.0.1 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-1.1.0 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-1.0.0 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-0.0.0.1.0 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
ezii-os-0.0.0.0.1 node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
optimacms-0.4.3 spec/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
optimacms-0.4.2 spec/dummy/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
locomotivecms-4.0.0.alpha1 app/javascript/node_modules/sass-graph/node_modules/yargs/lib/apply-extends.js
lux_assets-0.2.11 ./node_modules/yargs/lib/apply-extends.js
lux_assets-0.2.9 ./node_modules/yargs/lib/apply-extends.js
lux_assets-0.2.4 ./node_modules/yargs/lib/apply-extends.js