lib/foreplay/engine/step.rb in foreplay-0.9.13 vs lib/foreplay/engine/step.rb in foreplay-0.10.1

- old
+ new

@@ -1,117 +1,121 @@ -class Foreplay::Engine::Step - include Foreplay - attr_reader :host, :step, :instructions +module Foreplay + class Engine + class Step + include Foreplay + attr_reader :host, :step, :instructions - def initialize(h, s, i) - @host = h - @step = s - @instructions = i - end + def initialize(h, s, i) + @host = h + @step = s + @instructions = i + end - def commands - return @commands if @commands + def commands + return @commands if @commands - # Each step can be (1) a command or (2) a series of values to add to a file - if step.key?('key') - if instructions.key?(step['key']) - build_commands - else - @commands = [] + # Each step can be (1) a command or (2) a series of values to add to a file + if step.key?('key') + if instructions.key?(step['key']) + build_commands + else + @commands = [] + end + else + # ...or just execute the command specified + @commands = [command] + end + + @commands end - else - # ...or just execute the command specified - @commands = [command] - end - @commands - end + def build_commands + step['silent'] = true - def build_commands - step['silent'] = true + if header? + @commands = ["echo \"#{header}\" > #{filename}"] + redirect + else + @commands = [] + end - if header? - @commands = ["echo \"#{header}\" > #{filename}"] - redirect - else - @commands = [] - end + if instructions[key].is_a? Hash + build_commands_from_hash + else + build_commands_from_string + end + end - if instructions[key].is_a? Hash - build_commands_from_hash - else - build_commands_from_string - end - end + def build_commands_from_hash + instructions[key].each do |k, v| + @commands << "echo \"#{before}#{k}#{delimiter}#{v}#{after}\" #{redirect} #{filename}" + end + end - def build_commands_from_hash - instructions[key].each do |k, v| - @commands << "echo \"#{before}#{k}#{delimiter}#{v}#{after}\" #{redirect} #{filename}" - end - end + def build_commands_from_string + @commands << "echo \"#{before}#{delimiter}#{instructions[key]}#{after}\" #{redirect} #{filename}" + end - def build_commands_from_string - @commands << "echo \"#{before}#{delimiter}#{instructions[key]}#{after}\" #{redirect} #{filename}" - end + def redirect + if @redirect + '>>' + else + @redirect = true + '>' + end + end - def redirect - if @redirect - '>>' - else - @redirect = true - '>' - end - end + def command + @command ||= step['command'] + end - def command - @command ||= step['command'] - end + def filename + @filename ||= "#{path}#{prefix}#{key}#{suffix}" + end - def filename - @filename ||= "#{path}#{prefix}#{key}#{suffix}" - end + def key + @key ||= step['key'] + end - def key - @key ||= step['key'] - end + def prefix + @prefix ||= step['prefix'] || '' + end - def prefix - @prefix ||= step['prefix'] || '' - end + def suffix + @suffix ||= step['suffix'] || '' + end - def suffix - @suffix ||= step['suffix'] || '' - end + def path + @path ||= step['path'] || '' + end - def path - @path ||= step['path'] || '' - end + def before + @before ||= step['before'] || '' + end - def before - @before ||= step['before'] || '' - end + def delimiter + @delimiter ||= step['delimiter'] || '' + end - def delimiter - @delimiter ||= step['delimiter'] || '' - end + def after + @after ||= step['after'] || '' + end - def after - @after ||= step['after'] || '' - end + def header + @header ||= step['header'] + end - def header - @header ||= step['header'] - end + def header? + header.present? + end - def header? - header.present? - end + def silent + @silent ||= step['silent'] + end - def silent - @silent ||= step['silent'] - end - - def announce - log "#{(step['commentary'] || command).yellow}", host: host, silent: silent - log command.cyan, host: host, silent: silent if instructions['verbose'] && step['commentary'] && command + def announce + log "#{(step['commentary'] || command).yellow}", host: host, silent: silent + log command.cyan, host: host, silent: silent if instructions['verbose'] && step['commentary'] && command + end + end end end