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