diff options
author | Dimitri Staessens <[email protected]> | 2019-10-06 21:37:45 +0200 |
---|---|---|
committer | Dimitri Staessens <[email protected]> | 2019-10-06 21:37:45 +0200 |
commit | 3c51c3be85bb0d1bdb87ea0d6632f1c256912f27 (patch) | |
tree | c7ccc8279b12c4f7bdbbb4270d617e48f51722e4 /node_modules/cosmiconfig/lib/loadRc.js | |
parent | 412c104bebc507bea9c94fd53b5bdc4b64cbfe31 (diff) | |
download | website-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.tar.gz website-3c51c3be85bb0d1bdb87ea0d6632f1c256912f27.zip |
build: Add some required modules for node
Diffstat (limited to 'node_modules/cosmiconfig/lib/loadRc.js')
-rw-r--r-- | node_modules/cosmiconfig/lib/loadRc.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/node_modules/cosmiconfig/lib/loadRc.js b/node_modules/cosmiconfig/lib/loadRc.js new file mode 100644 index 0000000..cbe1d67 --- /dev/null +++ b/node_modules/cosmiconfig/lib/loadRc.js @@ -0,0 +1,85 @@ +'use strict'; + +var yaml = require('js-yaml'); +var requireFromString = require('require-from-string'); +var readFile = require('./readFile'); +var parseJson = require('./parseJson'); + +module.exports = function (filepath, options) { + return loadExtensionlessRc().then(function (result) { + if (result) return result; + if (options.rcExtensions) return loadRcWithExtensions(); + return null; + }); + + function loadExtensionlessRc() { + return readRcFile().then(function (content) { + if (!content) return null; + + var pasedConfig = (options.rcStrictJson) + ? parseJson(content, filepath) + : yaml.safeLoad(content, { + filename: filepath, + }); + return { + config: pasedConfig, + filepath: filepath, + }; + }); + } + + function loadRcWithExtensions() { + return readRcFile('json').then(function (content) { + if (content) { + var successFilepath = filepath + '.json'; + return { + config: parseJson(content, successFilepath), + filepath: successFilepath, + }; + } + // If not content was found in the file with extension, + // try the next possible extension + return readRcFile('yaml'); + }).then(function (content) { + if (content) { + // If the previous check returned an object with a config + // property, then it succeeded and this step can be skipped + if (content.config) return content; + // If it just returned a string, then *this* check succeeded + var successFilepath = filepath + '.yaml'; + return { + config: yaml.safeLoad(content, { filename: successFilepath }), + filepath: successFilepath, + }; + } + return readRcFile('yml'); + }).then(function (content) { + if (content) { + if (content.config) return content; + var successFilepath = filepath + '.yml'; + return { + config: yaml.safeLoad(content, { filename: successFilepath }), + filepath: successFilepath, + }; + } + return readRcFile('js'); + }).then(function (content) { + if (content) { + if (content.config) return content; + var successFilepath = filepath + '.js'; + return { + config: requireFromString(content, successFilepath), + filepath: successFilepath, + }; + } + return null; + }); + } + + function readRcFile(extension) { + var filepathWithExtension = (extension) + ? filepath + '.' + extension + : filepath; + return readFile(filepathWithExtension); + } +}; |