@@ -13,12 +13,32 @@ const xfs = require('fs.extra');
13
13
const randomName = require ( 'project-name-generator' ) ;
14
14
const registerPartial = require ( './register-partial' ) ;
15
15
const bundler = require ( './bundler' ) ;
16
+ const yellow = text => `\x1b[33m${ text } \x1b[0m` ;
17
+ const findRemoveSync = require ( 'find-remove' ) ;
16
18
17
19
const codegen = module . exports ;
18
20
19
21
const HELPERS_DIRNAME = '.helpers' ;
20
22
const PARTIALS_DIRNAME = '.partials' ;
21
23
24
+ /**
25
+ * Deletes all matching subfolders in target directory
26
+ *
27
+ * @param {Object } config Configuration options
28
+ * @returns {Promise }
29
+ */
30
+ const deleteFolders = config => new Promise ( ( resolve , reject ) => {
31
+ try {
32
+ if ( config . deleteFolders ) {
33
+ console . warn ( yellow ( `Deleting all subfolders named '${ config . deleteFolders } ' in ouput directory '${ config . target_dir } '` ) ) ;
34
+ findRemoveSync ( config . target_dir , { dir : config . deleteFolders } ) ;
35
+ }
36
+ resolve ( ) ;
37
+ } catch ( e ) {
38
+ reject ( e ) ;
39
+ }
40
+ } ) ;
41
+
22
42
/**
23
43
* Generates a file.
24
44
*
@@ -46,10 +66,19 @@ const generateFile = options => new Promise((resolve, reject) => {
46
66
const parsed_content = template ( data ) ;
47
67
const template_path = path . relative ( templates_dir , path . resolve ( root , file_name ) ) ;
48
68
const generated_path = path . resolve ( target_dir , template_path ) . replace ( / .h b s $ / , '' ) ;
49
- fs . writeFile ( generated_path , parsed_content , 'utf8' , ( err ) => {
50
- if ( err ) return reject ( err ) ;
69
+ // WIP check here for existing?
70
+ const skipFile = data . skipExistingFiles && fs . existsSync ( generated_path ) ;
71
+ if ( ! skipFile ) {
72
+ fs . writeFile ( generated_path , parsed_content , 'utf8' , ( err ) => {
73
+ if ( err ) return reject ( err ) ;
74
+ resolve ( ) ;
75
+ } ) ;
76
+ }
77
+ else {
78
+ console . warn ( yellow ( `Skipping file: ${ generated_path } ` ) ) ;
51
79
resolve ( ) ;
52
- } ) ;
80
+ }
81
+
53
82
} catch ( e ) {
54
83
reject ( e ) ;
55
84
}
@@ -306,6 +335,7 @@ codegen.generate = config => new Promise((resolve, reject) => {
306
335
config . templates = `${ config . templates } /${ config . template } ` ;
307
336
308
337
async function start ( ) {
338
+ await deleteFolders ( config ) ;
309
339
await registerHelpers ( config ) ;
310
340
await registerPartials ( config ) ;
311
341
await generateDirectoryStructure ( config ) ;
0 commit comments