Sha256: 984a710f4f587560f4c5d381300948cd24c55210e8b2831fe68bf6db558aee0a

Contents?: true

Size: 968 Bytes

Versions: 1

Compression:

Stored size: 968 Bytes

Contents

# frozen_string_literal: true

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
        ensure!(: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.2.5 lib/mina/backend/remote.rb