Initial commit
[yaffs-website] / node_modules / postcss-load-options / index.js
1 // ------------------------------------
2 // #POSTCSS - LOAD OPTIONS
3 // ------------------------------------
4
5 'use strict'
6
7 var resolve = require('path').resolve
8
9 var config = require('cosmiconfig')
10 var assign = require('object-assign')
11
12 var loadOptions = require('./lib/options')
13
14 /**
15  * @author Michael Ciniawsky (@michael-ciniawsky) <michael.ciniawsky@gmail.com>
16  * @description Autoload Options for PostCSS
17  *
18  *
19  * @module postcss-load-options
20  * @version 1.2.0
21  *
22  * @requires cosmiconfig
23  * @requires object-assign
24  * @requires lib/options
25  *
26  * @method optionsrc
27  *
28  * @param  {Object} ctx Context
29  * @param  {String} path Directory
30  * @param  {Object} options Options
31  * @return {Object} options PostCSS Options
32  */
33 module.exports = function optionsrc (ctx, path, options) {
34   ctx = assign({ cwd: process.cwd(), env: process.env.NODE_ENV }, ctx)
35
36   path = path ? resolve(path) : process.cwd()
37
38   options = assign({ rcExtensions: true }, options)
39
40   if (!ctx.env) process.env.NODE_ENV = 'development'
41
42   var file
43
44   return config('postcss', options)
45     .load(path)
46     .then(function (result) {
47       if (!result) console.log('PostCSS Options could not be loaded')
48
49       file = result ? result.filepath : ''
50
51       return result ? result.config : {}
52     })
53     .then(function (options) {
54       if (typeof options === 'function') options = options(ctx)
55
56       if (typeof options === 'object') options = assign(options, ctx)
57
58       return options
59     })
60     .then(function (options) {
61       return { options: loadOptions(options), file: file }
62     })
63     .catch(console.log)
64 }