/
index.js
35 lines (32 loc) · 1008 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
var promiseAllObject = require('@quarterto/promise-all-object');
var mapValues = require('lodash.mapvalues');
var fs = require('fs-promise');
var path = require('path');
var template = fruit => ({
[`lib/css/fruit/modules/_${fruit}.scss`]: `.${fruit} {}`,
[`lib/templates/fruit/${fruit}.ms`]: '',
[`lib/javascript/ftfruitmachine/modules/${fruit}.js`]: `const fm = require('fruitmachine');
module.exports = fm.define({
name: '${fruit}',
template: require('../../../templates/fruit/${fruit}.ms'),
});`,
'lib/css/body-part2.scss': src => `${src}
@import "fruit/modules/${fruit}";`
});
module.exports = (fruit, basedir) => promiseAllObject(
mapValues(
template(fruit),
(srcOrTransform, file) => {
var resolved = path.resolve(basedir, file);
return fs.exists(resolved)
.then(exists => {
if(exists) {
return fs.readFile(resolved).then(orig => srcOrTransform(orig));
} else {
return srcOrTransform;
}
})
.then(src => fs.writeFile(resolved, src));
}
)
);