1
1
#!/usr/bin/env node
2
2
3
- const async = require ( 'async' ) ;
4
- const Metalsmith = require ( 'metalsmith' )
5
- const Handlebars = require ( 'handlebars' )
6
3
const prompt = require ( 'cli-prompt' )
7
4
const exists = require ( 'fs' ) . existsSync
8
5
const rm = require ( 'rimraf' ) . sync
9
- const render = require ( 'consolidate' ) . handlebars . render ;
10
6
const path = require ( 'path' )
11
7
const chalk = require ( 'chalk' )
12
8
const inquirer = require ( 'inquirer' )
13
9
const home = require ( 'user-home' )
14
10
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' )
18
11
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' )
26
13
27
- program
28
- . usage ( '<template-name>' )
14
+ program . usage ( '<template-name>' )
29
15
30
16
program . on ( '--help' , function ( ) {
31
17
console . log ( )
@@ -50,41 +36,11 @@ var tmp = path.join(home, '.bemoid-templates', template.replace(/\//g, '-'))
50
36
run ( )
51
37
52
38
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 ;
63
45
} )
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
- }
90
46
}
0 commit comments