@@ -3,10 +3,10 @@ const path = require('path');
3
3
const cmd = require ( 'node-cmd' ) ;
4
4
const ncp = require ( 'ncp' ) . ncp ;
5
5
6
- exports . description = 'attach an plugin to dapp' ;
6
+ exports . description = 'attach a plugin to dapp' ;
7
7
8
8
exports . yargs = function ( yargs ) {
9
- return yargs
9
+ yargs
10
10
. option ( 'b' , {
11
11
alias : 'boilerplate' ,
12
12
describe : 'dapp boilerplate of vue or react' ,
@@ -19,12 +19,20 @@ exports.yargs = function (yargs) {
19
19
20
20
exports . argv = function ( argv ) {
21
21
const { pluginName, boilerplate, } = argv ;
22
+
23
+ const configPath = path . resolve ( './' , 'kaizen.json' ) ;
24
+ if ( fs . existsSync ( configPath ) === false ) {
25
+ console . log ( '[ERROR]: please use kaizen new to create new project first.' )
26
+ return ;
27
+ }
28
+
29
+ const kaizenConfig = JSON . parse ( fs . readFileSync ( configPath ) ) ;
22
30
switch ( pluginName ) {
23
31
case 'noia' :
24
- handleNOIA ( ) ;
32
+ handleNOIA ( kaizenConfig ) ;
25
33
break ;
26
34
case 'bluzelle' :
27
- handleBluzelle ( boilerplate ) ;
35
+ handleBluzelle ( kaizenConfig , boilerplate ) ;
28
36
break ;
29
37
}
30
38
}
@@ -54,20 +62,21 @@ function handleError(error) {
54
62
console . error ( `[ERROR]: ${ error . message } ` ) ;
55
63
}
56
64
57
- function reactMixBluzelle ( ) {
65
+ function reactMixBluzelle ( kaizenConfig ) {
58
66
const sourceFolder = path . resolve ( __dirname , '../../templates' ) ;
59
67
const targetFolder = path . resolve ( './' , 'node_modules/pn-react-bluzelle' ) ;
60
-
68
+
61
69
if ( ! fs . existsSync ( targetFolder ) ) {
62
70
fs . mkdirSync ( targetFolder ) ;
63
71
}
64
72
65
73
const readStream = fs . createReadStream ( path . resolve ( sourceFolder , 'pn-react-bluzelle.js' ) ) ;
66
74
const writeStream = fs . createWriteStream ( path . resolve ( targetFolder , 'index.js' ) ) ;
67
75
readStream . pipe ( writeStream ) ;
76
+ updateConfig ( kaizenConfig , 'pn-react-bluzelle' ) ;
68
77
}
69
78
70
- function vueMixBluzelle ( ) {
79
+ function vueMixBluzelle ( kaizenConfig ) {
71
80
const sourceFolder = path . resolve ( __dirname , '../../templates' ) ;
72
81
const targetFolder = path . resolve ( './' , 'node_modules/pn-vue-bluzelle' ) ;
73
82
@@ -78,12 +87,26 @@ function vueMixBluzelle() {
78
87
const readStream = fs . createReadStream ( path . resolve ( sourceFolder , 'pn-vue-bluzelle.js' ) ) ;
79
88
const writeStream = fs . createWriteStream ( path . resolve ( targetFolder , 'index.js' ) ) ;
80
89
readStream . pipe ( writeStream ) ;
90
+ updateConfig ( kaizenConfig , 'pn-vue-bluzelle' ) ;
91
+ }
92
+
93
+ function updateConfig ( kaizenConfig , plugin ) {
94
+ if ( ! kaizenConfig . plugins ) {
95
+ kaizenConfig . plugins = [ ] ;
96
+ }
97
+
98
+ if ( kaizenConfig . plugins . includes ( plugin ) ) {
99
+ console . log ( 'sfsfd' )
100
+ return ;
101
+ }
102
+
103
+ kaizenConfig . plugins . push ( plugin ) ;
104
+ fs . writeFileSync ( path . resolve ( './' , 'kaizen.json' ) , JSON . stringify ( kaizenConfig ) ) ;
81
105
}
82
106
83
- function handleNOIA ( ) {
107
+ function handleNOIA ( kaizenConfig ) {
84
108
try {
85
- const package = JSON . parse ( fs . readFileSync ( './kaizen.json' , 'utf8' ) ) ;
86
- const checkResult = packageChecker ( package ) ;
109
+ const checkResult = packageChecker ( kaizenConfig ) ;
87
110
if ( checkResult . isValid === false ) {
88
111
console . error ( '[ERROR]: please use kaizen new to create new project first' ) ;
89
112
return ;
@@ -99,7 +122,12 @@ function handleNOIA() {
99
122
}
100
123
101
124
ncp ( './temp-noia-sdk/packages' , './' , function ( error ) {
125
+ if ( error ) {
126
+ handleError ( error ) ;
127
+ return ;
128
+ }
102
129
cmd . run ( 'rm -rf ./temp-noia-sdk' ) ;
130
+ updateConfig ( kaizenConfig , 'NOIA' ) ;
103
131
} ) ;
104
132
} ) ;
105
133
@@ -108,10 +136,9 @@ function handleNOIA() {
108
136
}
109
137
}
110
138
111
- function handleBluzelle ( boilerplate ) {
139
+ function handleBluzelle ( kaizenConfig , boilerplate ) {
112
140
try {
113
- const package = JSON . parse ( fs . readFileSync ( './kaizen.json' , 'utf8' ) ) ;
114
- const checkResult = packageChecker ( package ) ;
141
+ const checkResult = packageChecker ( kaizenConfig ) ;
115
142
if ( checkResult . isValid === false ) {
116
143
console . error ( '[ERROR]: please use kaizen new to create new project first.' ) ;
117
144
return ;
@@ -125,12 +152,12 @@ function handleBluzelle(boilerplate) {
125
152
return ;
126
153
}
127
154
128
- switch ( boilerplate ) {
155
+ switch ( boilerplate ) {
129
156
case 'react' :
130
- reactMixBluzelle ( ) ;
157
+ reactMixBluzelle ( kaizenConfig ) ;
131
158
break ;
132
159
case 'vue' :
133
- vueMixBluzelle ( ) ;
160
+ vueMixBluzelle ( kaizenConfig ) ;
134
161
break ;
135
162
default :
136
163
handleError ( new Error ( 'please specify boilerplate' ) ) ;
0 commit comments