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