+++ /dev/null
-//
-'use strict';
-
-const yaml = require('js-yaml');
-const requireFromString = require('require-from-string');
-const readFile = require('./readFile');
-const parseJson = require('./parseJson');
-const funcRunner = require('./funcRunner');
-
-module.exports = function loadRc(
- filepath ,
- options
-
-
-
-
-) {
- if (!options.sync) {
- return readFile(filepath)
- .then(parseExtensionlessRcFile)
- .then(checkExtensionlessRcResult);
- } else {
- return checkExtensionlessRcResult(
- parseExtensionlessRcFile(readFile.sync(filepath))
- );
- }
-
- function checkExtensionlessRcResult(result) {
- if (result) return result;
- if (options.rcExtensions) return loadRcWithExtensions();
- return null;
- }
-
- function parseExtensionlessRcFile(content ) {
- if (!content) return null;
- const pasedConfig = options.rcStrictJson
- ? parseJson(content, filepath)
- : yaml.safeLoad(content, { filename: filepath });
- return {
- config: pasedConfig,
- filepath,
- };
- }
-
- function loadRcWithExtensions() {
- let foundConfig = null;
- return funcRunner(readRcFile('json'), [
- (jsonContent ) => {
- // Since this is the first try, config cannot have been found, so don't
- // check `if (foundConfig)`.
- if (jsonContent) {
- const successFilepath = `${filepath}.json`;
- foundConfig = {
- config: parseJson(jsonContent, successFilepath),
- filepath: successFilepath,
- };
- } else {
- return readRcFile('yaml');
- }
- },
- (yamlContent ) => {
- if (foundConfig) {
- return;
- } else if (yamlContent) {
- const successFilepath = `${filepath}.yaml`;
- foundConfig = {
- config: yaml.safeLoad(yamlContent, { filename: successFilepath }),
- filepath: successFilepath,
- };
- } else {
- return readRcFile('yml');
- }
- },
- (ymlContent ) => {
- if (foundConfig) {
- return;
- } else if (ymlContent) {
- const successFilepath = `${filepath}.yml`;
- foundConfig = {
- config: yaml.safeLoad(ymlContent, { filename: successFilepath }),
- filepath: successFilepath,
- };
- } else {
- return readRcFile('js');
- }
- },
- (jsContent ) => {
- if (foundConfig) {
- return;
- } else if (jsContent) {
- const successFilepath = `${filepath}.js`;
- foundConfig = {
- config: requireFromString(jsContent, successFilepath),
- filepath: successFilepath,
- };
- } else {
- return;
- }
- },
- () => foundConfig,
- ]);
- }
-
- function readRcFile(extension ) {
- const filepathWithExtension = `${filepath}.${extension}`;
- return !options.sync
- ? readFile(filepathWithExtension)
- : readFile.sync(filepathWithExtension);
- }
-};