/** * Task: attach_heads * Description: Set the heads for all themes declared in themes.json */ module.exports = function(grunt) { 'use strict'; var fs = require('fs'); var path = require('path'); grunt.registerTask('attach_heads', 'Set the heads recursively for all JS/CSS in themes.json', function() { var themeMetaObj = grunt.file.readJSON('themes.json'); var pkgObject = grunt.file.readJSON('package.json'); var banner = ' (v.'+pkgObject.version+')\n' + ' * by '+pkgObject.name+' \n' + ' * '+pkgObject.homepage+'\n' + ' * Copyright (c) '+grunt.template.today("yyyy")+' '+pkgObject.name+'\n' + ' * \n' + ' * ============================================= */ \n'; // iterate over the themeMetaObj for number of themes (default is declared here as well) for ( var key in themeMetaObj ) { var thisTheme = themeMetaObj[key]; var headObj = { 'devCss' : '../'+thisTheme._name+'/assets/css/main.css', 'prodCss' : '../'+thisTheme._name+'/assets/css/main.min.css', 'devJs' : '../'+thisTheme._name+'/assets/js/scripts.js', 'prodJs' : '../'+thisTheme._name+'/assets/js/scripts.min.js' }; var thisBanner = ''; thisBanner = '/*! ================================================ \n' + ' * \n' + ' * '+thisTheme._long_name+' Theme ' + banner; for ( var fileKey in headObj ) { var thisFile = headObj[fileKey]; var content = grunt.file.read( thisFile ); content = thisBanner + content; grunt.file.write( thisFile, content ); grunt.log.writeln('"' + thisFile + '" updated with latest head.'); } } }); };