class BaseProvision
Attributes
env[R]
interpolator[R]
script_list[R]
server_info[R]
Public Class Methods
new(config_file_name, scripts_file_names)
click to toggle source
# File lib/script_executor/base_provision.rb, line 13 def initialize(config_file_name, scripts_file_names) @terminal = HighLine.new @interpolator = TextInterpolator.new @env = read_config(config_file_name) @script_list = {} scripts_file_names.each do |name| @script_list.merge!(scripts(name)) end @server_info = env[:node] ? env[:node] : {} create_script_methods end
Public Instance Methods
ask_password(message)
click to toggle source
# File lib/script_executor/base_provision.rb, line 36 def ask_password(message) @terminal.ask(message) {|q| q.echo = '*'} end
create_script_methods()
click to toggle source
# File lib/script_executor/base_provision.rb, line 50 def create_script_methods script_list.keys.each do |name| singleton_class.send(:define_method, name.to_sym) do |type, params| self.run name.to_s, type, env.merge(ARGV: params.join(' ')) end end end
create_thor_methods(parent_class, type=:string)
click to toggle source
# File lib/script_executor/base_provision.rb, line 58 def create_thor_methods(parent_class, type=:string) if parent_class.ancestors.collect(&:to_s).include?('Thor') provision = self provision.script_list.each do |name, value| title = value[:comment] title = title.nil? ? name : title parent_class.send(:desc, name, title) if parent_class.respond_to?(:desc) parent_class.send(:define_method, name.to_sym) do |*params| provision.send "#{name}".to_sym, type, params end end end end
read_config(config_file_name)
click to toggle source
# File lib/script_executor/base_provision.rb, line 40 def read_config(config_file_name) hash = JSON.parse(File.read(config_file_name), :symbolize_names => true) result = interpolator.interpolate hash puts interpolator.errors if interpolator.errors.size > 0 result end
run(script_name, type=:string, env={})
click to toggle source
# File lib/script_executor/base_provision.rb, line 30 def run(script_name, type=:string, env={}) execute(server_info) do evaluate_script_body(script_list[script_name.to_sym][:code], env, type) end end