Sha256: d2fc296de02a99bdb18cf8a4c1a4e1c822d7a1b65af151c05f34b3b1fa42cb8a

Contents?: true

Size: 1.85 KB

Versions: 8

Compression:

Stored size: 1.85 KB

Contents

module Wordmove
  class Logger < ::Logger
    MAX_LINE = 70

    def initialize(device, strings_to_hide = [])
      super(device, formatter: proc { |_severity, _datetime, _progname, message|
        formatted_message = if strings_to_hide.empty? ||
                               ENV.fetch('WORDMOVE_REVEAL_SECRETS', nil).present?
                              message
                            else
                              message.gsub(
                                Regexp.new(
                                  strings_to_hide.map { |string| Regexp.escape(string) }.join('|')
                                ),
                                '[secret]'
                              )
                            end

        "\n#{formatted_message}\n"
      })
    end

    def task(title)
      prefix = '▬' * 2
      title = " #{title} "
      padding = '▬' * padding_length(title)
      add(INFO, prefix + title.light_white + padding)
    end

    def task_step(local_step, title)
      if local_step
        add(INFO, '    local'.cyan + ' | '.black + title.to_s)
      else
        add(INFO, '   remote'.yellow + ' | '.black + title.to_s)
      end
    end

    def error(message)
      add(ERROR, '    ❌  error'.red + ' | '.black + message.to_s)
    end

    def success(message)
      add(INFO, '    ✅  success'.green + ' | '.black + message.to_s)
    end

    def debug(message)
      add(DEBUG, '    🛠  debug'.magenta + ' | '.black + message.to_s)
    end

    def warn(message)
      add(WARN, '    ⚠️  warning'.yellow + ' | '.black + message.to_s)
    end

    def info(message)
      add(INFO, '    ℹ️  info'.yellow + ' | '.black + message.to_s)
    end

    def plain(message)
      add(INFO, message.to_s)
    end

    private

    def padding_length(line)
      result = MAX_LINE - line.length
      result.positive? ? result : 0
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
wordmove-6.0.0.alpha.8 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.7 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.6 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.5 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.4 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.3 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.2 lib/wordmove/logger.rb
wordmove-6.0.0.alpha.1 lib/wordmove/logger.rb