Sha256: d24cfade1d557e6b2a10d7b72db51557737ea8100a7cd2c470b5ba72c0bebd79

Contents?: true

Size: 962 Bytes

Versions: 1

Compression:

Stored size: 962 Bytes

Contents

module Mina
  module Backend
    class Remote
      attr_reader :commands
      include Configuration::DSL

      def initialize(commands)
        @commands = commands
      end

      def prepare
        if fetch(:simulate)
          [
            '#!/usr/bin/env bash', "# Executing the following via '#{ssh}':",
            '#', commands, ' '
          ].join("\n")
        else
          command = Shellwords.escape(commands)
          [ssh, '--', command].join(' ')
        end
      end

      def ssh
        fail 'No domain set' unless set?(:domain)
        args = fetch(:domain)
        args = "#{fetch(:user)}@#{fetch(:domain)}" if set?(:user)
        args << " -i #{fetch(:identity_file)}" if set?(:identity_file)
        args << " -p #{fetch(:port)}" if set?(:port)
        args << ' -A' if set?(:forward_agent)
        args << " #{fetch(:ssh_options)}" if set?(:ssh_options)
        args << ' -tt'
        "ssh #{args}"
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mina-1.0.0.beta2 lib/mina/backend/remote.rb