Skip to content

Commit 856ee87

Browse files
committed
Merge pull request #114 from ilanbiala/master
Release 0.4.1
2 parents 82bd307 + fd5a05b commit 856ee87

5 files changed

Lines changed: 136 additions & 104 deletions

File tree

.travis.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
language: node_js
22
node_js:
3-
- '0.10'
4-
- '0.12'
3+
- 0.10
4+
- 0.12
5+
- 4
6+
matrix:
7+
allow_failures:
8+
- node_js: 4
9+
sudo: false
10+
cache:
11+
apt: true
12+
directories:
13+
- node_modules/
514
before_install:
615
- currentfolder=${PWD##*/}
716
- if [ "$currentfolder" != 'generator-meanjs' ]; then cd .. && eval "mv $currentfolder generator-meanjs" && cd generator-meanjs; fi

app/index.js

Lines changed: 55 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
'use strict';
2-
3-
var Promise = require('bluebird');
4-
var child_process = require('child_process');
5-
var clog = require('c.log');
6-
var path = require('path');
7-
var yeoman = require('yeoman-generator');
1+
var Promise = require('bluebird'),
2+
child_process = require('child_process'),
3+
path = require('path'),
4+
s = require('underscore.string'),
5+
generators = require('yeoman-generator'),
6+
log = require('./log');
87

98
var exec = function (cmd) {
109
return new Promise(function (resolve, reject) {
@@ -27,27 +26,27 @@ var versions = {
2726
'0.4.1': 'v0.4.1'
2827
};
2928

30-
var MeanGenerator = yeoman.generators.Base.extend({
29+
module.exports = generators.Base.extend({
3130

3231
init: function () {
33-
this.pkg = yeoman.file.readJSON(path.join(__dirname, '../package.json'));
32+
this.pkg = this.fs.readJSON(path.join(__dirname, '../package.json'));
3433

3534
this.on('end', function () {
3635
if (!this.options['skip-install']) {
37-
clog.green('Running npm install for you....');
38-
clog.green('This may take a couple minutes.');
36+
log.green('Running npm install for you....');
37+
log.green('This may take a couple minutes.');
3938
exec('cd ' + folder + ' && npm install')
4039
.then(function () {
41-
clog('');
42-
clog.green('------------------------------------------');
43-
clog.green('Your MEAN.js application is ready!');
44-
clog('');
45-
clog.green('To Get Started, run the following command:');
46-
clog('');
47-
clog.yellow('cd ' + folder + ' && grunt');
48-
clog('');
49-
clog.green('Happy Hacking!');
50-
clog.green('------------------------------------------');
40+
log('');
41+
log.green('------------------------------------------');
42+
log.green('Your MEAN.js application is ready!');
43+
log('');
44+
log.green('To Get Started, run the following command:');
45+
log('');
46+
log.yellow('cd ' + folder + ' && grunt');
47+
log('');
48+
log.green('Happy Hacking!');
49+
log.green('------------------------------------------');
5150
});
5251
}
5352
});
@@ -61,15 +60,15 @@ var MeanGenerator = yeoman.generators.Base.extend({
6160
done();
6261
})
6362
.catch(function (err) {
64-
clog.red(new Error(err));
63+
log.red(new Error(err));
6564
return;
6665
});
6766
},
6867

6968
welcomeMessage: function () {
70-
clog(this.yeoman);
69+
log(this.yeoman);
7170

72-
clog.green('You\'re using the official MEAN.JS generator.');
71+
log.green('You\'re using the official MEAN.JS generator.');
7372
},
7473

7574
promptForVersion: function () {
@@ -98,7 +97,7 @@ var MeanGenerator = yeoman.generators.Base.extend({
9897
promptForFolder: function () {
9998
var done = this.async();
10099

101-
clog.red(version);
100+
log.red(version);
102101

103102
var prompt = {
104103
name: 'folder',
@@ -116,14 +115,14 @@ var MeanGenerator = yeoman.generators.Base.extend({
116115
cloneRepo: function () {
117116
var done = this.async();
118117

119-
clog.green('Cloning the MEAN repo.......');
118+
log.green('Cloning the MEAN repo.......');
120119

121120
exec('git clone --branch ' + versions[version] + ' https://github.com/meanjs/mean.git ' + folder)
122121
.then(function () {
123122
done();
124123
})
125124
.catch(function (err) {
126-
clog.red(err);
125+
log.red(err);
127126
return;
128127
});
129128
},
@@ -148,7 +147,7 @@ var MeanGenerator = yeoman.generators.Base.extend({
148147
done();
149148
})
150149
.catch(function (err) {
151-
clog.red(err);
150+
log.red(err);
152151
return;
153152
});
154153
},
@@ -191,18 +190,38 @@ var MeanGenerator = yeoman.generators.Base.extend({
191190
this.addArticleExample = props.addArticleExample;
192191
this.addChatExample = props.addChatExample;
193192

194-
this.slugifiedAppName = this._.slugify(this.appName);
195-
this.humanizedAppName = this._.humanize(this.appName);
196-
this.capitalizedAppAuthor = this._.capitalize(this.appAuthor);
193+
this.slugifiedAppName = s(this.appName).slugify().value();
194+
this.humanizedAppName = s(this.appName).humanize().value();
195+
this.capitalizedAppAuthor = s(this.appAuthor).capitalize().value();
197196

198197
done();
199198
}.bind(this));
200199
},
201200

202201
copyTemplates: function () {
203-
this.template(version + '/_package.json', folderPath + 'package.json');
204-
this.template(version + '/_bower.json', folderPath + 'bower.json');
205-
this.template(version + '/config/env/_default.js', folderPath + 'config/env/default.js');
202+
this.fs.copyTpl(
203+
this.templatePath(version + '/_package.json'),
204+
this.destinationPath(folderPath + 'package.json'),
205+
{
206+
slugifiedAppName: this.slugifiedAppName,
207+
appDescription: this.appDescription,
208+
capitalizedAppAuthor: this.capitalizedAppAuthor
209+
});
210+
this.fs.copyTpl(
211+
this.templatePath(version + '/_bower.json'),
212+
this.destinationPath(folderPath + 'bower.json'),
213+
{
214+
slugifiedAppName: this.slugifiedAppName,
215+
appDescription: this.appDescription
216+
});
217+
this.fs.copyTpl(
218+
this.templatePath(version + '/config/env/_default.js'),
219+
this.destinationPath(folderPath + 'config/env/default.js'),
220+
{
221+
appName: this.appName,
222+
appDescription: this.appDescription,
223+
appKeywords: this.appKeywords
224+
});
206225
},
207226

208227
removeChatExample: function () {
@@ -214,7 +233,7 @@ var MeanGenerator = yeoman.generators.Base.extend({
214233
done();
215234
})
216235
.catch(function (err) {
217-
clog.red(err);
236+
log.red(err);
218237
return;
219238
});
220239
} else {
@@ -231,7 +250,7 @@ var MeanGenerator = yeoman.generators.Base.extend({
231250
done();
232251
})
233252
.catch(function (err) {
234-
clog.red(err);
253+
log.red(err);
235254
return;
236255
});
237256
} else {
@@ -240,5 +259,3 @@ var MeanGenerator = yeoman.generators.Base.extend({
240259
}
241260

242261
});
243-
244-
module.exports = MeanGenerator;

app/log.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
var chalk = require('chalk');
2+
3+
var log = function log(value) {
4+
console.log(value);
5+
};
6+
7+
log.green = function(value) {
8+
console.log(chalk.green(value));
9+
};
10+
11+
log.blue = function(value) {
12+
console.log(chalk.blue(value));
13+
};
14+
15+
log.red = function(value) {
16+
console.log(chalk.red(value));
17+
};
18+
19+
log.yellow = function(value) {
20+
console.log(chalk.yellow(value));
21+
};
22+
23+
log.magenta = function(value) {
24+
console.log(chalk.magenta(value));
25+
};
26+
27+
log.cyan = function(value) {
28+
console.log(chalk.cyan(value));
29+
};
30+
31+
log.white = function(value) {
32+
console.log(chalk.white(value));
33+
};
34+
35+
log.gray = function(value) {
36+
console.log(chalk.gray(value));
37+
};
38+
39+
module.exports = log;

package.json

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,14 @@
2929
"angular"
3030
],
3131
"dependencies": {
32-
"bluebird": "^2.9.34",
33-
"c.log": "0.0.3",
34-
"chalk": "~0.5.1",
35-
"underscore.inflections": "~0.2.1",
36-
"yeoman-generator": "~0.17.1",
37-
"yo": ">=1.0.0"
32+
"bluebird": "~2.10.0",
33+
"chalk": "~1.1.1",
34+
"underscore.string": "~3.2.2",
35+
"yeoman-generator": "~0.20.3",
36+
"yo": "~1.4.8"
3837
},
3938
"devDependencies": {
40-
"assert": "~1.1.1",
41-
"async": "~0.9.0",
42-
"fs-extra": "~0.10.0",
43-
"mocha": "~1.21.3",
39+
"mocha": "~2.3.2",
4440
"temp": "~0.8.0"
4541
},
4642
"licenses": [

test/app.test.js

Lines changed: 25 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,15 @@
1-
'use strict';
2-
3-
var path = require('path');
4-
var fs = require('fs');
5-
var helpers = require('yeoman-generator').test;
6-
var temp = require('temp').track();
7-
var assert = require('assert');
8-
var exec = require('child_process').exec;
9-
var async = require('async');
10-
11-
//Extending the yeoman helper method
12-
function runGenerator(generatorType, name, context, promptAnswers, done) {
13-
var workspace = context.workspace = temp.mkdirSync();
14-
helpers.testDirectory(path.join(__dirname, 'temp'), function(err) {
15-
16-
if (err) {
17-
return done(err);
18-
}
19-
20-
this.app = helpers.createGenerator('meanjs:' + generatorType, [
21-
path.resolve(__dirname, '../' + generatorType)
22-
], [name]);
23-
24-
helpers.mockPrompt(this.app, promptAnswers);
25-
26-
this.app.options['skip-install'] = true;
27-
28-
this.app.run({}, function() {
29-
done();
30-
});
31-
32-
}.bind(context));
33-
}
1+
var path = require('path'),
2+
helpers = require('yeoman-generator').test,
3+
assert = require('yeoman-generator').assert,
4+
temp = require('temp').track();
345

356
describe('Main Generator', function () {
367
this.timeout(0);
378
/**
389
* Setup the temp directory
3910
*/
4011
beforeEach(function (done) {
41-
helpers.testDirectory(path.join(__dirname, 'temp'), function (err) {
42-
if (err) {
43-
console.log('Error', err);
44-
return err;
45-
}
46-
done();
47-
});
12+
helpers.testDirectory(path.join(__dirname, 'temp'), done);
4813
});
4914

5015
/**
@@ -56,23 +21,29 @@ describe('Main Generator', function () {
5621

5722
describe('Application generator without sample module', function () {
5823
beforeEach(function (done) {
59-
runGenerator('app',
60-
'',
61-
this, {
62-
'version': '0.4.0',
63-
'folder': 'temp',
64-
'appName': 'MEAN',
65-
'appDescription': 'Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js',
66-
'appKeywords': 'MongoDB, Express, AngularJS, Node.js',
67-
'appAuthor': 'Test',
68-
'addArticleExample': false,
69-
'addChatExample': false
70-
}, done
71-
);
24+
helpers.run(path.join(__dirname, '../app'))
25+
.withOptions({
26+
'skip-install': true
27+
})
28+
.withArguments([])
29+
.withPrompts({
30+
version: '0.4.0',
31+
folder: 'temp',
32+
appName: 'MEAN',
33+
appDescription: 'Full-Stack JavaScript with MongoDB, Express, AngularJS, and Node.js',
34+
appKeywords: 'MongoDB, Express, AngularJS, Node.js',
35+
appAuthor: 'Test',
36+
addArticleExample: false,
37+
addChatExample: false
38+
})
39+
.on('ready', function (generator) {
40+
// this is called right before `generator.run()` is called
41+
})
42+
.on('end', done);
7243
});
7344

7445
it('should generate a package.json file', function () {
75-
helpers.assertFile('temp/package.json');
46+
assert.file('temp/package.json');
7647
});
7748
});
7849

0 commit comments

Comments
 (0)