 Generator::delete = ->
 	grunt.file.delete arguments...
 
-Generator::_log_update = ->
+Generator::_logUpdate = ->
 	@write (chalk.yellow '   update ')
 	@write (util.format.apply util, arguments) + '\n'
 	this
+
+Generator::_printLog = (func, messages...) ->
+	colorize = (msg) ->
+		msg.replace(/`(.*?)`/g, (m, str) -> chalk.cyan(str))
+
+	messages = @_.map messages, colorize
+	@log[func] messages...

	@_.each list, (row) =>
		@echo (@chalk.white(@_.pad row[0], width)), row[1]

Generator::readJsonFile = (filepath) ->
	JSON.parse(@readFileAsString(filepath))

Generator::readTemplate = (filepath) ->
	fs.readFileSync (path.join @sourceRoot(), filepath), encoding: 'utf-8'

Generator::process = (filepath) ->
	@engine (@readTemplate filepath), this

Generator::gitIgnore = (pattern) ->
	filepath = '.gitignore'
	if fs.existsSync filepath

	@templateIfNot filepath
	@bowerInstall packages, {save: true}, ->

###
Installs npm packages.

@param {Array} packages Packages.
###
Generator::installFromNpm = (packages) ->
	return  if @options['skip-npm']
	return  if @options['skip-install']
