Sha256: 199ef3fdd910b20d58ca440835309a6f233235ab2f4570bd5fcaab849f3f60d3

Contents?: true

Size: 1.55 KB

Versions: 16

Compression:

Stored size: 1.55 KB

Contents

module Chake

  class Backend

    class Ssh < Backend

      def scp
        ['scp', ssh_config, scp_options].flatten.compact
      end

      def scp_dest
        ssh_target + ':'
      end

      def rsync
        [ssh_prefix, 'rsync', rsync_ssh].flatten.compact
      end

      def rsync_dest
        [ssh_target, node.path + '/'].join(':')
      end

      def command_runner
        [ssh_prefix, 'ssh', ssh_config, ssh_options, ssh_target].flatten.compact
      end

      def shell_command
        command_runner
      end

      private

      def rsync_ssh
        @rsync_ssh ||=
          begin
            ssh_command = 'ssh'
            if File.exist?(ssh_config_file)
              ssh_command +=  ' -F ' + ssh_config_file
            end
            if node.port
              ssh_command += ' -p ' + node.port.to_s
            end
            if ssh_command == 'ssh'
              []
            else
              ['-e', ssh_command]
            end
          end
      end

      def ssh_config
        File.exist?(ssh_config_file) && ['-F', ssh_config_file] || []
      end

      def ssh_config_file
        @ssh_config_file ||= ENV.fetch('CHAKE_SSH_CONFIG', '.ssh_config')
      end

      def ssh_prefix
        @ssh_prefix ||= ENV.fetch('CHAKE_SSH_PREFIX', '').split
      end

      def ssh_target
        [node.remote_username, node.hostname].compact.join('@')
      end

      def ssh_options
        node.port && ['-p', node.port.to_s] || []
      end

      def scp_options
        node.port && ['-P', node.port.to_s] || []
      end

    end

  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
chake-0.21.2 lib/chake/backend/ssh.rb
chake-0.21.1 lib/chake/backend/ssh.rb
chake-0.21 lib/chake/backend/ssh.rb
chake-0.20 lib/chake/backend/ssh.rb
chake-0.19 lib/chake/backend/ssh.rb
chake-0.18 lib/chake/backend/ssh.rb
chake-0.17.1 lib/chake/backend/ssh.rb
chake-0.17 lib/chake/backend/ssh.rb
chake-0.16 lib/chake/backend/ssh.rb
chake-0.15 lib/chake/backend/ssh.rb
chake-0.14 lib/chake/backend/ssh.rb
chake-0.13 lib/chake/backend/ssh.rb
chake-0.12 lib/chake/backend/ssh.rb
chake-0.11 lib/chake/backend/ssh.rb
chake-0.10.2 lib/chake/backend/ssh.rb
chake-0.10.1 lib/chake/backend/ssh.rb