grunt-deadlink
Version:
check dead links in files
65 lines (54 loc) • 1.68 kB
text/coffeescript
module.exports = (grunt) ->
_ = grunt.util._
fs = require('fs')
lineSeparator = require('os').EOL
class Logger
linkCount : 0
okCount : 0
failCount : 0
passCount : 0
logFilename : "deadlink.log"
progressBar : null
constructor : ({logToFile, logAll, logFilename}) ->
@logFilename = logFilename if logFilename?
if logToFile
@passCount = @resultLogger = @errorLogger = @okLogger = (msg) -> fs.appendFile @logFilename, msg + lineSeparator, (err)->
if not logAll
@okLogger = (str)->
@passLogger = (str)->
okLogger : grunt.verbose.ok
errorLogger : grunt.verbose.error
resultLogger : grunt.log.subhead
passLogger : grunt.verbose.ok
pass : (msg)->
@passCount++
@progressBar.tick() if @progressBar?
@passLogger msg
ok : (msg)->
@okCount++
@progressBar.tick() if @progressBar?
@okLogger msg
error : (msg)->
@failCount++
@progressBar.tick() if @progressBar?
@errorLogger msg
progress : ()->
return if grunt.option('verbose')
ProgressBar = require('progress')
@progressBar = new ProgressBar '[:bar]:percent :elapsed',
total: 0
complete: '#'
incomplete: ' '
width: 40
# I don't like this method
increaseLinkCount : ()->
@linkCount++
@progressBar.total = @linkCount if @progressBar?
printResult: (after)->
st = setInterval =>
if(@linkCount == (@okCount + @failCount + @passCount))
@resultLogger "ok : #{@okCount}, error : #{@failCount}, pass : #{@passCount}"
clearInterval st
after()
, 500
Logger