Sha256: f8f81891742be1d47a23b688c4fa085d24e71bd748a2c7b9c092c477d8fab2af

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

require 'slog'
require 'thor'


# Thor's hammer! Like Thor with better logging
class Mjolnir < Thor

  # Common options for Thor commands
  COMMON_OPTIONS = {
    log: {
      type: :string,
      aliases: %w[ -L ],
      desc: 'Log to file instead of STDOUT',
      default: ENV['BENDER_LOG'] || nil
    },
    debug: {
      type: :boolean,
      aliases: %w[ -V ],
      desc: 'Enable DEBUG-level logging',
      default: ENV['BENDER_DEBUG'] || false
    }
  }

  # Decorate Thor commands with the options above
  def self.include_common_options
    COMMON_OPTIONS.each do |name, spec|
      option name, spec
    end
  end


  no_commands do

    # Construct a Logger given the command-line options
    def log
      return @logger if defined? @logger
      level = :info
      level = :debug if options.debug?
      device = options.log || $stderr
      pretty = device.tty? rescue false
      @logger = Slog.new \
        out: device,
        level: level,
        colorize: pretty,
        prettify: pretty
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bender-bot-0.6.3 lib/bender/mjolnir.rb
bender-bot-0.6.2 lib/bender/mjolnir.rb
bender-bot-0.6.1 lib/bender/mjolnir.rb
bender-bot-0.6.0 lib/bender/mjolnir.rb