Refactor with Forwardable module

This commit is contained in:
Thibault Jouan 2014-11-17 21:44:15 +00:00
parent af1bb97287
commit 86a84bbe12
5 changed files with 15 additions and 32 deletions

View File

@ -1,6 +1,9 @@
module Producer
module Core
class Env
extend Forwardable
def_delegators :@registry, :[]=
attr_reader :input, :output, :error_output, :registry, :logger
attr_accessor :target, :verbose, :debug, :dry_run
@ -24,10 +27,6 @@ module Producer
end
alias get []
def []=(key, value)
@registry[key] = value
end
def logger
@logger ||= begin
logger = Logger.new(output)

View File

@ -19,6 +19,9 @@ module Producer
end
end
extend Forwardable
def_delegator :@env, :[]=, :set
def_delegator :@env, :[], :get
attr_reader :env, :tasks
def initialize(env)
@ -49,14 +52,6 @@ module Producer
def test_macro(name, &block)
Condition.define_test(name, block)
end
def set(key, value)
env[key] = value
end
def get(key)
env[key]
end
end
end
end

View File

@ -14,7 +14,9 @@ module Producer
end
extend Forwardable
def_delegators :@name, :to_s
def_delegators :@env, :target
def_delegator :@env, :[], :get
define_action :echo, Actions::Echo
define_action :sh, Actions::ShellCommand
@ -34,10 +36,6 @@ module Producer
@condition = condition
end
def to_s
@name.to_s
end
def condition_met?
!!@condition
end
@ -55,10 +53,6 @@ module Producer
prompter.prompt(question, choices)
end
def get(key)
@env[key]
end
def template(path, variables = {})
Template.new(path).render variables
end

View File

@ -2,9 +2,9 @@ module Producer
module Core
module Tests
class ConditionTest < Test
def verify
condition.met?
end
extend Forwardable
def_delegator :@arguments, :first, :condition_block
def_delegator :condition, :met?, :verify
def condition
Condition.evaluate(env, *condition_args, &condition_block)
@ -13,10 +13,6 @@ module Producer
def condition_args
arguments.drop 1
end
def condition_block
arguments.first
end
end
end
end

View File

@ -2,16 +2,15 @@ module Producer
module Core
module Tests
class ShellCommandStatus < Test
extend Forwardable
def_delegator :@arguments, :first, :command
def verify
remote.execute(command)
true
rescue RemoteCommandExecutionError
false
end
def command
arguments.first
end
end
end
end