1
1
module . exports = function ( grunt ) {
2
+ // Application type : default/installer
3
+ var pkg = grunt . file . readJSON ( 'package.json' ) ;
4
+ var app_type = pkg . app_type ;
5
+ var app_cfg = pkg . type_cfg [ pkg . app_type ] ;
6
+ var app_version = pkg . v ;
7
+ var git_message = pkg . v ;
8
+ var app_rc = ( pkg . rc ? pkg . rc + 1 : 0 ) ;
2
9
10
+ if ( app_rc ) {
11
+ app_version += '-RC-' + app_rc ;
12
+ git_message += '-RC-' + pkg . rc ;
13
+ }
3
14
// Project configuration.
4
15
grunt . initConfig ( {
5
- pkg : grunt . file . readJSON ( 'package.json' ) ,
16
+ // pkg: grunt.file.readJSON('package.json'),
6
17
// Banner
7
18
banner : 'Copyright: Z-Wave Europe, Created: <%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>' ,
8
19
// Clean dir
9
20
clean : {
10
21
options : { force : true } ,
11
- build : [ "dist/" ]
22
+ build : [ app_cfg . dir + '/' ]
12
23
} ,
13
24
// NG templates
14
25
ngtemplates : {
@@ -28,39 +39,37 @@ module.exports = function (grunt) {
28
39
}
29
40
} ,
30
41
src : 'app/views/**/*.html' ,
31
- dest : 'dist /app/js/templates.js'
42
+ dest : app_cfg . dir + ' /app/js/templates.js'
32
43
}
33
44
} ,
34
45
// Concat
35
46
concat : {
36
- indexhtml : {
37
- src : [ 'index.tpl.html' ] ,
38
- dest : 'dist/index.html'
39
- } ,
40
47
css : {
41
48
src : [
42
49
'app/css/main.css'
43
50
] ,
44
- dest : 'dist /app/css/build.css'
51
+ dest : app_cfg . dir + ' /app/css/build.css'
45
52
} ,
46
53
js : {
47
54
src : [
48
55
// Vendors
49
56
'vendor/jquery/jquery-1.11.1.min.js' ,
50
57
'vendor/underscore/underscore-1.8.3/underscore-min.js' ,
51
- 'vendor/cytoscape/cytoscape.js' ,
52
- 'vendor/upload/angular-file-upload-shim.js' ,
58
+ 'vendor/cytoscape/cytoscape.min.js' ,
59
+ 'vendor/justgagejs/raphael-2.1.4.min.js' ,
60
+ 'vendor/justgagejs/justgage.js' ,
61
+ 'vendor/upload/angular-file-upload-shim.min.js' ,
53
62
'vendor/alertify/alertify.min.js' ,
54
63
// Angular
55
64
'vendor/angular/angular-1.2.14/angular.min.js' ,
56
- 'vendor/upload/angular-file-upload.js' ,
65
+ 'vendor/upload/angular-file-upload.min. js' ,
57
66
'vendor/angular/angular-1.2.14/angular-route.min.js' ,
58
67
'vendor/angular/angular-1.2.14/angular-resource.min.js' ,
59
68
'vendor/angular/angular-1.2.14/angular-cookies.min.js' ,
60
69
// Bootstrap
61
70
'vendor/bootstrap/bootstrap.min.js' ,
62
71
// XML
63
- 'vendor/xml/xml2json.js' ,
72
+ 'vendor/xml/xml2json.min. js' ,
64
73
// Z-Wave old ExpertU
65
74
'vendor/zwave/pyzw.js' ,
66
75
'vendor/zwave/pyzw_zwave_ui.js' ,
@@ -69,11 +78,12 @@ module.exports = function (grunt) {
69
78
// APP
70
79
'app/app.js' ,
71
80
'app/routes.js' ,
72
- 'dist /app/js/templates.js',
81
+ app_cfg . dir + ' /app/js/templates.js',
73
82
'app/modules/qAllSettled.js' ,
74
83
'app/directives/directives.js' ,
75
84
'app/directives/angular-slider.js' ,
76
85
'app/directives/dir-pagination.js' ,
86
+ 'app/directives/double-scroll-bars.min.js' ,
77
87
'app/filters/filters.js' ,
78
88
'app/factories/factories.js' ,
79
89
'app/services/services.js' ,
@@ -97,9 +107,10 @@ module.exports = function (grunt) {
97
107
'app/controllers/association.js' ,
98
108
'app/controllers/control.js' ,
99
109
'app/controllers/statistics.js' ,
100
- 'app/controllers/routing .js' ,
110
+ 'app/controllers/neighbor .js' ,
101
111
'app/controllers/reorganization.js' ,
102
112
'app/controllers/timing.js' ,
113
+ 'app/controllers/linkstatus.js' ,
103
114
'app/controllers/controllerinfo.js' ,
104
115
'app/controllers/queue.js' ,
105
116
'app/controllers/interviewcommand.js' ,
@@ -120,14 +131,15 @@ module.exports = function (grunt) {
120
131
'app/jquery/jquery-app.js'
121
132
122
133
] ,
123
- dest : 'dist /app/js/build.js'
134
+ dest : app_cfg . dir + ' /app/js/build.js'
124
135
}
125
136
} ,
126
137
json_generator : {
127
138
target : {
128
139
dest : "app/info.json" ,
129
140
options : {
130
- name : 'Expert UI' ,
141
+ name : app_cfg . name ,
142
+ version : app_version ,
131
143
built : '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>' ,
132
144
timestamp : '<%= Math.floor(Date.now() / 1000) %>'
133
145
}
@@ -142,35 +154,50 @@ module.exports = function (grunt) {
142
154
'app/images/**' ,
143
155
//'app/views/**',
144
156
'app/lang/**'
145
- ] , dest : 'dist /'
157
+ ] , dest : app_cfg . dir + ' /'
146
158
} ,
147
- { src :[ 'storage/**' ] , dest : 'dist /'} ,
148
- { expand : true , src : [ 'app/config.js' ] , dest : 'dist /app/js/', flatten : true }
149
- /*{src: ['storage/img/**'], dest: 'dist /'},
150
- {src: ['storage/demo/**'], dest: 'dist /'},
151
- {src: ['storage/data/**'], dest: 'dist /'}*/
159
+ { src : [ 'storage/**' ] , dest : app_cfg . dir + ' /'} ,
160
+ { expand : true , src : [ 'app/config.js' ] , dest : app_cfg . dir + ' /app/js/', flatten : true }
161
+ /*{src: ['storage/img/**'], dest: app_cfg.dir + ' /'},
162
+ {src: ['storage/demo/**'], dest: app_cfg.dir + ' /'},
163
+ {src: ['storage/data/**'], dest: app_cfg.dir + ' /'}*/
152
164
]
153
165
} ,
154
166
info : {
155
167
files : [
156
- { src : [ 'app/info.json' ] , dest : 'dist /app/info.json'}
168
+ { src : [ 'app/info.json' ] , dest : app_cfg . dir + ' /app/info.json'}
157
169
]
158
170
} ,
159
171
fonts : {
160
172
files : [
161
- { expand : true , src : [ 'app/fonts/*' ] , dest : 'dist /app/fonts/', flatten : true }
173
+ { expand : true , src : [ 'app/fonts/*' ] , dest : app_cfg . dir + ' /app/fonts/', flatten : true }
162
174
]
163
175
} ,
164
176
angmap : {
165
177
files : [
166
- { expand : true , src : [ 'vendor/angular/angular-1.2.14/angular-cookies.min.js.map' ] , dest : 'dist/app/js/' , flatten : true } ,
167
- { expand : true , src : [ 'vendor/angular/angular-1.2.14/angular.min.js.map' ] , dest : 'dist/app/js/' , flatten : true } ,
168
- { expand : true , src : [ 'vendor/angular/angular-1.2.14/angular-route.min.js.map' ] , dest : 'dist/app/js/' , flatten : true }
178
+ {
179
+ expand : true ,
180
+ src : [ 'vendor/angular/angular-1.2.14/angular-cookies.min.js.map' ] ,
181
+ dest : app_cfg . dir + '/app/js/' ,
182
+ flatten : true
183
+ } ,
184
+ {
185
+ expand : true ,
186
+ src : [ 'vendor/angular/angular-1.2.14/angular.min.js.map' ] ,
187
+ dest : app_cfg . dir + '/app/js/' ,
188
+ flatten : true
189
+ } ,
190
+ {
191
+ expand : true ,
192
+ src : [ 'vendor/angular/angular-1.2.14/angular-route.min.js.map' ] ,
193
+ dest : app_cfg . dir + '/app/js/' ,
194
+ flatten : true
195
+ }
169
196
]
170
197
} ,
171
198
licence : {
172
199
files : [
173
- { src : [ 'LICENCE.md' ] , dest : 'dist /LICENCE.md'}
200
+ { src : [ 'LICENCE.md' ] , dest : app_cfg . dir + ' /LICENCE.md'}
174
201
]
175
202
}
176
203
} ,
@@ -184,9 +211,9 @@ module.exports = function (grunt) {
184
211
files : [
185
212
{
186
213
expand : true ,
187
- cwd : 'dist /app/css/',
214
+ cwd : app_cfg . dir + ' /app/css/',
188
215
src : [ '*.css' , '!*.min.css' ] ,
189
- dest : 'dist /app/css/',
216
+ dest : app_cfg . dir + ' /app/css/',
190
217
ext : '.css'
191
218
}
192
219
]
@@ -199,7 +226,7 @@ module.exports = function (grunt) {
199
226
banner : '/* <%= banner %> */'
200
227
} ,
201
228
files : {
202
- src : [ 'dist /app/js/templates.js', 'dist /app/js/config.js', 'dist /app/js/build.js']
229
+ src : [ app_cfg . dir + ' /app/js/templates.js', app_cfg . dir + ' /app/js/config.js', app_cfg . dir + ' /app/js/build.js']
203
230
}
204
231
} ,
205
232
html : {
@@ -208,9 +235,94 @@ module.exports = function (grunt) {
208
235
banner : '<!-- <%= banner %> -->'
209
236
} ,
210
237
files : {
211
- src : [ 'dist/index.html' ]
238
+ src : [ app_cfg . dir + '/index.html' ]
239
+ }
240
+ }
241
+ } ,
242
+ htmlbuild : {
243
+ dist : {
244
+ src : 'index.html' ,
245
+ dest : app_cfg . dir + '/' ,
246
+ options : {
247
+ sections : {
248
+ dist_head : 'app/views/dist_head.txt'
249
+ }
250
+ }
251
+
252
+ }
253
+ } ,
254
+ replace : {
255
+ dist : {
256
+ options : {
257
+ patterns : [
258
+ {
259
+ match : / ' a p p _ t y p e ' : ' d e f a u l t ' / g,
260
+ replacement : function ( ) {
261
+ return '\'app_type\': \'' + app_type + '\'' ;
262
+ }
263
+ } ,
264
+ {
265
+ match : / ' a p p _ t y p e ' : ' i n s t a l l e r ' / g,
266
+ replacement : function ( ) {
267
+ return '\'app_type\': \'' + app_type + '\'' ;
268
+ }
269
+ } ,
270
+ {
271
+ match : / ' d e v _ h o s t ' : \[ ( [ ^ \] ] + ) ] / g,
272
+ replacement : function ( ) {
273
+ return '\'dev_host\': \[\]' ;
274
+ }
275
+ } ,
276
+ {
277
+ match : 'dev' ,
278
+ replacement : 'live'
279
+ } ,
280
+ {
281
+ match : 'app_name' ,
282
+ replacement : app_cfg . name
283
+ } ,
284
+ {
285
+ match : 'app_version' ,
286
+ replacement : app_version
287
+ } ,
288
+ {
289
+ match : 'app_built' ,
290
+ replacement : '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>'
291
+ }
292
+ ]
293
+ } ,
294
+ files : [
295
+ { expand : true , flatten : true , src : [ 'app/config.js' ] , dest : app_cfg . dir + '/app/js/' }
296
+ ]
297
+ }
298
+ } ,
299
+ modify_json : {
300
+ file : {
301
+ expand : true ,
302
+ //cwd: 'test/',
303
+ src : [ 'package.json' ] ,
304
+ options : {
305
+ add : true ,
306
+ fields : {
307
+ "rc" : app_rc ,
308
+ "built" : '<%= grunt.template.today("dd-mm-yyyy HH:MM:ss") %>'
309
+ } ,
310
+ indent : 2
212
311
}
213
312
}
313
+ } ,
314
+ 'release-it' : {
315
+ options : {
316
+ pkgFiles : [ 'package.json' ] ,
317
+ commitMessage : 'Release ' + app_cfg . name + ' ' + git_message ,
318
+ tagName : '%s' ,
319
+ tagAnnotation : 'Release ' + app_cfg . name + ' ' + git_message ,
320
+ buildCommand : false
321
+ }
322
+ } ,
323
+ clean : {
324
+ options : { force : true } ,
325
+ build : [ 'dist/storage/data/docs/' ]
214
326
}
215
327
} ) ;
216
328
// Load the plugin that provides the "uglify" task.
@@ -226,8 +338,12 @@ module.exports = function (grunt) {
226
338
grunt . loadNpmTasks ( 'grunt-string-replace' ) ;
227
339
grunt . loadNpmTasks ( 'grunt-banner' ) ;
228
340
grunt . loadNpmTasks ( 'grunt-json-generator' ) ;
341
+ grunt . loadNpmTasks ( 'grunt-html-build' ) ;
342
+ grunt . loadNpmTasks ( 'grunt-replace' ) ;
343
+ grunt . loadNpmTasks ( 'grunt-release-it' ) ;
344
+ grunt . loadNpmTasks ( 'grunt-modify-json' ) ;
229
345
230
346
// Default task(s).
231
347
//grunt.registerTask('default', ['clean','concat','copy','cssmin','string-replace']);
232
- grunt . registerTask ( 'default' , [ 'clean' , 'ngtemplates' , 'concat' , 'json_generator' , 'copy' , 'cssmin' , 'usebanner' ] ) ;
348
+ grunt . registerTask ( 'default' , [ 'clean' , 'ngtemplates' , 'concat' , 'json_generator' , 'copy' , 'cssmin' , 'usebanner' , 'htmlbuild' , 'replace' , 'modify_json' , 'clean '] ) ;
233
349
} ;
0 commit comments