@@ -3,20 +3,120 @@ const path = require('path')
33const Repository = require ( 'git-cli' ) . Repository
44const fs = require ( 'fs' )
55const Program = require ( 'commander' )
6+ const Promise = require ( 'bluebird' )
7+ const cmd = require ( 'node-cmd' )
8+ const inquirer = require ( 'inquirer' )
9+ const chalk = require ( 'chalk' )
10+ const Spinner = require ( 'cli-spinner' ) . Spinner
11+ const figlet = require ( 'figlet' )
12+
13+
14+ module . exports = {
15+ getCurrentDirectoryBase : ( ) => {
16+ return path . basename ( process . cwd ( ) )
17+ } ,
18+ directoryExists : ( filePath ) => {
19+ try {
20+ return fs . statSync ( filePath ) . isDirectory ( )
21+ } catch ( err ) {
22+ return false
23+ }
24+ }
25+ }
26+
27+
28+ const spinner = new Spinner ( chalk . bold . magenta ( 'install %s' ) )
29+ spinner . setSpinnerString ( 18 )
30+
31+ const welcome = ( ) => {
32+ console . log (
33+ chalk . yellow (
34+ figlet . textSync ( 'Angular Rails Starterkit' , { horizontalLayout : 'full' } )
35+ )
36+ )
37+ }
38+
39+ const error = ( err ) => {
40+ spinner . stop ( )
41+ console . log ( chalk . bold . red ( err ) )
42+ process . exit ( - 1 )
43+ }
44+
45+ const beforeInstall = ( ) => {
46+ cmd . get ( 'ls client' ,
47+ ( err , data , stderr ) => {
48+ if ( ! data ) {
49+ install ( )
50+ } else {
51+ console . log ( chalk . bold . red ( 'Cilent folder already exist\r\n' ) )
52+ const questions = [ {
53+ name : 'option' ,
54+ type : 'list' ,
55+ message : 'Are you sure wont rewrite client folder' ,
56+ choices : [ 'yes' , 'not' ]
57+ } ]
58+
59+ inquirer . prompt ( questions ) . then ( function ( answers ) {
60+ if ( answers . option === 'yes' ) {
61+ cmd . get ( 'rm -rf client' , install )
62+ } else {
63+ process . exit ( 1 )
64+ }
65+ } )
66+ }
67+ }
68+ )
69+ }
70+
71+ const afterInstall = ( ) => {
72+ console . log ( chalk . blue ( 'Installing packages for tooling via npm.' ) )
73+ cmd . get ( 'cd client/; npm i' ,
74+ ( err , data , stderr ) => {
75+ if ( err ) {
76+ error ( err )
77+ } else {
78+ spinner . stop ( )
79+ console . log ( data )
80+ console . log ( chalk . green ( 'Successfuly generated' ) )
81+ }
82+ } )
83+ }
684
785const install = ( ) => {
8- return Repository . clone ( 'https://github.com/igorbezsmertnyi/angular-2-rails-starterkit' , 'client' )
9- . then ( repo => console . log ( repo ) )
10- . catch ( e => console . log ( e ) )
86+ Repository . clone ( 'https://github.com/igorbezsmertnyi/starterkit-content' , 'client' )
87+ . then ( repo => {
88+ spinner . start ( )
89+ console . log ( chalk . blue ( 'Successfully initialized git.' ) )
90+ afterInstall ( )
91+ } )
92+ . catch ( err => error ( err ) )
93+ }
94+
95+ const herokuProcfiles = ( ) => {
96+ fs . writeFile ( "./Procfile" , "web: bundle exec rails server -p $PORT" , ( err ) => {
97+ if ( err ) error ( err )
98+ console . log ( chalk . green ( 'Procfile - created' ) )
99+ } )
100+
101+ fs . writeFile ( "./Procfile.prod" , "angular-assets: sh -c 'cd client/ ; ng build'" , ( err ) => {
102+ if ( err ) error ( err )
103+ console . log ( chalk . green ( 'Procfile.prod - created' ) )
104+ } )
105+
106+ fs . writeFile ( "./Procfile.dev" , "angular-assets: sh -c 'cd client/ ; ng build --dev --watch'\r\nrails-server: rails s -p 3000" , ( err ) => {
107+ if ( err ) error ( err )
108+ console . log ( chalk . green ( 'Procfile.dev - created' ) )
109+ } )
11110}
12111
13112Program
14- . option ( '-i , --install [name] ' , 'Instalation ' )
15- . option ( '-H , --heroku ' , 'Heroku deployment ' )
113+ . option ( '-g , --generate ' , 'Generate files ' )
114+ . option ( '-h , --help ' , 'Help ' )
16115 . parse ( process . argv )
17116
18- if ( Program . install ) {
19- console . log ( 'install %s app' , Program . install )
20- install ( )
117+ if ( Program . generate ) {
118+ welcome ( )
119+ console . log ( chalk . bold . magenta ( 'Generate files' ) )
120+ beforeInstall ( )
121+ herokuProcfiles ( )
21122}
22- if ( Program . heroku ) console . log ( 'heroku' )
0 commit comments