1
1
'use strict' ;
2
2
var markdown = require ( 'marked' ) ;
3
3
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' ) ;
4
8
5
9
module . exports = function ( grunt ) {
6
10
require ( 'load-grunt-tasks' ) ( grunt ) ;
7
11
8
12
grunt . initConfig ( {
13
+ config : {
14
+ demo : 'demo'
15
+ } ,
9
16
pkg : grunt . file . readJSON ( 'package.json' ) ,
10
17
changelog : {
11
18
options : {
@@ -32,6 +39,17 @@ module.exports = function (grunt) {
32
39
node : true
33
40
} ,
34
41
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
+ }
35
53
}
36
54
} ) ;
37
55
@@ -63,5 +81,55 @@ module.exports = function (grunt) {
63
81
} , grunt . task . current . async ( ) ) ;
64
82
} ) ;
65
83
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
+
66
134
//grunt.registerTask('default', ['bump', 'changelog', 'stage', 'release']);
67
135
} ;
0 commit comments