1+ var Q = require ( 'q' )
2+ , spawn = require ( 'child_process' ) . spawn
3+ , path = require ( 'path' )
4+ , fs = require ( 'fs' )
5+ , ncp = require ( 'ncp' ) . ncp
6+ , mName = 'clever-csv'
7+ , prName = 'testProject' ;
8+
9+ //create test project
10+ function createProject ( step ) {
11+ var defered = Q . defer ( )
12+ , proc = spawn ( 'clever' , [ 'init' , '--allow-root' , '--skip-protractor' , prName ] ) ;
13+
14+ console . log ( 'step #' + step + ' - create test project - start\n' ) ;
15+
16+ proc . stdout . on ( 'data' , function ( data ) {
17+ var str = data . toString ( ) ;
18+
19+ if ( str . match ( 'ing' ) !== null ) {
20+ console . log ( str )
21+ }
22+ } ) ;
23+
24+ proc . stderr . on ( 'data' , function ( data ) {
25+ defered . reject ( 'Error in step #' + step + ' - ' + data . toString ( ) + '\n' ) ;
26+ } ) ;
27+
28+ proc . on ( 'close' , function ( code ) {
29+ console . log ( 'step #' + step + ' - process exited with code ' + code + '\n' ) ;
30+ defered . resolve ( ++ step ) ;
31+ } ) ;
32+
33+ return defered . promise ;
34+ }
35+
36+ //install clever-orm module to test project
37+ function installORM ( step ) {
38+ var defered = Q . defer ( )
39+ , proc = spawn ( 'clever' , [ 'install' , 'clever-orm' ] , { cwd : path . join ( __dirname , '../' , prName ) } ) ;
40+
41+ console . log ( 'step #' + step + ' - install clever-orm module - start\n' ) ;
42+
43+ proc . stdout . on ( 'data' , function ( data ) {
44+ var str = data . toString ( )
45+ , objs = [
46+ { reg : 'Database username' , write : 'travis\n' } ,
47+ { reg : 'Database password' , write : '\n' } ,
48+ { reg : 'Database name' , write : 'test_db\n' } ,
49+ { reg : 'Database dialect' , write : '\n' } ,
50+ { reg : 'Database port' , write : '3306\n' } ,
51+ { reg : 'Database host' , write : '127.0.0.1\n' } ,
52+ ] ;
53+
54+ if ( str . match ( 'ing' ) !== null ) {
55+ console . log ( str )
56+ }
57+
58+ objs . forEach ( function ( obj ) {
59+ if ( str . match ( obj . reg ) !== null ) {
60+ proc . stdin . write ( obj . write ) ;
61+ }
62+ } ) ;
63+ } ) ;
64+
65+ proc . stderr . on ( 'data' , function ( data ) {
66+ defered . reject ( data . toString ( 'Error in step #' + step + ' - ' + data . toString ( ) + '\n' ) ) ;
67+ } ) ;
68+
69+ proc . on ( 'close' , function ( code ) {
70+ console . log ( 'step #' + step + ' - process exited with code ' + code + '\n' ) ;
71+ defered . resolve ( ++ step ) ;
72+ } ) ;
73+
74+ return defered . promise ;
75+ }
76+
77+ //copy clever-scv module in test project
78+ function copyModule ( step ) {
79+ var defered = Q . defer ( )
80+ , fromDir = path . join ( __dirname , '../' )
81+ , toDir = path . join ( __dirname , '../' , prName , 'backend' , 'modules' , mName )
82+ , options = {
83+ filter : function ( file ) { return file . match ( prName ) === null }
84+ } ;
85+
86+ console . log ( 'step #' + step + ' - copy ' + mName + ' modyle in test project - start\n' ) ;
87+
88+ ncp ( fromDir , toDir , options , function ( err ) {
89+ if ( err ) {
90+ return defered . reject ( 'Error in step #' + step + ' - ' + err + '\n' ) ;
91+ }
92+
93+ console . log ( 'step #' + step + ' - process exited with code 0\n' ) ;
94+ defered . resolve ( ++ step ) ;
95+ } ) ;
96+
97+ return defered . promise ;
98+ }
99+
100+ //create and update config files
101+ function configFiles ( step ) {
102+ var deferred = Q . defer ( )
103+ , ormFile = path . join ( __dirname , '../' , prName , 'backend' , 'modules' , 'clever-orm' , 'config' , 'default.json' )
104+ , comFile = path . join ( __dirname , '../' , prName , 'backend' , 'config' , 'test.json' )
105+ , ormData = {
106+ "clever-orm" : {
107+ "db" : {
108+ "username" : "travis" ,
109+ "password" : "" ,
110+ "database" : "test_db" ,
111+ "options" : {
112+ "host" : "127.0.0.1" ,
113+ "dialect" : "mysql" ,
114+ "port" : 3306
115+ } ,
116+ } ,
117+ "modelAssociations" : { }
118+ }
119+ }
120+ , comData = {
121+ "environmentName" : "TEST" ,
122+ "memcacheHost" : "127.0.0.1:11211" ,
123+ "clever-orm" : {
124+ "db" : {
125+ "username" : "travis" ,
126+ "password" : "" ,
127+ "database" : "test_db" ,
128+ "options" : {
129+ "dialect" : "mysql" ,
130+ "host" : "127.0.0.1" ,
131+ "port" : "3306"
132+ }
133+ }
134+ }
135+ } ;
136+
137+ console . log ( 'step #' + step + ' - create and update config files - start\n' ) ;
138+
139+ fs . writeFile ( ormFile , JSON . stringify ( ormData ) , function ( err ) {
140+
141+ if ( err ) {
142+ return deferred . reject ( 'Error in step #' + step + ' - ' + err + '\n' ) ;
143+ }
144+
145+ fs . writeFile ( comFile , JSON . stringify ( comData ) , function ( err ) {
146+
147+ if ( err ) {
148+ return deferred . reject ( 'Error in step #' + step + ' - ' + err + '\n' ) ;
149+ }
150+
151+ console . log ( 'step #' + step + ' - process exited with code 0\n' ) ;
152+ deferred . resolve ( ++ step ) ;
153+ } ) ;
154+ } ) ;
155+
156+ return deferred . promise ;
157+ }
158+
159+ //added clever-scv module in bundledDependencies
160+ function bundled ( step ) {
161+ var deferred = Q . defer ( )
162+ , file = path . join ( __dirname , '../' , prName , 'backend' , 'package.json' ) ;
163+
164+ console . log ( 'step #' + step + ' - added ' + mName + ' module in bundledDependencies\n' ) ;
165+
166+ fs . readFile ( file , function ( err , data ) {
167+
168+ if ( err ) {
169+ return deferred . reject ( 'Error in step #' + step + ' - ' + err + '\n' ) ;
170+ }
171+
172+ data = JSON . parse ( data ) ;
173+ data . bundledDependencies . push ( mName ) ;
174+
175+ fs . writeFile ( file , JSON . stringify ( data ) , function ( err ) {
176+
177+ if ( err ) {
178+ return deferred . reject ( 'Error in step #' + step + ' - ' + err + '\n' ) ;
179+ }
180+
181+ console . log ( 'step #' + step + ' - process exited with code 0\n' ) ;
182+ deferred . resolve ( ++ step ) ;
183+ } ) ;
184+ } ) ;
185+
186+ return deferred . promise ;
187+ }
188+
189+ createProject ( 1 )
190+ . then ( installORM )
191+ . then ( copyModule )
192+ . then ( configFiles )
193+ . then ( bundled )
194+ . fail ( function ( err ) {
195+ console . log ( 'Error - ' + err ) ;
196+ } ) ;
0 commit comments