* Do not modify Env logger from CLI; * Add verbose attribute to Env; * Implement Env#verbose?; * Remove Env#log_level and Env#log_level=; * Refactor related specs, improve some wording.
50 lines
981 B
Ruby
50 lines
981 B
Ruby
module Producer
|
|
module Core
|
|
class Env
|
|
attr_reader :input, :output, :registry, :logger
|
|
attr_accessor :target, :verbose, :dry_run
|
|
|
|
def initialize(input: $stdin, output: $stdout, remote: nil, registry: {})
|
|
@verbose = @dry_run = false
|
|
@input = input
|
|
@output = output
|
|
@remote = remote
|
|
@registry = registry
|
|
end
|
|
|
|
def remote
|
|
@remote ||= Remote.new(target)
|
|
end
|
|
|
|
def [](key)
|
|
@registry[key]
|
|
end
|
|
|
|
def []=(key, value)
|
|
@registry[key] = value
|
|
end
|
|
|
|
def logger
|
|
@logger ||= begin
|
|
logger = Logger.new(output)
|
|
logger.level = verbose? ? Logger::INFO : Logger::ERROR
|
|
logger.formatter = LoggerFormatter.new
|
|
logger
|
|
end
|
|
end
|
|
|
|
def log(message)
|
|
logger.info message
|
|
end
|
|
|
|
def verbose?
|
|
@verbose
|
|
end
|
|
|
|
def dry_run?
|
|
@dry_run
|
|
end
|
|
end
|
|
end
|
|
end
|