Update changelogs.
[profile/ivi/cowhide.git] / Gruntfile.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         'Gruntfile.js',
17
18         'src/javascripts/*.js',
19         'src/less/**/*.less',
20         'src/themes/**/*.less',
21
22         'tests/**/*.js'
23       ],
24       tasks: 'default'
25     },
26     clean: {
27       folder: 'dist'
28     },
29     jshint: {
30       all: [
31         'GruntFile.js',
32         'src/javascripts/*.js',
33         'test/**/*.js'
34       ],
35       options: {
36         "validthis": true,
37         "laxcomma" : true,
38         "laxbreak" : true,
39         "browser"  : true,
40         "eqnull"   : true,
41         "debug"    : true,
42         "devel"    : true,
43         "boss"     : true,
44         "expr"     : true,
45         "asi"      : true
46       }
47     },
48     less: {
49       default_: {
50         files: {
51           'dist/cowhide-default.css': 'src/themes/default/default.less',
52           'dist/cowhide-responsive.css': 'lib/bootstrap/less/responsive.less'
53         }
54       },
55       default_night: {
56         files: {
57           'dist/cowhide-default-night.css': 'src/themes/default/default-night.less'
58         }
59       },
60       amelia: {
61         files: {
62           'dist/cowhide-amelia.css': 'src/themes/amelia/amelia.less'
63         }
64       },
65       amelia_night: {
66         files: {
67           // TODO: add theme implementation for amelia-night.
68           'dist/cowhide-amelia-night.css': 'src/themes/amelia/amelia.less'
69         }
70       },
71       spruce: {
72         files: {
73           'dist/cowhide-spruce.css': 'src/themes/spruce/spruce.less'
74         }
75       },
76       spruce_night: {
77         files: {
78           // TODO: add theme implementation for spruce-night.
79           'dist/cowhide-spruce-night.css': 'src/themes/spruce/spruce.less'
80         }
81       }
82     },
83     concat: {
84       cowhide_js: {
85         src: [
86           'lib/jquery/dist/jquery.js',
87           'lib/jquery-ui/dist/jquery-ui.js',
88           'lib/lodash/lodash.js',
89
90           // Bootstrap files must preserve order.
91           'lib/bootstrap/js/bootstrap-transition.js',
92           'lib/bootstrap/js/bootstrap-alert.js',
93           'lib/bootstrap/js/bootstrap-button.js',
94           'lib/bootstrap/js/bootstrap-carousel.js',
95           'lib/bootstrap/js/bootstrap-collapse.js',
96           'lib/bootstrap/js/bootstrap-dropdown.js',
97           'lib/bootstrap/js/bootstrap-modal.js',
98           'lib/bootstrap/js/bootstrap-tooltip.js',
99           'lib/bootstrap/js/bootstrap-popover.js',
100           'lib/bootstrap/js/bootstrap-scrollspy.js',
101           'lib/bootstrap/js/bootstrap-tab.js',
102           'lib/bootstrap/js/bootstrap-typeahead.js',
103           'lib/bootstrap/js/bootstrap-affix.js',
104
105           'src/javascripts/api.js',
106
107           'src/javascripts/cowhide-core.js',
108           'src/javascripts/cowhide-widget.js',
109           'src/javascripts/cowhide-button.js',
110           'src/javascripts/cowhide-seat-selector.js',
111           'src/javascripts/cowhide-slider.js',
112           'src/javascripts/cowhide-text-input.js',
113           'src/javascripts/cowhide-radio-input.js',
114           'src/javascripts/cowhide-checkbox-input.js',
115           'src/javascripts/cowhide-select.js',
116           'src/javascripts/cowhide-page.js',
117           'src/javascripts/cowhide-header.js',
118           'src/javascripts/cowhide-simple-scrollable.js'
119         ], dest: 'dist/cowhide.js'
120       },
121       css_default: {
122         src: [
123           'lib/jquery-ui/dist/jquery-ui.css',
124           'dist/cowhide-default.css',
125         ], dest: 'dist/cowhide-default.css'
126       },
127       css_default_night: {
128         src: [
129           'lib/jquery-ui/dist/jquery-ui.css',
130           'dist/cowhide-default-night.css',
131         ], dest: 'dist/cowhide-default-night.css'
132       },
133       css_amelia: {
134         src: [
135           'lib/jquery-ui/dist/jquery-ui.css',
136           'dist/cowhide-amelia.css',
137         ], dest: 'dist/cowhide-amelia.css'
138       },
139       css_amelia_night: {
140         src: [
141           'lib/jquery-ui/dist/jquery-ui.css',
142           'dist/cowhide-amelia-night.css',
143         ], dest: 'dist/cowhide-amelia-night.css'
144       },
145       css_spruce: {
146         src: [
147           'lib/jquery-ui/dist/jquery-ui.css',
148           'dist/cowhide-spruce.css',
149         ], dest: 'dist/cowhide-spruce.css'
150       },
151       css_spruce_night: {
152         src: [
153           'lib/jquery-ui/dist/jquery-ui.css',
154           'dist/cowhide-spruce-night.css',
155         ], dest: 'dist/cowhide-spruce-night.css'
156       }
157     },
158     qunit: {
159         files: [
160             'tests/index.html'
161         ]
162     },
163     uglify: {
164       cowhide: {
165         src: ['dist/cowhide.js'],
166         dest: 'dist/cowhide.min.js'
167       }
168     },
169     cssmin: {
170       default_: {
171         src: ['dist/cowhide-default.css'],
172         dest: 'dist/cowhide-default.min.css'
173       },
174       responsive: {
175         src: ['dist/cowhide-responsive.css'],
176         dest: 'dist/cowhide-responsive.min.css'
177       },
178       default_night: {
179         src: ['dist/cowhide-default-night.css'],
180         dest: 'dist/cowhide-default-night.min.css'
181       },
182       amelia: {
183         src: ['dist/cowhide-amelia.css'],
184         dest: 'dist/cowhide-amelia.min.css'
185       },
186       amelia_night: {
187         src: ['dist/cowhide-amelia-night.css'],
188         dest: 'dist/cowhide-amelia-night.min.css'
189       },
190       spruce: {
191         src: ['dist/cowhide-spruce.css'],
192         dest: 'dist/cowhide-spruce.min.css'
193       },
194       spruce_night: {
195         src: ['dist/cowhide-spruce-night.css'],
196         dest: 'dist/cowhide-spruce-night.min.css'
197       }
198     },
199     copy: {
200       dist: {
201         files: [
202           {dest: 'dist/', src: ['images/**'], cwd: 'lib/jquery-ui/dist/', expand: true},
203           {dest: 'dist/', src: ['images/**']},
204           {dest: 'dist/', src: ['README.md']},
205           {dest: 'dist/', src: ['docs/**']}
206         ]
207       },
208     },
209     sed: {
210         images: {
211             path: ['dist/cowhide-default.css', 'dist/cowhide-default.min.css'],
212             pattern: 'img\/glyphicons',
213             replacement: 'images/glyphicons'
214         }
215     },
216     exec: {
217       build_docs: {
218         command: 'node dist/docs/build'
219       }
220     },
221     compress: {
222       dist: {
223         options: {
224           archive: 'dist/cowhide.zip'
225         },
226         files: [
227           {dest: 'cowhide', src: ['**'], cwd: 'dist', expand: true}
228         ]
229       }
230     }
231   });
232
233   // Default task.
234   grunt.loadNpmTasks('grunt-update-submodules');
235   grunt.loadNpmTasks('grunt-contrib-clean');
236   grunt.loadNpmTasks('grunt-contrib-jshint');
237   grunt.loadNpmTasks('grunt-contrib-qunit');
238   grunt.loadNpmTasks('grunt-contrib-less');
239   grunt.loadNpmTasks('grunt-contrib-concat');
240   grunt.loadNpmTasks('grunt-contrib-uglify');
241   grunt.loadNpmTasks('grunt-contrib-cssmin');
242   grunt.loadNpmTasks('grunt-contrib-copy');
243   grunt.loadNpmTasks('grunt-sed');
244   grunt.loadNpmTasks('grunt-exec');
245   grunt.loadNpmTasks('grunt-contrib-compress');
246
247   grunt.registerTask('submodules', ['update_submodules'])
248   grunt.registerTask('test', ['qunit']);
249   grunt.registerTask('default', [
250     'update_submodules',
251     'clean',
252     'jshint',
253     'less',
254     'concat',
255     'qunit',
256     'uglify',
257     'cssmin',
258     'copy',
259     'sed',
260     'exec:build_docs',
261     'compress']);
262 };