@@ -14,6 +14,31 @@ var argv = require('optimist')
1414 . alias ( 'v' , 'version' ) . describe ( 'v' , 'print nodeclipse CLI version' )
1515 . alias ( 'V' , 'verbose' ) . describe ( 'V' , 'be verbose' )
1616 . argv ;
17+
18+ var helpstr =
19+ " Usage: nodeclipse [arguments] \n\
20+ \n\
21+ Arguments: \n\
22+ -c, --create <name> create project folder and prepare it \n\
23+ -u, --use <template> use/copy specified template when creating project \n\
24+ -p, --prepare prepare Nodeclipse [Node.js] project for import, i.e. add needed `.project` file and other `.*`\n\
25+ files ('.gitignore', '.jshintrc', '.settings/') if there is no `.project` yet\n\
26+ -g, --eclipse_project_general prepare General Eclipse project for import, i.e. add only needed `.project` file\n\
27+ -n, --name [<name>] project name (default is folder name)\n\
28+ -h, --help this help screen\n\
29+ -v, --version print nodeclipse CLI's version\n\
30+ -V, --verbose be verbose\n\
31+ \n\
32+ Templates are just folders in this project sources:\n\
33+ hello-world The famous hello world HTTP server in 6 lines\n\
34+ hello-coffee The same server written in CoffeeScript\n\
35+ hello-typescript The same server written in TypeScript\n\
36+ hello-html Template with HTML file\n\
37+ template-gradle-java Gradle Java project\n\
38+ template-maven-java Maven Java project\n\
39+ " ;
40+
41+
1742require ( 'shelljs/global' ) ;
1843var fs = require ( 'fs' ) ;
1944var path = require ( 'path' ) ;
@@ -78,28 +103,6 @@ var executeActions = function () {
78103// TypeError: path must be a string
79104// at Object.fs.open (fs.js:404:11)
80105
81-
82- var helpstr =
83- " Usage: nodeclipse [arguments] \n\
84- \n\
85- Arguments: \n\
86- -c, --create <name> create project folder and prepare it \n\
87- -u, --use <template> use/copy specified template when creating project \n\
88- -p, --prepare prepare Nodeclipse [Node.js] project for import, i.e. add needed `.project` file and other `.*`\n\
89- files ('.gitignore', '.jshintrc', '.settings/') if there is no `.project` yet\n\
90- -g, --eclipse_project_general prepare General Eclipse project for import, i.e. add only needed `.project` file\n\
91- -n, --name [<name>] project name (default is folder name)\n\
92- -h, --help this help screen\n\
93- -v, --version print nodeclipse CLI's version\n\
94- -V, --verbose be verbose\n\
95- \n\
96- Templates are just folders in this project sources:\n\
97- hello-world The famous hello world HTTP server in 6 lines\n\
98- hello-coffee The same server written in CoffeeScript\n\
99- hello-typescript The same server written in TypeScript\n\
100- hello-html Template with HTML file\n\
101- " ;
102-
103106 console . log ( helpstr ) ;
104107 console . log ( "Check README.md and sources at " + __dirname ) ;
105108 return ;
@@ -108,7 +111,7 @@ var executeActions = function () {
108111 console . log ( "Nodeclipse CLI " + require ( './package.json' ) . version ) ;
109112 return ;
110113 }
111- if ( projectFileExists ) {
114+ if ( projectFileExists && ! create ) {
112115 console . log ( ".project file already exists!" ) ;
113116 return ;
114117 }
@@ -125,14 +128,29 @@ var executeActions = function () {
125128 if ( verbose ) console . log ( "Created project/folder: " + create ) ;
126129 }
127130
131+ var curfolder = pwd ( ) ;
128132 var templatesfolder = __dirname ;
129133 if ( debug ) console . log ( "Templates folder is: " + templatesfolder ) ;
134+ if ( ! name ) {
135+ name = path . basename ( curfolder ) ;
136+ }
130137
131- if ( use ) {
138+ if ( use ) { //template
132139 //cp(__dirname+use+'/*','.');
133140 var fromfolder = path . join ( templatesfolder , use , '/*' )
134141 if ( verbose ) console . log ( "Copying from " + fromfolder ) ;
135142 cp ( fromfolder , '.' )
143+
144+ if ( use . indexOf ( 'template' ) == 0 ) { //.startsWith() //http://stackoverflow.com/questions/646628/javascript-startswith
145+ // template-* do not use common-templates
146+
147+ // .files special treatment ( Node.js shelljs is likely not good tool for this)
148+ copyDotProjectFile ( use , curfolder , '/.project' , name ) ;
149+ copyDotProjectFile ( use , curfolder , '/.classpath' , name ) ;
150+
151+ inviteToSiteAsTheLastLine ( ) ;
152+ return ;
153+ }
136154 }
137155
138156 // common-templates
@@ -167,31 +185,30 @@ var executeActions = function () {
167185
168186 // .project
169187 if ( debug ) console . log ( 'projectNodeclipse=' + projectNodeclipse + ', projectGeneral=' + projectGeneral ) ;
170- var curfolder = pwd ( ) ;
171188 if ( verbose ) console . log ( "Current folder is: " + curfolder ) ;
172- if ( ! name ) {
173- name = path . basename ( curfolder ) ;
174- }
175189 if ( prepare ) {
176- copyDotProjectFile ( 'eclipse' , curfolder , name ) ;
190+ copyDotProjectFile ( 'eclipse' , curfolder , '/.project' , name ) ;
177191 } else if ( projectGeneral ) {
178- copyDotProjectFile ( 'eclipse-project-general' , curfolder , name ) ;
192+ copyDotProjectFile ( 'eclipse-project-general' , curfolder , '/.project' , name ) ;
179193 }
180194
181195 inviteToSiteAsTheLastLine ( ) ;
182196}
183- var copyDotProjectFile = function ( eclipse , curfolder , name ) {
197+ var copyDotProjectFile = function ( eclipse , curfolder , what , name ) {
184198 if ( ! eclipse ) eclipse = 'eclipse' ;
185- var str = cat ( __dirname + '/' + eclipse + '/.project' ) . replace ( '${projectname}' , name ) ;
186- var destfile = curfolder + '/.project' ;
199+ if ( ! what ) eclipse = '/.project' ;
200+ var str = cat ( __dirname + '/' + eclipse + what ) . replace ( '${projectname}' , name ) ;
201+ var destfile = curfolder + what ;
187202
188203 // http://www.nodejs.org/api/fs.html#fs_fs_appendfile_filename_data_options_callback
189204 fs . writeFile ( destfile , str , function ( err ) {
190205 if ( err )
191206 throw err ;
192207 if ( verbose ) console . log ( 'The file "' + destfile + '" was created !' ) ;
193- console . log ( 'In Eclipse/Enide select File -> Import... -> General / Existing Projects into Workspace' ) ;
194- console . log ( 'and enter project directory: ' + curfolder ) ;
208+ if ( what == '/.project' ) {
209+ console . log ( 'In Eclipse/Enide select File -> Import... -> General / Existing Projects into Workspace' ) ;
210+ console . log ( 'and enter project directory: ' + curfolder ) ;
211+ }
195212 } ) ;
196213
197214 if ( debug ) console . log ( str ) ; // ''.toString()
0 commit comments