UNPKG

1.39 kBJavaScriptView Raw
1const path = require('path');
2const fs = require('fs');
3const validate = require('./validate');
4
5const themeDirectory = fs.realpathSync(process.cwd());
6
7const errors = [];
8const warnings = [];
9
10function getSlateConfig() {
11 try {
12 const slateRcPath = resolveTheme('slate.config.js');
13 return require(slateRcPath);
14 } catch (error) {
15 return {};
16 }
17}
18
19function generate(schema, slaterc = getSlateConfig()) {
20 // Creates a config object of default or slaterc values
21 const config = _generateConfig([schema], slaterc)[schema.id];
22 config.__schema = schema;
23
24 return config;
25}
26
27function _generateConfig(items, overrides) {
28 const config = {};
29
30 items.forEach((item) => {
31 if (Array.isArray(item.items)) {
32 config[item.id] = _generateConfig(
33 item.items,
34 overrides && overrides[item.id],
35 );
36 } else if (overrides && typeof overrides[item.id] !== 'undefined') {
37 config[item.id] = overrides[item.id];
38 } else if (typeof item.default !== 'undefined') {
39 config[item.id] = item.default;
40 }
41 });
42
43 return config;
44}
45
46function resolveTheme(relativePath) {
47 const appDirectory = fs.realpathSync(process.cwd());
48 return path.resolve(themeDirectory, relativePath);
49}
50
51function resolveSelf(relativePath) {
52 return path.resolve(__dirname, relativePath);
53}
54
55module.exports = {
56 generate,
57 resolveTheme,
58 resolveSelf,
59 getSlateConfig,
60};