mirror of
https://github.com/samsonjs/csc360-a1-shell.git
synced 2026-03-25 08:45:52 +00:00
39 lines
737 B
Ruby
39 lines
737 B
Ruby
require './colours'
|
|
|
|
# Queues up messages to be printed out when readline is waiting for input, to prevent
|
|
# mixing shell output with command output.
|
|
class ShellLogger
|
|
Log = Struct.new(:level, :message)
|
|
|
|
attr_reader :logs
|
|
|
|
def self.instance
|
|
@instance ||= new
|
|
end
|
|
|
|
def initialize
|
|
clear
|
|
end
|
|
|
|
def log(message)
|
|
@logs << Log.new(:info, "#{WHITE}[INFO]#{CLEAR} #{message}")
|
|
end
|
|
alias info log
|
|
|
|
def warn(message)
|
|
@logs << Log.new(:warning, "#{YELLOW}[WARN]#{CLEAR} #{message}")
|
|
end
|
|
|
|
def error(message)
|
|
@logs << Log.new(:error, "#{RED}[ERROR]#{CLEAR} #{message}")
|
|
end
|
|
|
|
def verbose(message)
|
|
@logs << Log.new(:verbose, "[VERBOSE] #{message}")
|
|
end
|
|
|
|
def clear
|
|
@logs = []
|
|
nil
|
|
end
|
|
end
|