Sha256: 2326ef00219c24526947e16325a38f31bc00412310d1945519add1ef6a82227a

Contents?: true

Size: 842 Bytes

Versions: 2

Compression:

Stored size: 842 Bytes

Contents

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

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

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

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

  def options
    { user: user, proxy: proxy, auth_methods: [ "publickey" ], logger: logger, keepalive: true, keepalive_interval: 30 }.compact
  end

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

  private
    attr_accessor :config

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

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kamal-0.16.1 lib/kamal/configuration/ssh.rb
kamal-0.16.0 lib/kamal/configuration/ssh.rb