2 * Bootstrap Grunt task for generating raw-files.min.js for the Customizer
3 * http://getbootstrap.com
4 * Copyright 2014 Twitter, Inc.
5 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
8 /* global btoa: true */
11 var fs = require('fs');
12 var btoa = require('btoa');
13 var glob = require('glob');
15 function getFiles(type) {
17 var recursive = (type === 'less');
18 var globExpr = (recursive ? '/**/*' : '/*');
19 glob.sync(type + globExpr)
20 .filter(function (path) {
21 return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
23 .forEach(function (fullPath) {
24 var relativePath = fullPath.replace(/^[^/]+\//, '');
25 files[relativePath] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'));
27 return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
30 module.exports = function generateRawFilesJs(grunt, banner) {
34 var dirs = ['js', 'less', 'fonts'];
35 var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
36 return combined + file;
38 var rawFilesJs = 'docs/assets/js/raw-files.min.js';
40 fs.writeFileSync(rawFilesJs, files);
45 grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');