Skip to content

Commit 9ad61ef

Browse files
committed
generate demo with grunt task
1 parent f5ca531 commit 9ad61ef

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

Diff for: Gruntfile.js

+68
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
'use strict';
22
var markdown = require('marked');
33
var semver = require('semver');
4+
var _s = require('underscore.string');
5+
var shell = require('shelljs');
6+
var process = require('child_process');
7+
var Q = require('q');
48

59
module.exports = function (grunt) {
610
require('load-grunt-tasks')(grunt);
711

812
grunt.initConfig({
13+
config: {
14+
demo: 'demo'
15+
},
916
pkg: grunt.file.readJSON('package.json'),
1017
changelog: {
1118
options: {
@@ -32,6 +39,17 @@ module.exports = function (grunt) {
3239
node: true
3340
},
3441
all: ['Gruntfile.js', '*/index.js']
42+
},
43+
clean: {
44+
demo: {
45+
files: [{
46+
dot: true,
47+
src: [
48+
'<%= config.demo %>/*',
49+
'!<%= config.demo %>/dist'
50+
]
51+
}]
52+
}
3553
}
3654
});
3755

@@ -63,5 +81,55 @@ module.exports = function (grunt) {
6381
}, grunt.task.current.async());
6482
});
6583

84+
grunt.registerTask('generate', 'generate demo', function () {
85+
var done = this.async();
86+
87+
shell.cd(grunt.config('config').demo);
88+
89+
Q()
90+
.then(generateDemo)
91+
.then(gruntRelease)
92+
.catch(function(msg){
93+
grunt.fail.warn(msg || 'failed to generate demo')
94+
})
95+
.finally(done);
96+
97+
function generateDemo() {
98+
var deferred = Q.defer();
99+
var generator = shell.exec('yo angular-fullstack', {async:true});
100+
101+
generator.stdout.on('data', function (data) {
102+
if(_s.include(data, '[?]')) {
103+
generator.stdin.write('\n');
104+
}
105+
grunt.verbose.writeln(data);
106+
});
107+
108+
generator.on('close', function (code) {
109+
deferred.resolve();
110+
});
111+
112+
return deferred.promise;
113+
}
114+
115+
function gruntRelease() {
116+
var deferred = Q.defer();
117+
var generator = shell.exec('grunt build', {async:true});
118+
generator.stdout.on('data', function (data) {
119+
grunt.verbose.writeln(data);
120+
});
121+
generator.on('exit', function (code) {
122+
deferred.resolve();
123+
});
124+
125+
return deferred.promise;
126+
}
127+
});
128+
129+
grunt.registerTask('demo', [
130+
'clean:demo',
131+
'generate'
132+
]);
133+
66134
//grunt.registerTask('default', ['bump', 'changelog', 'stage', 'release']);
67135
};

Diff for: package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@
3838
"chai": "^1.9.1",
3939
"fs-extra": "^0.9.1",
4040
"grunt": "~0.4.1",
41+
"grunt-contrib-clean": "^0.6.0",
4142
"grunt-contrib-jshint": "^0.10.0",
4243
"grunt-conventional-changelog": "~1.0.0",
4344
"grunt-release": "~0.6.0",
4445
"load-grunt-tasks": "~0.2.0",
4546
"marked": "~0.2.8",
4647
"mocha": "~1.14.0",
48+
"q": "^1.0.1",
4749
"semver": "~2.2.1",
48-
"underscore.string": "~2.3.1"
50+
"shelljs": "^0.3.0",
51+
"underscore.string": "^2.3.3"
4952
},
5053
"engines": {
5154
"node": ">=0.10.0",

0 commit comments

Comments
 (0)