fc6689f3dd527d5f63db31f869864ac6fcc15f5b
[profile/ivi/cowhide.git] / grunt.js
1 /*
2  * Copyright (c) 2012, Intel Corporation.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 module.exports = function(grunt) {
11
12   // Project configuration.
13   grunt.initConfig({
14     watch: {
15       files: [
16         'grunt.js',
17
18         'src/javascripts/*.js',
19         'src/bootstrap/**/*.{js,less}',
20         'src/stylesheets/**/*.less',
21         'src/themes/**/*.less',
22
23         'examples/**/*.*',
24
25         'tests/**/*.js'
26       ],
27       tasks: 'default'
28     },
29     clean: {
30       folder: 'dist'
31     },
32     lint: {
33       all: [
34         'grunt.js',
35
36         'src/bootstrap/js/*.js',
37         'src/javascripts/*.js',
38
39         'examples/calf/javascripts/*.js',
40         'examples/calf/javascripts/app/*.js',
41         'examples/calf/javascripts/app/**/*.js',
42
43         'examples/calf-ng/javascripts/*.js',
44         'examples/calf-ng/javascripts/app/*.js',
45         'examples/calf-ng/javascripts/app/**/*.js',
46
47         'examples/widget-gallery/javascripts/*.js',
48
49         'examples/hoofbeats/javascripts/*.js',
50         'examples/hoofbeats/javascripts/resolvers/*.js',
51
52         'test/**/*.js'
53       ]
54     },
55     jshint: {
56       options: {
57         "validthis": true,
58         "laxcomma" : true,
59         "laxbreak" : true,
60         "browser"  : true,
61         "eqnull"   : true,
62         "debug"    : true,
63         "devel"    : true,
64         "boss"     : true,
65         "expr"     : true,
66         "asi"      : true,
67         "es5"      : true
68       }
69     },
70     less: {
71       default_: {
72         files: {
73           'dist/cowhide-default.css': 'src/themes/default/default.less',
74           'dist/cowhide-responsive.css': 'src/bootstrap/less/responsive.less'
75         }
76       },
77       default_night: {
78         files: {
79           'dist/cowhide-default-night.css': 'src/themes/default/default-night.less'
80         }
81       },
82       amelia: {
83         files: {
84           'dist/cowhide-amelia.css': 'src/themes/amelia/amelia.less'
85         }
86       },
87       amelia_night: {
88         files: {
89           // TODO: add theme implementation for amelia-night.
90           'dist/cowhide-amelia-night.css': 'src/themes/amelia/amelia.less'
91         }
92       },
93       spruce: {
94         files: {
95           'dist/cowhide-spruce.css': 'src/themes/spruce/spruce.less'
96         }
97       },
98       spruce_night: {
99         files: {
100           // TODO: add theme implementation for spruce-night.
101           'dist/cowhide-spruce-night.css': 'src/themes/spruce/spruce.less'
102         }
103       }
104     },
105     concat: {
106       cowhide_js: {
107         src: [
108           'lib/jquery-1.8.3.js',
109           'lib/jquery-ui-1.9.2.custom.js',
110           'lib/jquery.ui.slider.js',
111           'lib/jquery.mCustomScrollbar.js',
112           'lib/underscore-min.js',
113
114           // Bootstrap files must preserve order.
115           'src/bootstrap/js/bootstrap-transition.js',
116           'src/bootstrap/js/bootstrap-alert.js',
117           'src/bootstrap/js/bootstrap-button.js',
118           'src/bootstrap/js/bootstrap-carousel.js',
119           'src/bootstrap/js/bootstrap-collapse.js',
120           'src/bootstrap/js/bootstrap-dropdown.js',
121           'src/bootstrap/js/bootstrap-modal.js',
122           'src/bootstrap/js/bootstrap-tooltip.js',
123           'src/bootstrap/js/bootstrap-popover.js',
124           'src/bootstrap/js/bootstrap-scrollspy.js',
125           'src/bootstrap/js/bootstrap-tab.js',
126           'src/bootstrap/js/bootstrap-typeahead.js',
127           'src/bootstrap/js/bootstrap-affix.js',
128
129           'src/javascripts/api.js',
130
131           'src/javascripts/cowhide-core.js',
132           'src/javascripts/cowhide-widget.js',
133           'src/javascripts/cowhide-button.js',
134           'src/javascripts/cowhide-seat-selector.js',
135           'src/javascripts/cowhide-slider.js',
136           'src/javascripts/cowhide-text-input.js',
137           'src/javascripts/cowhide-radio-input.js',
138           'src/javascripts/cowhide-checkbox-input.js',
139           'src/javascripts/cowhide-select.js',
140           'src/javascripts/cowhide-page.js',
141           'src/javascripts/cowhide-header.js',
142           'src/javascripts/cowhide-scrollable.js',
143           'src/javascripts/cowhide-simple-scrollable.js'
144         ], dest: 'dist/cowhide.js'
145       },
146       cowhide_ng_js: {
147         src: [
148           'lib/angular.js',
149
150           'src/javascripts/cowhide-ng-core.js',
151           'src/javascripts/cowhide-ng-page.js',
152           'src/javascripts/cowhide-ng-header.js',
153           'src/javascripts/cowhide-ng-button.js',
154           'src/javascripts/cowhide-ng-slider.js',
155           'src/javascripts/cowhide-ng-scrollable.js'
156         ], dest: 'dist/cowhide-ng.js'
157       },
158       css_default: {
159         src: [
160           'dist/cowhide-default.css',
161           'lib/jquery.ui.slider.css',
162           'lib/jquery.mCustomScrollbar.css'
163         ], dest: 'dist/cowhide-default.css'
164       },
165       css_default_night: {
166         src: [
167           'dist/cowhide-default-night.css',
168           'lib/jquery.ui.slider.css',
169           'lib/jquery.mCustomScrollbar.css'
170         ], dest: 'dist/cowhide-default-night.css'
171       },
172       css_amelia: {
173         src: [
174           'dist/cowhide-amelia.css',
175           'lib/jquery.ui.slider.css',
176           'lib/jquery.mCustomScrollbar.css'
177         ], dest: 'dist/cowhide-amelia.css'
178       },
179       css_amelia_night: {
180         src: [
181           'dist/cowhide-amelia-night.css',
182           'lib/jquery.ui.slider.css',
183           'lib/jquery.mCustomScrollbar.css'
184         ], dest: 'dist/cowhide-amelia-night.css'
185       },
186       css_spruce: {
187         src: [
188           'dist/cowhide-spruce.css',
189           'lib/jquery.ui.slider.css',
190           'lib/jquery.mCustomScrollbar.css'
191         ], dest: 'dist/cowhide-spruce.css'
192       },
193       css_spruce_night: {
194         src: [
195           'dist/cowhide-spruce-night.css',
196           'lib/jquery.ui.slider.css',
197           'lib/jquery.mCustomScrollbar.css'
198         ], dest: 'dist/cowhide-spruce-night.css'
199       }
200     },
201     min: {
202       cowhide: {
203         src: ['dist/cowhide.js'],
204         dest: 'dist/cowhide.min.js'
205       },
206       cowhide_ng: {
207         src: ['fist/cowhide-ng.js'],
208         dest: 'dist/cowhide-ng.min.js'
209       }
210     },
211     cssmin: {
212       default_: {
213         src: ['dist/cowhide-default.css'],
214         dest: 'dist/cowhide-default.min.css'
215       },
216       responsive: {
217         src: ['dist/cowhide-responsive.css'],
218         dest: 'dist/cowhide-responsive.min.css'
219       },
220       default_night: {
221         src: ['dist/cowhide-default-night.css'],
222         dest: 'dist/cowhide-default-night.min.css'
223       },
224       amelia: {
225         src: ['dist/cowhide-amelia.css'],
226         dest: 'dist/cowhide-amelia.min.css'
227       },
228       amelia_night: {
229         src: ['dist/cowhide-amelia-night.css'],
230         dest: 'dist/cowhide-amelia-night.min.css'
231       },
232       spruce: {
233         src: ['dist/cowhide-spruce.css'],
234         dest: 'dist/cowhide-spruce.min.css'
235       },
236       spruce_night: {
237         src: ['dist/cowhide-spruce-night.css'],
238         dest: 'dist/cowhide-spruce-night.min.css'
239       }
240     },
241     copy: {
242       dist: {
243         files: {
244           'dist/images/': 'images/**',
245           'dist/README.md': 'README.md',
246           'dist/examples/calf/': 'examples/calf/**',
247           'dist/examples/calf-ng/': 'examples/calf-ng/**',
248           'dist/examples/hoofbeats/': 'examples/hoofbeats/**',
249           'dist/examples/widget-gallery/': 'examples/widget-gallery/**',
250           'dist/docs/': 'docs/**'
251         }
252       },
253       examples_lib: {
254         options: {
255           flatten: true
256         },
257         files: {
258           'examples/calf/lib/': [
259             'dist/cowhide-default.css',
260             'dist/cowhide.js',
261           ],
262           'examples/calf/lib/images/': ['dist/images/**'],
263
264           'examples/hoofbeats/lib/': [
265             'dist/cowhide-default.css',
266             'dist/cowhide.js',
267             'lib/handlebars-1.0.rc.2.js',
268             'lib/ember-1.0.0-pre.4.js'
269           ],
270           'examples/hoofbeats/lib/images/': ['dist/images/**']
271         }
272       },
273       examples_lib_dist: {
274         options: {
275           flatten: true
276         },
277         files: {
278           'dist/examples/calf/lib/': [
279             'dist/images/',
280             'dist/cowhide-default.css',
281             'dist/cowhide.js',
282           ],
283           'dist/examples/calf/lib/images/': ['dist/images/**'],
284
285           'dist/examples/hoofbeats/lib/': [
286             'dist/images/',
287             'dist/cowhide-default.css',
288             'dist/cowhide.js',
289             'lib/handlebars-1.0.rc.2.js',
290             'lib/ember-1.0.0-pre.4.js'
291           ],
292           'dist/examples/hoofbeats/lib/images/': ['dist/images/**']
293         }
294       }
295     },
296     exec: {
297       build_docs: {
298         command: 'node dist/docs/build'
299       }
300     },
301     compress: {
302       dist: {
303         files: {
304           'dist/cowhide.zip': 'dist/**'
305         }
306       }
307     },
308     growl : {
309       started : {
310         message : "Grunt compilation started.",
311         title : "Cowhide"
312       },
313       finished : {
314           message : "Grunt compilation finished.",
315           title : "Cowhide"
316       }
317     }
318   });
319
320   // Default task.
321   grunt.loadNpmTasks('grunt-contrib-less');
322   grunt.loadNpmTasks('grunt-css');
323   grunt.loadNpmTasks('grunt-growl');
324   grunt.loadNpmTasks('grunt-contrib-copy');
325   grunt.loadNpmTasks('grunt-contrib-compress');
326   grunt.loadNpmTasks('grunt-clean');
327   grunt.loadNpmTasks('grunt-exec');
328
329   grunt.registerTask('default', 'growl:started clean lint less concat min cssmin copy exec:build_docs compress growl:finished');
330 };