class Jisota::FileScript::Executor
Attributes
context[R]
script[R]
Public Class Methods
new(script: , context: )
click to toggle source
# File lib/jisota/file_script.rb, line 57 def initialize(script: , context: ) @script = script @context = context end
Public Instance Methods
handle_file_move()
click to toggle source
# File lib/jisota/file_script.rb, line 87 def handle_file_move result = ssh_session.command("cmp -s #{tmp_file} #{to}") case result when 0 then same_file when 1 then move_with_callback(update, "File exists and update is not allowed. Skipping.") when 2 then move_with_callback(create, "File does not exist and create is not allowed. Skipping.") end end
make_temp_dir()
click to toggle source
# File lib/jisota/file_script.rb, line 78 def make_temp_dir ssh_session.command("mkdir -p #{tmp_dir}", logger) end
move_with_callback(callback, callback_not_found_message)
click to toggle source
# File lib/jisota/file_script.rb, line 101 def move_with_callback(callback, callback_not_found_message) if callback result = ssh_session.command("sudo mkdir -p `dirname #{to}` && sudo mv #{tmp_file} #{to}", logger) if result == 0 if callback.is_a?(ScriptBlock) callback_script = callback.evaluate(context) callback_script.execute(context) else true end end else logger.system_message(callback_not_found_message) true end end
run()
click to toggle source
# File lib/jisota/file_script.rb, line 70 def run logger.system_message("File #{from} -> #{to}") do make_temp_dir upload handle_file_move end end
same_file()
click to toggle source
# File lib/jisota/file_script.rb, line 96 def same_file logger.system_message("Files are the same. Skipping move.") true end
tmp_dir()
click to toggle source
# File lib/jisota/file_script.rb, line 66 def tmp_dir "tmp/jisota" end
tmp_file()
click to toggle source
# File lib/jisota/file_script.rb, line 62 def tmp_file @tmp_file ||= "#{tmp_dir}/#{SecureRandom.hex}" end
upload()
click to toggle source
# File lib/jisota/file_script.rb, line 82 def upload logger.system_message("Uploading #{from} -> #{tmp_file}") ssh_session.upload(from: from, to: tmp_file) end