Skip to content

Commit b998c50

Browse files
Start cleanups and refactors
1 parent a811704 commit b998c50

File tree

5 files changed

+72
-52
lines changed

5 files changed

+72
-52
lines changed

.editorconfig

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# editorconfig.org
2+
3+
root = true
4+
5+
[*]
6+
charset = utf-8
7+
indent_size = 2
8+
indent_style = space
9+
trim_trailing_whitespace = true

bin/bemoid-scaffold

+8-52
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
11
#!/usr/bin/env node
22

3-
const async = require('async');
4-
const Metalsmith = require('metalsmith')
5-
const Handlebars = require('handlebars')
63
const prompt = require('cli-prompt')
74
const exists = require('fs').existsSync
85
const rm = require('rimraf').sync
9-
const render = require('consolidate').handlebars.render;
106
const path = require('path')
117
const chalk = require('chalk')
128
const inquirer = require('inquirer')
139
const home = require('user-home')
1410
const program = require('commander')
15-
const download = require('download-git-repo')
16-
const imports = require('@bemoid/bemoid/json/imports')
17-
const variables = require('@bemoid/bemoid/json/variables')
1811

19-
Handlebars.registerHelper('uppercase', function(str) {
20-
return str.charAt(0).toUpperCase() + str.slice(1)
21-
})
22-
23-
Handlebars.registerHelper('add', function(a, b) {
24-
return a + b;
25-
});
12+
const generate = require('../lib/generate')
2613

27-
program
28-
.usage('<template-name>')
14+
program.usage('<template-name>')
2915

3016
program.on('--help', function () {
3117
console.log()
@@ -50,41 +36,11 @@ var tmp = path.join(home, '.bemoid-templates', template.replace(/\//g, '-'))
5036
run()
5137

5238
function run() {
53-
download(`bemoid/scaffold-${template}`, tmp, function (err) {
54-
if (err) throw err;
55-
56-
var metalsmith = Metalsmith(tmp)
57-
.source('template')
58-
.destination(to)
59-
.use(templater)
60-
.build(function(err){
61-
if (err) throw err.message;
62-
});
39+
generate({
40+
template: `bemoid/scaffold-${template}`,
41+
from: tmp,
42+
to: to
43+
}, function (err) {
44+
if (err) throw err.message;
6345
})
64-
}
65-
66-
/**
67-
* Template in place plugin.
68-
*
69-
* @param {Object} files
70-
* @param {Metalsmith} metalsmith
71-
* @param {Function} done
72-
*/
73-
function templater(files, metalsmith, done){
74-
var keys = Object.keys(files);
75-
var metadata = metalsmith.metadata();
76-
77-
metadata['imports'] = imports
78-
metadata['variables'] = variables
79-
80-
async.each(keys, run, done);
81-
82-
function run(file, done){
83-
var str = files[file].contents.toString();
84-
render(str, metadata, function(err, res){
85-
if (err) return done(err);
86-
files[file].contents = new Buffer(res);
87-
done();
88-
});
89-
}
9046
}

lib/bemoid.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var imports = require('@bemoid/bemoid/json/imports')
2+
var variables = require('@bemoid/bemoid/json/variables')
3+
4+
module.exports = { imports, variables }

lib/generate.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var render = require('./render')
2+
var metalsmith = require('metalsmith')
3+
var download = require('download-git-repo')
4+
5+
module.exports = function (settings, callback) {
6+
download(settings.template, settings.from, function (err) {
7+
if (err) throw err
8+
9+
metalsmith(settings.from)
10+
.destination(settings.to)
11+
.use(render)
12+
.build(callback)
13+
})
14+
}

lib/render.js

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
var async = require('async');
2+
var bemoid = require('../lib/bemoid')
3+
var handlebars = require('handlebars')
4+
var render = require('consolidate').handlebars.render;
5+
6+
handlebars.registerHelper('uppercase', function(str) {
7+
return str.charAt(0).toUpperCase() + str.slice(1)
8+
})
9+
10+
handlebars.registerHelper('add', function(a, b) {
11+
return a + b;
12+
});
13+
14+
/**
15+
* Template in place plugin.
16+
*
17+
* @param {Object} files
18+
* @param {Metalsmith} metalsmith
19+
* @param {Function} done
20+
*/
21+
module.exports = function (files, metalsmith, done){
22+
var keys = Object.keys(files);
23+
24+
async.each(keys, run, done);
25+
26+
function run(file, done){
27+
var str = files[file].contents.toString();
28+
29+
render(str, bemoid, function(err, res){
30+
if (err) return done(err);
31+
32+
files[file].contents = new Buffer(res);
33+
34+
done();
35+
});
36+
}
37+
}

0 commit comments

Comments
 (0)