module Executable
Public Instance Methods
execute(params={}, &code)
click to toggle source
# File lib/script_executor/executable.rb, line 6 def execute(params={}, &code) params = params.clone # try not to destroy external hash if params.class != Hash simple_commands = commands_from_object(params) params = {} script = simple_commands else script = params.delete(:script) end commands = locate_commands script, &code if commands.nil? output.puts 'No command was provided!' else commands = sudo(commands) if params[:sudo] params.delete(:sudo) remote = params.delete(:remote) line_action = params.delete(:line_action) if remote command = RemoteCommand.new params else command = LocalCommand.new params end command.execute commands, line_action end end
Private Instance Methods
commands_from_block(&code)
click to toggle source
# File lib/script_executor/executable.rb, line 51 def commands_from_block(&code) s1 = code.call.split(/\n/) s2 = s1.reject {|el| el.strip.size == 0 || el.empty?} s3 = s2.collect {|el| el.strip} s3.join("\n") end
commands_from_object(object)
click to toggle source
# File lib/script_executor/executable.rb, line 59 def commands_from_object(object) if object.class == String object elsif object.class == Array object.join("\n") else object end end
locate_commands(script, &code)
click to toggle source
# File lib/script_executor/executable.rb, line 41 def locate_commands(script, &code) if block_given? commands_from_block &code elsif script commands_from_object script else nil end end
sudo(commands)
click to toggle source
# File lib/script_executor/executable.rb, line 69 def sudo(commands) "sudo -S -p 'sudo password: ' -s -- '#{commands}'" end