Factored out a logger for the command line to tell the user what is happening.
This commit is contained in:
parent
e8d249fa38
commit
845fa14e71
@ -25,7 +25,10 @@ module Compass
|
||||
def base_directory
|
||||
File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
||||
end
|
||||
module_function :base_directory
|
||||
def lib_directory
|
||||
File.expand_path(File.join(File.dirname(__FILE__)))
|
||||
end
|
||||
module_function :base_directory, :lib_directory
|
||||
end
|
||||
|
||||
require File.join(File.dirname(__FILE__), 'compass', 'frameworks')
|
||||
|
@ -1,6 +1,7 @@
|
||||
require 'optparse'
|
||||
require 'rubygems'
|
||||
require 'haml'
|
||||
require File.join(Compass.lib_directory, 'compass', 'logger')
|
||||
|
||||
module Compass
|
||||
module Exec
|
||||
|
34
lib/compass/logger.rb
Normal file
34
lib/compass/logger.rb
Normal file
@ -0,0 +1,34 @@
|
||||
module Compass
|
||||
class Logger
|
||||
|
||||
DEFAULT_ACTIONS = [:directory, :exists, :remove, :create, :overwrite]
|
||||
|
||||
attr_accessor :actions, :options
|
||||
|
||||
def initialize(*actions)
|
||||
self.options = actions.last.is_a?(Hash) ? actions.pop : {}
|
||||
@actions = DEFAULT_ACTIONS.dup
|
||||
@actions += actions
|
||||
end
|
||||
|
||||
# Record an action that has occurred
|
||||
def record(action, *arguments)
|
||||
log "#{action_padding(action)}#{action} #{arguments.join(' ')}"
|
||||
end
|
||||
|
||||
# Emit a log message
|
||||
def log(msg)
|
||||
puts msg
|
||||
end
|
||||
|
||||
# add padding to the left of an action that was performed.
|
||||
def action_padding(action)
|
||||
' ' * [(max_action_length - action.to_s.length), 0].max
|
||||
end
|
||||
|
||||
# the maximum length of all the actions known to the logger.
|
||||
def max_action_length
|
||||
@max_action_length ||= actions.inject(0){|memo, a| [memo, a.to_s.length].max}
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user