Policy 1707 commit to LF
[policy/engine.git] / POLICY-SDK-APP / src / main / webapp / app / policyApp / CSS / bootstrap / grunt / bs-raw-files-generator.js
1 /*!
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)
6  */
7
8 /* global btoa: true */
9
10 'use strict';
11 var fs = require('fs');
12 var btoa = require('btoa');
13 var glob = require('glob');
14
15 function getFiles(type) {
16   var files = {};
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);
22     })
23     .forEach(function (fullPath) {
24       var relativePath = fullPath.replace(/^[^/]+\//, '');
25       files[relativePath] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'));
26     });
27   return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
28 }
29
30 module.exports = function generateRawFilesJs(grunt, banner) {
31   if (!banner) {
32     banner = '';
33   }
34   var dirs = ['js', 'less', 'fonts'];
35   var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
36     return combined + file;
37   }, '');
38   var rawFilesJs = 'docs/assets/js/raw-files.min.js';
39   try {
40     fs.writeFileSync(rawFilesJs, files);
41   }
42   catch (err) {
43     grunt.fail.warn(err);
44   }
45   grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
46 };