aboutsummaryrefslogtreecommitdiff
path: root/node_modules/cosmiconfig/lib/loadRc.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/cosmiconfig/lib/loadRc.js')
-rw-r--r--node_modules/cosmiconfig/lib/loadRc.js85
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);
+ }
+};