Skip to content

Commit 3b55a22

Browse files
committed
Merge pull request #1854 from angular-fullstack/canary
Canary
2 parents b4731c1 + 71f8a08 commit 3b55a22

File tree

197 files changed

+1573
-914
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

197 files changed

+1573
-914
lines changed

Diff for: .gitignore

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
node_modules
22
bower_components
3-
test/temp
3+
/generators/*
4+
/test/*
45
demo
56
.idea
67
.DS_Store
7-
release.txt
8-
test/fixtures/bower.json
9-
test/fixtures/package.json
8+
release.txt

Diff for: .npmignore

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
angular-fullstack-deps
22
test
33
.idea
4+
src
5+
scripts
6+
ISSUE_TEMPLATE.md
7+
PULL_REQUEST_TEMPLATE.md
8+
.travis.yml
9+
gulpfile.babel.js
10+
Gruntfile.js
11+
.jshintrc

Diff for: Gruntfile.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ module.exports = function (grunt) {
8787
curly: false,
8888
node: true
8989
},
90-
all: ['Gruntfile.js', '*/index.js']
90+
all: ['Gruntfile.js', 'src/**/*.js']
9191
},
9292
env: {
9393
fast: {
@@ -276,8 +276,8 @@ module.exports = function (grunt) {
276276
fs.writeFileSync(path.resolve(d), JSON.stringify(json, null, 2));
277277
};
278278

279-
processJson('app/templates/_package.json', dest + 'package.json');
280-
processJson('app/templates/_bower.json', dest + 'bower.json');
279+
processJson('templates/app/_package.json', dest + 'package.json');
280+
processJson('templates/app/_bower.json', dest + 'bower.json');
281281
});
282282

283283
grunt.registerTask('installFixtures', 'install package and bower fixtures', function() {

Diff for: angular-fullstack-deps

Diff for: app/index.js

-9
This file was deleted.

Diff for: endpoint/index.js

-9
This file was deleted.

Diff for: gulpfile.js

+170
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
'use strict';
2+
const fs = require('fs');
3+
const path = require('path');
4+
const exec = require('child_process').exec;
5+
const _ = require('lodash');
6+
const Promise = require('bluebird');
7+
const gulp = require('gulp');
8+
const gutil = require('gulp-util');
9+
const babel = require('gulp-babel');
10+
const gulpMocha = require('gulp-mocha');
11+
const plumber = require('gulp-plumber');
12+
const gulpIf = require('gulp-if');
13+
const del = require('del');
14+
const lazypipe = require('lazypipe');
15+
const runSequence = require('run-sequence');
16+
const merge = require('merge-stream');
17+
const shell = require('shelljs');
18+
19+
var watching = false;
20+
21+
const mocha = lazypipe()
22+
.pipe(gulpMocha, {
23+
reporter: 'spec',
24+
timeout: 120000,
25+
slow: 500,
26+
globals: {
27+
should: require('should')
28+
},
29+
require: [
30+
'./mocha.conf'
31+
]
32+
});
33+
34+
const transpile = lazypipe()
35+
.pipe(babel);
36+
37+
gulp.task('clean', () => {
38+
return del(['generators/**/*', './test/(**|!fixtures/node_modules|!fixtures/bower_components)/*']);
39+
});
40+
41+
gulp.task('babel', () => {
42+
let generators = gulp.src(['src/generators/**/*.js'])
43+
.pipe(gulpIf(watching, plumber()))
44+
.pipe(transpile())
45+
.pipe(gulp.dest('generators'));
46+
47+
let test = gulp.src(['src/test/**/*.js'])
48+
.pipe(gulpIf(watching, plumber()))
49+
.pipe(transpile())
50+
.pipe(gulp.dest('test'));
51+
52+
return merge(generators, test);
53+
});
54+
55+
gulp.task('watch', () => {
56+
watching = true;
57+
return gulp.watch('src/**/*.js', ['babel']);
58+
});
59+
60+
gulp.task('copy', () => {
61+
let nonJsGen = gulp.src(['src/generators/**/*', '!src/generators/**/*.js'], {dot: true})
62+
.pipe(gulp.dest('generators'));
63+
64+
let nonJsTest = gulp.src(['src/test/**/*', '!src/test/**/*.js'], {dot: true})
65+
.pipe(gulp.dest('test'));
66+
67+
return merge(nonJsGen, nonJsTest);
68+
});
69+
70+
gulp.task('build', cb => {
71+
return runSequence(
72+
'clean',
73+
'babel',
74+
'copy',
75+
cb
76+
);
77+
});
78+
79+
var processJson = function(src, dest, opt) {
80+
return new Promise((resolve, reject) => {
81+
// read file, strip all ejs conditionals, and parse as json
82+
fs.readFile(path.resolve(src), 'utf8', (err, data) => {
83+
if(err) return reject(err);
84+
85+
var json = JSON.parse(data.replace(/<%(.*)%>/g, ''));
86+
87+
// set properties
88+
json.name = opt.appName;
89+
json.description = opt.private
90+
? null
91+
: 'The purpose of this repository is to track all the possible dependencies of an application created by generator-angular-fullstack.';
92+
json.version = opt.genVer;
93+
json.private = opt.private;
94+
95+
// stringify json and write it to the destination
96+
fs.writeFile(path.resolve(dest), JSON.stringify(json, null, 2), err => {
97+
if(err) reject(err);
98+
else resolve();
99+
});
100+
});
101+
});
102+
};
103+
104+
function updateFixtures(target) {
105+
const deps = target === 'deps';
106+
const genVer = require('./package.json').version;
107+
const dest = __dirname + (deps ? '/angular-fullstack-deps/' : '/test/fixtures/');
108+
const appName = deps ? 'angular-fullstack-deps' : 'tempApp';
109+
110+
return Promise.all([
111+
processJson('templates/app/_package.json', dest + 'package.json', {appName, genVer, private: !deps}),
112+
processJson('templates/app/_bower.json', dest + 'bower.json', {appName, genVer, private: !deps})
113+
]);
114+
}
115+
116+
gulp.task('updateFixtures', cb => {
117+
return runSequence(['updateFixtures:test', 'updateFixtures:deps'], cb);
118+
});
119+
gulp.task('updateFixtures:test', () => {
120+
return updateFixtures('test');
121+
});
122+
gulp.task('updateFixtures:deps', () => {
123+
return updateFixtures('deps');
124+
});
125+
126+
function execAsync(cmd, opt) {
127+
return new Promise((resolve, reject) => {
128+
exec(cmd, opt, (err, stdout, stderr) => {
129+
if(err) {
130+
console.log(`stderr: ${stderr}`);
131+
return reject(err);
132+
}
133+
134+
return resolve(stdout);
135+
})
136+
});
137+
}
138+
139+
gulp.task('installFixtures', function() {
140+
gutil.log('installing npm & bower dependencies for generated app');
141+
let progress = setInterval(() => {
142+
process.stdout.write('.');
143+
}, 1 * 1000);
144+
shell.cd('test/fixtures');
145+
146+
return Promise.all([
147+
execAsync('npm install --quiet', {cwd: '../fixtures'}),
148+
execAsync('bower install', {cwd: '../fixtures'})
149+
]).then(() => {
150+
process.stdout.write('\n');
151+
if(!process.env.SAUCE_USERNAME) {
152+
gutil.log('running npm run-script update-webdriver');
153+
return execAsync('npm run-script update-webdriver').then(() => {
154+
clearInterval(progress);
155+
process.stdout.write('\n');
156+
shell.cd('../../');
157+
});
158+
} else {
159+
clearInterval(progress);
160+
process.stdout.write('\n');
161+
shell.cd('../../');
162+
return Promise.resolve();
163+
}
164+
});
165+
});
166+
167+
gulp.task('test', () => {
168+
return gulp.src(['test/pre.test.js', 'test/*.test.js'])
169+
.pipe(mocha());
170+
});

Diff for: mocha.conf.js

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
global.DEBUG = !!process.env.DEBUG;
4+
5+
var fs = require('fs');
6+
var Promise = require('bluebird');
7+
Promise.promisifyAll(fs);

Diff for: package.json

+28-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "generator-angular-fullstack",
3-
"version": "3.6.1",
3+
"version": "3.7.0-beta.1",
44
"description": "Yeoman generator for creating MEAN stack applications, using MongoDB, Express, AngularJS, and Node",
55
"keywords": [
66
"yeoman-generator",
@@ -31,24 +31,32 @@
3131
"url": "git://github.com/angular-fullstack/generator-angular-fullstack.git"
3232
},
3333
"scripts": {
34-
"test": "grunt test"
34+
"test": "gulp updateFixtures:test && gulp installFixtures && gulp build && gulp test",
35+
"prepublish": "gulp build"
3536
},
3637
"dependencies": {
37-
"babel-core": "^6.7.0",
38-
"babel-plugin-transform-class-properties": "^6.6.0",
39-
"babel-preset-es2015": "^6.6.0",
40-
"babel-register": "^6.6.5",
38+
"babel-plugin-syntax-class-properties": "^6.5.0",
39+
"babel-plugin-syntax-flow": "^6.5.0",
40+
"babel-plugin-transform-flow-strip-types": "^6.7.0",
4141
"chalk": "^1.1.0",
42-
"generator-ng-component": "~0.2.1",
42+
"generator-ng-component": "~0.3.0",
4343
"glob": "^7.0.3",
44+
"gulp-babel": "^6.1.2",
45+
"gulp-beautify": "^2.0.0",
46+
"gulp-filter": "^4.0.0",
4447
"insight": "~0.8.1",
4548
"lodash": "^4.6.1",
4649
"underscore.string": "^3.1.1",
47-
"yeoman-generator": "^0.22.5",
50+
"yeoman-generator": "~0.23.3",
4851
"yeoman-welcome": "^1.0.1"
4952
},
5053
"devDependencies": {
54+
"babel-plugin-transform-class-properties": "^6.6.0",
55+
"babel-preset-es2015": "^6.6.0",
56+
"babel-register": "^6.6.5",
57+
"bluebird": "^3.3.5",
5158
"chai": "^3.2.0",
59+
"del": "^2.2.0",
5260
"grunt": "^1.0.1",
5361
"grunt-build-control": "^0.7.0",
5462
"grunt-contrib-clean": "^1.0.0",
@@ -58,13 +66,24 @@
5866
"grunt-env": "^0.4.1",
5967
"grunt-mocha-test": "^0.12.7",
6068
"grunt-release": "^0.13.0",
69+
"gulp": "^3.9.1",
70+
"gulp-if": "^2.0.0",
71+
"gulp-mocha": "^2.2.0",
72+
"gulp-plumber": "^1.1.0",
73+
"gulp-util": "^3.0.7",
6174
"jit-grunt": "~0.10.0",
75+
"jscs": "^3.0.3",
76+
"lazypipe": "^1.0.1",
77+
"merge-stream": "^1.0.0",
78+
"minimatch": "^3.0.0",
6279
"mocha": "^2.2.5",
6380
"q": "^1.0.1",
6481
"recursive-readdir": "^2.0.0",
82+
"run-sequence": "^1.1.5",
6583
"shelljs": "^0.7.0",
84+
"should": "^8.3.1",
6685
"yeoman-assert": "^2.0.0",
67-
"yeoman-test": "^1.1.0"
86+
"yeoman-test": "~1.4.0"
6887
},
6988
"engines": {
7089
"node": "^5.10.1",

Diff for: app/USAGE renamed to src/generators/app/USAGE

File renamed without changes.

0 commit comments

Comments
 (0)