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