class FuckingShellScripts::SCP

Constants

FILENAME

Public Class Methods

new(server, opts) click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 5
def initialize(server, opts)
  @server, @opts = server, opts
end

Public Instance Methods

to_server() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 9
def to_server
  check_executable_permissions
  create_local_archive
  scp_files_to_server
  extract_remote_archive
  remove_remote_archive
  remove_local_archive
end

Private Instance Methods

check_executable_permissions() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 20
def check_executable_permissions
  @opts.fetch(:scripts).each do |file|
    raise FuckingShellScripts::Errors::ScriptNotExecutable , "The script #{file} is not executable." unless File.executable?(file)
  end
end
create_local_archive() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 26
def create_local_archive
  includes = @opts.fetch(:files){ [] } + @opts.fetch(:scripts)
  `tar -czf #{FILENAME} #{includes.join(" ")}`
end
extract_remote_archive() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 35
def extract_remote_archive
  @server.ssh("tar -xzf #{FILENAME}")
end
remove_local_archive() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 43
def remove_local_archive
  `rm -f #{FILENAME}`
end
remove_remote_archive() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 39
def remove_remote_archive
  @server.ssh("rm #{FILENAME}")
end
scp_files_to_server() click to toggle source
# File lib/fucking_shell_scripts/scp.rb, line 31
def scp_files_to_server
  @server.scp(FILENAME, ".")
end