UNPKG

catjs

Version:

(Mobile) Web Automation Framework

148 lines (127 loc) 4.45 kB
'use strict'; var _fs = require("fs"), _path = require("path"), _logFileName = "./../../../cat.libraries.log", _logFileStream = _fs.openSync(_logFileName, 'a'); function logStreamHook(grunt) { var hooker = require('hooker'); _fs.writeSync(_logFileStream, [" ", new Date(), ""].join("\n")); _fs.writeSync(_logFileStream, ["--------------------------------------------------------------", ""].join("\n")); // Override grunt.log.header to update a per-line prefix and prevent default logging. var prefix; hooker.hook(grunt.log, 'header', function () { prefix = '[' + grunt.task.current.nameArgs + '] '; return hooker.preempt(); }); // Override process.stdout to log the name+args of the current task before // every logged line. var newline = true; _fs.writeSync(_logFileStream, _path.resolve(".")); hooker.hook(process.stdout, 'write', function (str) { var ret; str = String(str); if (newline) { if (str === '\n') { return hooker.preempt(); } else if (prefix) { str = prefix + str.replace(/(\n)(?!$)/g, '$1' + prefix); } } newline = str.slice(-1) === '\n'; ret = hooker.filter(this, [str]); _fs.writeSync(_logFileStream, str); //console.log("[grunt process] see cat.test.log for details: ", str); return ret; }); } module.exports = function (grunt) { logStreamHook(grunt); // Project configuration. grunt.initConfig({ // Metadata. pkg: grunt.file.readJSON('package.json'), banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' + '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n', // Task configuration. concat: { options: { banner: '<%= banner %>', stripBanners: false }, dist: { src: ['Cat.js', 'core/**/*.js', 'plugins/**/*.js'], dest: 'target/cat.core.test.js' } }, uglify: { options: { banner: '<%= banner %>' }, dist: { src: 'target/cat.core.test.js', dest: 'target/cat.core.test.min.js' } }, cssmin: { dist: { options: { banner: '<%= banner %>' }, files: { 'target/cat.core.test.min.css': ['target/cat.core.test.css'] } } }, copy: { main: { files: [ { src: 'css/cat.css', dest: 'target/cat.core.test.css' }, { src: 'config/catconfig.json', dest: 'target/cat.core.test.json' } ] } }, jshint: { options: { "strict": false, "curly": true, "eqeqeq": true, "immed": false, "latedef": true, "newcap": false, "noarg": true, "sub": true, "undef": true, "boss": true, "eqnull": true, "node": true, "es5": true, globals: { XMLHttpRequest: true, document: true, _cat: true } }, all: { src: ['Cat.js', 'core/test/TestManager.js'] } }, clean: ["target"] }); // These plugins provide necessary tasks. grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-cssmin'); // Default task. grunt.registerTask('install', ['clean', 'jshint', 'concat', 'copy', 'uglify', 'cssmin']); };