Skip to content

Commit 40c8175

Browse files
committed
Nodeclipse#91 Nodeclipse CLI 0.8.2; ref Nodeclipse#101 (problem on MacOS)
1 parent 962dbdd commit 40c8175

File tree

5 files changed

+57
-35
lines changed

5 files changed

+57
-35
lines changed

org.nodeclipse.ui/templates/README.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ Check <http://www.nodeclipse.org/> on how to get Nodeclipse or Enide Studio
1919
Arguments:
2020
-c, --create <name> create project folder <name> [using template] and prepare it
2121
-u, --use <template> use/copy specified template when creating project
22-
-p, --prepare prepare for import (default action), i.e. add needed `.project`
22+
-p, --prepare prepare Nodeclipse [Node.js] project for import, i.e. add needed `.project`
2323
and other `.*` files ('.gitignore', '.jshintrc', '.settings/') if there is no `.project` yet
24+
-g, --eclipse_project_general prepare General Eclipse project for import, i.e. add only needed `.project` file
2425
-n, --name [<name>] project name (default is folder name)
2526
-h, --help Check README
2627
-v, --version print nodeclipse CLI's version
@@ -73,7 +74,7 @@ try with `npm install . -g` before publishing
7374

7475
-f, --force force on non-empty directory (by default existing files are not updated)
7576
-pg as general project
76-
-pn as Nodeclipse project (default)
77+
-pn as Nodeclipse Node.js project (default)
7778
-t, --template <template> use/copy specified template when creating project (see also `git init`)
7879
--gitclone <repository> call git clone [directory]
7980
@@ -94,6 +95,10 @@ options are:
9495
- add link on Wizard Page
9596
- options to refine .jshintrc
9697

98+
## History
99+
100+
0.8.2 fix #101 (bug on MacOS); -g option
101+
97102
## News
98103

99104
Check <http://www.nodeclipse.org/>

org.nodeclipse.ui/templates/bin/nodeclipse.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env node
2+
// #101; this file should have UNIX style line endings (\n only) when publishing
23

34
var path = require('path');
45
var fs = require('fs');

org.nodeclipse.ui/templates/copier.js

+48-32
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11

22
var argv = require('optimist')
3+
// optimist: all one letter parameters maybe stacked after '-'
4+
// all others should be with '--'
5+
// '-cg proj1' becomes '-c -g=proj1', so it should be '-cgn proj1'
36
.alias('c','create') .describe('c', 'create project folder and prepare it')
7+
//.alias('n','eclipse_project_nodeclipse')
8+
.alias('g','eclipse_project_general')
49
.alias('p','prepare').describe('p', 'prepare for import, i.e. add needed `.project` and other `.*` file ')
510
.string('n')
611
.alias('n','name') .describe('h', 'project name (default is folder name)')
@@ -12,7 +17,10 @@ var argv = require('optimist')
1217
require('shelljs/global');
1318
var fs= require('fs');
1419
var path= require('path');
15-
//console.dir(process.argv);
20+
21+
var debug = false;
22+
if (debug) console.dir(process.argv);
23+
if (debug) console.dir(argv);
1624

1725
// arguments processing
1826
var help = argv.help || argv.h || (process.argv.length <= 2);
@@ -24,9 +32,10 @@ if (!create && use){
2432
console.log("Template usage without folder creation!");
2533
return;
2634
}
27-
var prepare = create || argv.prepare || argv.p;
35+
var projectGeneral = argv.e || argv.eclipse_project_general;
36+
var projectNodeclipse = argv.en || argv.project_eclipse_nodeclipse; //TODO
37+
var prepare = argv.prepare || argv.p || (create && (!projectGeneral) ) ; // not triggered by `create` as it maybe `project_general` as well
2838
var name = argv.name || argv.n; // could be create ||
29-
var debug = false;
3039
var verbose = debug || argv.verbose || argv.V;
3140

3241
var projectFileExists = false;
@@ -76,8 +85,9 @@ var executeActions = function () {
7685
Arguments: \n\
7786
-c, --create <name> create project folder and prepare it \n\
7887
-u, --use <template> use/copy specified template when creating project \n\
79-
-p, --prepare prepare for import, i.e. add needed `.project` file and other `.*`\n\
88+
-p, --prepare prepare Nodeclipse [Node.js] project for import, i.e. add needed `.project` file and other `.*`\n\
8089
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\
8191
-n, --name [<name>] project name (default is folder name)\n\
8292
-h, --help this help screen\n\
8393
-v, --version print nodeclipse CLI's version\n\
@@ -117,9 +127,17 @@ var executeActions = function () {
117127
var templatesfolder = __dirname;
118128
if (debug) console.log("Templates folder is: " + templatesfolder);
119129

130+
if (use){
131+
//cp(__dirname+use+'/*','.');
132+
var fromfolder = path.join(templatesfolder, use, '/*')
133+
if (verbose) console.log("Copying from "+ fromfolder );
134+
cp( fromfolder, '.' )
135+
}
136+
120137
// common-templates
121138
if (prepare){
122139
//var fromfolder = path.join(templatesfolder, 'common-templates', '/*')
140+
var fromfolder = path.join(templatesfolder, 'common-templates')
123141
if (verbose) console.log("Copying from "+ fromfolder );
124142

125143
//cp( '-A', fromfolder, '.' )
@@ -128,7 +146,6 @@ var executeActions = function () {
128146
//console.log( fs.readdirSync(fromfolder) ); --> [ '.gitignore', '.jshintrc', '.settings', 'README.md' ]
129147
mkdir('.settings'); //HACK1
130148
//for file in find(fromfolder)
131-
var fromfolder = path.join(templatesfolder, 'common-templates')
132149
find(fromfolder).forEach( function copyFile(file) {
133150
if (verbose) console.log("Copying "+ file );
134151
// cp(file,'.'); // This does not recreate subfolders - DONE with HACK1
@@ -147,39 +164,38 @@ var executeActions = function () {
147164

148165
}
149166

150-
if (use){
151-
//cp(__dirname+use+'/*','.');
152-
var fromfolder = path.join(templatesfolder, use, '/*')
153-
if (verbose) console.log("Copying from "+ fromfolder );
154-
cp( fromfolder, '.' )
155-
}
156-
157167
// .project
168+
if (debug) console.log('projectNodeclipse='+projectNodeclipse+', projectGeneral='+projectGeneral);
169+
var curfolder = pwd();
170+
if (verbose) console.log("Current folder is: " + curfolder);
171+
if (!name){
172+
name = path.basename(curfolder);
173+
}
158174
if (prepare){
159-
var curfolder = pwd();
160-
if (verbose) console.log("Current folder is: " + curfolder);
161-
if (!name)
162-
name = path.basename(curfolder);
163-
164-
var str = cat(__dirname+'/eclipse/.project').replace('${projectname}', name);
165-
var destfile = curfolder + '/.project';
166-
167-
// http://www.nodejs.org/api/fs.html#fs_fs_appendfile_filename_data_options_callback
168-
169-
//console.log(curfolder + '/.project');
170-
fs.writeFile(destfile, str, function(err) {
171-
if (err)
172-
throw err;
173-
if (verbose) console.log('The file "'+destfile+'" was created !');
174-
console.log('In Eclipse/Enide select File -> Import... -> General / Existing Projects into Workspace');
175-
console.log('and enter current directory: '+curfolder);
176-
});
177-
178-
if (debug) console.log(str); // ''.toString()
175+
copyDotProjectFile('eclipse',curfolder, name);
176+
} else if (projectGeneral){
177+
copyDotProjectFile('eclipse-project-general',curfolder, name);
179178
}
180179

181180
inviteToSiteAsTheLastLine();
182181
}
182+
var copyDotProjectFile = function (eclipse, curfolder, name) {
183+
if (!eclipse) eclipse = 'eclipse';
184+
var str = cat(__dirname+'/'+eclipse+'/.project').replace('${projectname}', name);
185+
var destfile = curfolder + '/.project';
186+
187+
// http://www.nodejs.org/api/fs.html#fs_fs_appendfile_filename_data_options_callback
188+
fs.writeFile(destfile, str, function(err) {
189+
if (err)
190+
throw err;
191+
if (verbose) console.log('The file "'+destfile+'" was created !');
192+
console.log('In Eclipse/Enide select File -> Import... -> General / Existing Projects into Workspace');
193+
console.log('and enter project directory: '+curfolder);
194+
});
195+
196+
if (debug) console.log(str); // ''.toString()
197+
198+
}
183199
var inviteToSiteAsTheLastLine = function () {
184200
setTimeout(inviteToSite,100);
185201
}

org.nodeclipse.ui/templates/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nodeclipse",
3-
"version": "0.8.0",
3+
"version": "0.8.2",
44
"description": "nodeclipse CLI - prepare Node.js project to be imported into Eclipse (Nodeclipse)",
55
"main": "copier.js",
66
"scripts": {

0 commit comments

Comments
 (0)