Sha256: 15052de12e4fad7af1787a721706aaa3a5d5aaef6b5a7eb1310cac1ce6057fe8

Contents?: true

Size: 963 Bytes

Versions: 4

Compression:

Stored size: 963 Bytes

Contents

class Kamal::Configuration::Ssh
  LOGGER = ::Logger.new(STDERR)

  include Kamal::Configuration::Validation

  attr_reader :ssh_config

  def initialize(config:)
    @ssh_config = config.raw_config.ssh || {}
    validate! ssh_config
  end

  def user
    ssh_config.fetch("user", "root")
  end

  def port
    ssh_config.fetch("port", 22)
  end

  def proxy
    if (proxy = ssh_config["proxy"])
      Net::SSH::Proxy::Jump.new(proxy.include?("@") ? proxy : "root@#{proxy}")
    elsif (proxy_command = ssh_config["proxy_command"])
      Net::SSH::Proxy::Command.new(proxy_command)
    end
  end

  def options
    { user: user, port: port, proxy: proxy, logger: logger, keepalive: true, keepalive_interval: 30 }.compact
  end

  def to_h
    options.except(:logger).merge(log_level: log_level)
  end

  private
    def logger
      LOGGER.tap { |logger| logger.level = log_level }
    end

    def log_level
      ssh_config.fetch("log_level", :fatal)
    end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
kamal-1.7.3 lib/kamal/configuration/ssh.rb
kamal-1.7.2 lib/kamal/configuration/ssh.rb
kamal-1.7.1 lib/kamal/configuration/ssh.rb
kamal-1.7.0 lib/kamal/configuration/ssh.rb