1 | var $, fs;
|
2 |
|
3 | $ = {};
|
4 |
|
5 | $.source_ = require('../dist/source_');
|
6 |
|
7 | $.info = require('../dist/info');
|
8 |
|
9 | $.getExtname = require('../dist/getExtname');
|
10 |
|
11 | $.parseString = require('../dist/parseString');
|
12 |
|
13 | $.parseJson = require('../dist/parseJson');
|
14 |
|
15 | fs = require('fs');
|
16 |
|
17 | module.exports = async function(source, option = {}) {
|
18 | var _source, extname, jsYaml, listSource, result;
|
19 | _source = source;
|
20 | listSource = (await $.source_(source));
|
21 | if (!listSource.length) {
|
22 | $.info('file', `'${source}' not existed`);
|
23 | return null;
|
24 | }
|
25 | source = listSource[0];
|
26 | result = (await new Promise(function(resolve) {
|
27 | return fs.readFile(source, function(err, data) {
|
28 | if (err) {
|
29 | throw new Error(err);
|
30 | }
|
31 | return resolve(data);
|
32 | });
|
33 | }));
|
34 | $.info('file', `read '${_source}'`);
|
35 |
|
36 | if (option.raw) {
|
37 | return result;
|
38 | }
|
39 | extname = $.getExtname(source);
|
40 | if (extname === '.coffee' || extname === '.css' || extname === '.html' || extname === '.js' || extname === '.md' || extname === '.pug' || extname === '.sh' || extname === '.styl' || extname === '.txt' || extname === '.xml') {
|
41 | return $.parseString(result);
|
42 | }
|
43 | if (extname === '.json') {
|
44 | return $.parseJson(result);
|
45 | }
|
46 | if (extname === '.yaml' || extname === '.yml') {
|
47 | jsYaml = require('js-yaml');
|
48 | return jsYaml.safeLoad(result);
|
49 | }
|
50 | return result;
|
51 | };
|