Module: SecureKeys::Core::Console::Logger

Defined in:
lib/core/console/logger.rb

Class Method Summary collapse

Class Method Details

.command(command:) ⇒ Object

Log a command message

Parameters:

  • command (String)

    the command to log



50
51
52
# File 'lib/core/console/logger.rb', line 50

def command(command:)
  logger.info("$ #{command}".cyan)
end

.command_output(command:) ⇒ Object

Log a command output

Parameters:

  • command (String)

    the command to log



75
76
77
78
79
80
81
82
# File 'lib/core/console/logger.rb', line 75

def command_output(command:)
  actual = encode_as_utf_8_if_possible(message: command).split("\r")
                                                        .last || ''
  actual.split("\n").each do |cmd|
    prefix = cmd.include?('') ? '' : ''
    logger.info("#{prefix} #{cmd.magenta}")
  end
end

.crash!(message:) ⇒ Object

Crash the terminal with a message

Parameters:

  • message (String)

    the message to log

Raises:

  • (StandardError.new)


62
63
64
# File 'lib/core/console/logger.rb', line 62

def crash!(message:)
  raise(StandardError.new, message)
end

.deprecated(message:) ⇒ Object

Log a deprecated message

Parameters:

  • message (String)

    the message to log



44
45
46
# File 'lib/core/console/logger.rb', line 44

def deprecated(message:)
  logger.error(message.to_s.deprecated)
end

.encode_as_utf_8_if_possible(message:) ⇒ String

Encode a message as UTF-8 if possible

Parameters:

  • message (String)

    the message to encode

Returns:

  • (String)

    the encoded message



111
112
113
114
115
116
117
118
119
# File 'lib/core/console/logger.rb', line 111

def encode_as_utf_8_if_possible(message:)
  return message if message.valid_encoding?

  return message.encode(Encoding::UTF_8, Encoding::UTF_16) if message.dup
                                                                     .force_encoding(Encoding::UTF_16)
                                                                     .valid_encoding?

  message.encode(Encoding::UTF_8, invalid: :replace)
end

.error(message:) ⇒ Object

Log an error message

Parameters:

  • message (String)

    the message to log



20
21
22
# File 'lib/core/console/logger.rb', line 20

def error(message:)
  logger.warn(message.to_s.red)
end

.format_string(datetime: Time.now, severity: '') ⇒ String

Format the log string

Parameters:

  • datetime (Time) (defaults to: Time.now)

    the datetime to format

  • severity (String) (defaults to: '')

    the severity of the log

Returns:

  • (String)

    the formatted string



102
103
104
105
106
# File 'lib/core/console/logger.rb', line 102

def format_string(datetime: Time.now, severity: '')
  return "#{severity} [#{datetime.strftime('%Y-%m-%d %H:%M:%S.%2N')}]: " if Globals.verbose?

  "[#{datetime.strftime('%H:%M:%S')}]: "
end

.important(message:) ⇒ Object

Log an important message

Parameters:

  • message (String)

    the message to log



26
27
28
# File 'lib/core/console/logger.rb', line 26

def important(message:)
  logger.info(message.to_s.blue)
end

.kill!(message:) ⇒ Object

Kill the terminal with a message

Parameters:

  • message (String)

    the message to log



68
69
70
71
# File 'lib/core/console/logger.rb', line 68

def kill!(message:)
  error(message:)
  exit(1)
end

.loggerLogger

Create a logger instance if needed

Returns:

  • (Logger)

    the logger instance



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/core/console/logger.rb', line 86

def logger
  return @log unless @log.nil?

  $stdout.sync = true
  @log ||= ::Logger.new($stdout)
  @log.formatter = proc do |severity, datetime, _, message|
    "#{format_string(datetime:, severity:)} #{message}\n"
  end

  @log
end

.message(message:) ⇒ Object

Log a message without any formatting

Parameters:

  • message (String)

    the message to log



38
39
40
# File 'lib/core/console/logger.rb', line 38

def message(message:)
  logger.info(message.to_s)
end

.success(message:) ⇒ Object

Log a success message

Parameters:

  • message (String)

    the message to log



14
15
16
# File 'lib/core/console/logger.rb', line 14

def success(message:)
  logger.info(message.to_s.green)
end

.verbose(message:) ⇒ Object

Log a verbose message

Parameters:

  • message (String)

    the message to log



56
57
58
# File 'lib/core/console/logger.rb', line 56

def verbose(message:)
  logger.debug(message.to_s) if Globals.verbose?
end

.warning(message:) ⇒ Object

Log a warning message

Parameters:

  • message (String)

    the message to log



32
33
34
# File 'lib/core/console/logger.rb', line 32

def warning(message:)
  logger.info(message.to_s.yellow)
end