mirror of
https://github.com/JuanCanham/HackMyResume.git
synced 2024-11-22 08:20:11 +00:00
...
This commit is contained in:
parent
80c36b96bc
commit
f098ed507f
154
src/cli/out.coffee
Normal file
154
src/cli/out.coffee
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
###*
|
||||||
|
Output routines for HackMyResume.
|
||||||
|
@license MIT. See LICENSE.md for details.
|
||||||
|
@module cli/out
|
||||||
|
###
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
chalk = require('chalk')
|
||||||
|
HME = require('hackmycore/dist/core/event-codes')
|
||||||
|
_ = require('underscore')
|
||||||
|
Class = require('hackmycore/dist/utils/class.js')
|
||||||
|
M2C = require('hackmycore/dist/utils/md2chalk.js')
|
||||||
|
PATH = require('path')
|
||||||
|
LO = require('lodash')
|
||||||
|
FS = require('fs')
|
||||||
|
EXTEND = require('extend')
|
||||||
|
HANDLEBARS = require('handlebars')
|
||||||
|
YAML = require('yamljs')
|
||||||
|
printf = require('printf')
|
||||||
|
pad = require('string-padding')
|
||||||
|
dbgStyle = 'cyan';
|
||||||
|
|
||||||
|
|
||||||
|
###* A stateful output module. All HMR console output handled here. ###
|
||||||
|
OutputHandler = module.exports = Class.extend
|
||||||
|
|
||||||
|
init: ( opts ) ->
|
||||||
|
@opts = EXTEND( true, this.opts || { }, opts )
|
||||||
|
@msgs = YAML.load(PATH.join( __dirname, 'msg.yml' )).events
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
log: ( msg ) ->
|
||||||
|
msg = msg || ''
|
||||||
|
printf = require('printf')
|
||||||
|
finished = printf.apply( printf, arguments )
|
||||||
|
@opts.silent || console.log( finished )
|
||||||
|
|
||||||
|
|
||||||
|
do: ( evt ) ->
|
||||||
|
|
||||||
|
that = @
|
||||||
|
L = () -> that.log.apply( that, arguments )
|
||||||
|
|
||||||
|
switch evt.sub
|
||||||
|
|
||||||
|
when HME.begin
|
||||||
|
this.opts.debug &&
|
||||||
|
L( M2C( this.msgs.begin.msg, dbgStyle), evt.cmd.toUpperCase() );
|
||||||
|
|
||||||
|
when HME.beforeCreate
|
||||||
|
L( M2C( this.msgs.beforeCreate.msg, 'green' ), evt.fmt, evt.file );
|
||||||
|
break;
|
||||||
|
|
||||||
|
when HME.beforeTheme
|
||||||
|
this.opts.debug &&
|
||||||
|
L( M2C( this.msgs.beforeTheme.msg, dbgStyle), evt.theme.toUpperCase() );
|
||||||
|
|
||||||
|
when HME.afterParse
|
||||||
|
L( M2C( this.msgs.afterRead.msg, 'gray', 'white.dim'), evt.fmt.toUpperCase(), evt.file );
|
||||||
|
|
||||||
|
when HME.beforeMerge
|
||||||
|
msg = ''
|
||||||
|
evt.f.reverse().forEach( ( a, idx ) ->
|
||||||
|
msg += printf( (if idx == 0 then @msgs.beforeMerge.msg[0] else @msgs.beforeMerge.msg[1]), a.file )
|
||||||
|
, @);
|
||||||
|
L( M2C(msg, evt.mixed ? 'yellow' : 'gray', 'white.dim') )
|
||||||
|
|
||||||
|
when HME.applyTheme
|
||||||
|
@theme = evt.theme;
|
||||||
|
numFormats = Object.keys( evt.theme.formats ).length;
|
||||||
|
L( M2C(this.msgs.applyTheme.msg,
|
||||||
|
if evt.status == 'error' then 'red' else 'gray',
|
||||||
|
if evt.status == 'error' then 'bold' else 'white.dim'),
|
||||||
|
evt.theme.name.toUpperCase(),
|
||||||
|
numFormats, ( numFormats == 1 ? '' : 's') )
|
||||||
|
|
||||||
|
when HME.end
|
||||||
|
if evt.cmd == 'build'
|
||||||
|
themeName = this.theme.name.toUpperCase()
|
||||||
|
if this.opts.tips && (this.theme.message || this.theme.render)
|
||||||
|
WRAP = require('word-wrap')
|
||||||
|
if this.theme.message
|
||||||
|
L( M2C( this.msgs.afterBuild.msg[0], 'cyan' ), themeName )
|
||||||
|
L( M2C( this.theme.message, 'white' ))
|
||||||
|
else if this.theme.render
|
||||||
|
L( M2C( this.msgs.afterBuild.msg[0], 'cyan'), themeName)
|
||||||
|
L( M2C( this.msgs.afterBuild.msg[1], 'white'))
|
||||||
|
|
||||||
|
when HME.afterGenerate
|
||||||
|
suffix = ''
|
||||||
|
if evt.fmt == 'pdf'
|
||||||
|
if this.opts.pdf
|
||||||
|
if this.opts.pdf != 'none'
|
||||||
|
suffix = printf( M2C( this.msgs.afterGenerate.msg[0], evt.error ? 'red' : 'green' ), this.opts.pdf )
|
||||||
|
else
|
||||||
|
L( M2C( this.msgs.afterGenerate.msg[1], 'gray' ), evt.fmt.toUpperCase(), evt.file );
|
||||||
|
return
|
||||||
|
|
||||||
|
L( M2C( this.msgs.afterGenerate.msg[2] + suffix, evt.error ? 'red' : 'green' ),
|
||||||
|
pad(evt.fmt.toUpperCase(),4,null,pad.RIGHT),
|
||||||
|
PATH.relative(process.cwd(), evt.file ));
|
||||||
|
|
||||||
|
when HME.beforeAnalyze
|
||||||
|
L( M2C( this.msgs.beforeAnalyze.msg, 'green' ), evt.fmt, evt.file)
|
||||||
|
|
||||||
|
when HME.afterAnalyze
|
||||||
|
info = evt.info
|
||||||
|
rawTpl = FS.readFileSync( PATH.join( __dirname, 'analyze.hbs' ), 'utf8')
|
||||||
|
HANDLEBARS.registerHelper( require('hackmycore/dist/helpers/console-helpers') )
|
||||||
|
template = HANDLEBARS.compile(rawTpl, { strict: false, assumeObjects: false })
|
||||||
|
tot = 0
|
||||||
|
info.keywords.forEach (g) -> tot += g.count
|
||||||
|
info.keywords.totalKeywords = tot
|
||||||
|
output = template( info )
|
||||||
|
@log( chalk.cyan(output) )
|
||||||
|
|
||||||
|
when HME.beforeConvert
|
||||||
|
L( M2C( this.msgs.beforeConvert.msg, 'green' ),
|
||||||
|
evt.srcFile, evt.srcFmt, evt.dstFile, evt.dstFmt
|
||||||
|
);
|
||||||
|
|
||||||
|
when HME.afterInlineConvert
|
||||||
|
L( M2C( this.msgs.afterInlineConvert.msg, 'gray', 'white.dim' ),
|
||||||
|
evt.file, evt.fmt );
|
||||||
|
|
||||||
|
when HME.afterValidate
|
||||||
|
style = evt.isValid ? 'green' : 'yellow'
|
||||||
|
L(
|
||||||
|
M2C( this.msgs.afterValidate.msg[0], 'white' ) +
|
||||||
|
chalk[style].bold(
|
||||||
|
if evt.isValid
|
||||||
|
then this.msgs.afterValidate.msg[1]
|
||||||
|
else this.msgs.afterValidate.msg[2] ),
|
||||||
|
evt.file, evt.fmt
|
||||||
|
);
|
||||||
|
|
||||||
|
if evt.errors
|
||||||
|
_.each( evt.errors, (err,idx) ->
|
||||||
|
L( chalk.yellow.bold('--> ') + chalk.yellow(err.field.replace('data.','resume.').toUpperCase() + ' ' + err.message))
|
||||||
|
, @)
|
||||||
|
|
||||||
|
when HME.afterPeek
|
||||||
|
sty = if evt.error then 'red' else ( if evt.target != undefined then 'green' else 'yellow' )
|
||||||
|
if evt.requested
|
||||||
|
L(M2C(this.msgs.beforePeek.msg[0], sty), evt.requested, evt.file)
|
||||||
|
else
|
||||||
|
L(M2C(this.msgs.beforePeek.msg[1], sty), evt.file)
|
||||||
|
|
||||||
|
if evt.target != undefined
|
||||||
|
console.dir( evt.target, { depth: null, colors: true } )
|
||||||
|
else if !evt.error
|
||||||
|
L(M2C( this.msgs.afterPeek.msg, 'yellow'), evt.requested, evt.file);
|
230
src/cli/out.js
230
src/cli/out.js
@ -1,230 +0,0 @@
|
|||||||
/**
|
|
||||||
Output routines for HackMyResume.
|
|
||||||
@license MIT. See LICENSE.md for details.
|
|
||||||
@module out.js
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var chalk = require('chalk')
|
|
||||||
, HME = require('hackmycore/dist/core/event-codes')
|
|
||||||
, _ = require('underscore')
|
|
||||||
, Class = require('hackmycore/dist/utils/class.js')
|
|
||||||
, M2C = require('hackmycore/dist/utils/md2chalk.js')
|
|
||||||
, PATH = require('path')
|
|
||||||
, LO = require('lodash')
|
|
||||||
, FS = require('fs')
|
|
||||||
, EXTEND = require('extend')
|
|
||||||
, HANDLEBARS = require('handlebars')
|
|
||||||
, YAML = require('yamljs')
|
|
||||||
, printf = require('printf')
|
|
||||||
, pad = require('string-padding')
|
|
||||||
, dbgStyle = 'cyan';
|
|
||||||
|
|
||||||
chalk.enabled = false;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
A stateful output module. All HMR console output handled here.
|
|
||||||
*/
|
|
||||||
var OutputHandler = module.exports = Class.extend({
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
init: function( opts ) {
|
|
||||||
this.opts = EXTEND( true, this.opts || { }, opts );
|
|
||||||
this.msgs = YAML.load(PATH.join( __dirname, 'msg.yml' )).events;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
log: function( msg ) {
|
|
||||||
msg = msg || '';
|
|
||||||
var printf = require('printf');
|
|
||||||
var finished = printf.apply( printf, arguments );
|
|
||||||
this.opts.silent || console.log( finished );
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
do: function( evt ) {
|
|
||||||
|
|
||||||
var that = this;
|
|
||||||
function L() {
|
|
||||||
that.log.apply( that, arguments );
|
|
||||||
}
|
|
||||||
|
|
||||||
switch( evt.sub ) {
|
|
||||||
|
|
||||||
case HME.begin:
|
|
||||||
this.opts.debug &&
|
|
||||||
L( M2C( this.msgs.begin.msg, dbgStyle), evt.cmd.toUpperCase() );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.error:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeCreate:
|
|
||||||
L( M2C( this.msgs.beforeCreate.msg, 'green' ), evt.fmt, evt.file );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeRead:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterRead:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeTheme:
|
|
||||||
this.opts.debug &&
|
|
||||||
L( M2C( this.msgs.beforeTheme.msg, dbgStyle), evt.theme.toUpperCase() );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterParse:
|
|
||||||
L(
|
|
||||||
M2C( this.msgs.afterRead.msg, 'gray', 'white.dim'), evt.fmt.toUpperCase(), evt.file
|
|
||||||
);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterTheme:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeMerge:
|
|
||||||
var msg = '';
|
|
||||||
evt.f.reverse().forEach( function( a, idx ) {
|
|
||||||
msg += printf(
|
|
||||||
((idx === 0) ?
|
|
||||||
this.msgs.beforeMerge.msg[0] :
|
|
||||||
this.msgs.beforeMerge.msg[1] ), a.file
|
|
||||||
);
|
|
||||||
}, this);
|
|
||||||
L( M2C(msg, evt.mixed ? 'yellow' : 'gray', 'white.dim') );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterMerge:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.applyTheme:
|
|
||||||
this.theme = evt.theme;
|
|
||||||
var numFormats = Object.keys( evt.theme.formats ).length;
|
|
||||||
L( M2C(this.msgs.applyTheme.msg, evt.status === 'error' ? 'red' : 'gray', evt.status === 'error' ? 'bold' : 'white.dim'),
|
|
||||||
evt.theme.name.toUpperCase(),
|
|
||||||
numFormats, ( numFormats === 1 ? '' : 's') );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.end:
|
|
||||||
if( evt.cmd === 'build' ) {
|
|
||||||
var themeName = this.theme.name.toUpperCase();
|
|
||||||
if( this.opts.tips && (this.theme.message || this.theme.render) ) {
|
|
||||||
var WRAP = require('word-wrap');
|
|
||||||
if( this.theme.message ) {
|
|
||||||
L( M2C( this.msgs.afterBuild.msg[0], 'cyan' ), themeName );
|
|
||||||
L( M2C( this.theme.message, 'white' ));
|
|
||||||
}
|
|
||||||
else if ( this.theme.render ) {
|
|
||||||
L( M2C( this.msgs.afterBuild.msg[0], 'cyan'), themeName);
|
|
||||||
L( M2C( this.msgs.afterBuild.msg[1], 'white'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterGenerate:
|
|
||||||
var suffix = '';
|
|
||||||
if( evt.fmt === 'pdf' ) {
|
|
||||||
if( this.opts.pdf ) {
|
|
||||||
if( this.opts.pdf !== 'none' ) {
|
|
||||||
suffix = printf( M2C( this.msgs.afterGenerate.msg[0], evt.error ? 'red' : 'green' ), this.opts.pdf );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
L( M2C( this.msgs.afterGenerate.msg[1], 'gray' ),
|
|
||||||
evt.fmt.toUpperCase(), evt.file );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
L( M2C( this.msgs.afterGenerate.msg[2] + suffix, evt.error ? 'red' : 'green' ),
|
|
||||||
pad(evt.fmt.toUpperCase(),4,null,pad.RIGHT),
|
|
||||||
PATH.relative(process.cwd(), evt.file ));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeAnalyze:
|
|
||||||
L( M2C( this.msgs.beforeAnalyze.msg, 'green' ), evt.fmt, evt.file);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterAnalyze:
|
|
||||||
var info = evt.info;
|
|
||||||
var rawTpl = FS.readFileSync( PATH.join( __dirname, 'analyze.hbs' ), 'utf8');
|
|
||||||
HANDLEBARS.registerHelper( require('hackmycore/dist/helpers/console-helpers') );
|
|
||||||
var template = HANDLEBARS.compile(rawTpl, { strict: false, assumeObjects: false });
|
|
||||||
var tot = 0;
|
|
||||||
info.keywords.forEach(function(g) { tot += g.count; });
|
|
||||||
info.keywords.totalKeywords = tot;
|
|
||||||
var output = template( info );
|
|
||||||
this.log( chalk.cyan(output) );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforeConvert:
|
|
||||||
L( M2C( this.msgs.beforeConvert.msg, 'green' ),
|
|
||||||
evt.srcFile, evt.srcFmt, evt.dstFile, evt.dstFmt
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterInlineConvert:
|
|
||||||
L( M2C( this.msgs.afterInlineConvert.msg, 'gray', 'white.dim' ),
|
|
||||||
evt.file, evt.fmt );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterValidate:
|
|
||||||
var style = evt.isValid ? 'green' : 'yellow';
|
|
||||||
L(
|
|
||||||
M2C( this.msgs.afterValidate.msg[0], 'white' ) +
|
|
||||||
chalk[style].bold( evt.isValid ?
|
|
||||||
this.msgs.afterValidate.msg[1] :
|
|
||||||
this.msgs.afterValidate.msg[2] ),
|
|
||||||
evt.file, evt.fmt
|
|
||||||
);
|
|
||||||
|
|
||||||
if( evt.errors ) {
|
|
||||||
_.each(evt.errors, function(err,idx) {
|
|
||||||
L( chalk.yellow.bold('--> ') +
|
|
||||||
chalk.yellow(err.field.replace('data.','resume.').toUpperCase() + ' ' +
|
|
||||||
err.message) );
|
|
||||||
}, this);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.beforePeek:
|
|
||||||
// if( evt.target )
|
|
||||||
// L(M2C(this.msgs.beforePeek.msg[0], evt.isError ? 'red' : 'green'), evt.target, evt.file);
|
|
||||||
// else
|
|
||||||
// L(M2C(this.msgs.beforePeek.msg[1], evt.isError ? 'red' : 'green'), evt.file);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HME.afterPeek:
|
|
||||||
var sty = evt.error ? 'red' : ( evt.target !== undefined ? 'green' : 'yellow' );
|
|
||||||
if( evt.requested )
|
|
||||||
L(M2C(this.msgs.beforePeek.msg[0], sty), evt.requested, evt.file);
|
|
||||||
else
|
|
||||||
L(M2C(this.msgs.beforePeek.msg[1], sty), evt.file);
|
|
||||||
|
|
||||||
if( evt.target !== undefined )
|
|
||||||
console.dir( evt.target, { depth: null, colors: true } );
|
|
||||||
else if( !evt.error )
|
|
||||||
L(M2C( this.msgs.afterPeek.msg, 'yellow'), evt.requested, evt.file);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}());
|
|
Loading…
Reference in New Issue
Block a user