+++ /dev/null
-/* @flow */
-"use strict";
-const augmentConfigFull = require("./augmentConfig").augmentConfigFull;
-const configurationError = require("./utils/configurationError");
-const path = require("path");
-
-/*:: type configPromise = Promise<?{ config: stylelint$config, filepath: string }>*/
-
-module.exports = function(
- stylelint /*: stylelint$internalApi*/,
- searchPath /*:: ?: string*/
-) /*: configPromise*/ {
- searchPath = searchPath || process.cwd();
-
- const optionsConfig = stylelint._options.config;
-
- if (optionsConfig !== undefined) {
- const cached /*: configPromise*/ = stylelint._specifiedConfigCache.get(
- optionsConfig
- );
- if (cached) return cached;
-
- // stylelint._fullExplorer (cosmiconfig) is already configured to
- // run augmentConfigFull; but since we're making up the result here,
- // we need to manually run the transform
- const augmentedResult = augmentConfigFull(stylelint, {
- config: optionsConfig,
- // Add the extra path part so that we can get the directory without being
- // confused
- filepath: path.join(process.cwd(), "argument-config")
- });
- stylelint._specifiedConfigCache.set(optionsConfig, augmentedResult);
- return augmentedResult;
- }
-
- return stylelint._fullExplorer
- .load(searchPath, stylelint._options.configFile)
- .then(config => {
- // If no config was found, try looking from process.cwd
- if (!config) return stylelint._fullExplorer.load(process.cwd());
- return config;
- })
- .then(config => {
- if (!config) {
- const ending = searchPath ? ` for ${searchPath}` : "";
- throw configurationError(`No configuration provided${ending}`);
- }
- return config;
- });
-};