class Dip::Commands::SSH::Up

Public Class Methods

new(key:, volume:, interactive:, user: nil) click to toggle source
# File lib/dip/commands/ssh.rb, line 10
def initialize(key:, volume:, interactive:, user: nil)
  @key = key
  @volume = volume
  @interactive = interactive
  @user = user
end

Public Instance Methods

execute() click to toggle source
# File lib/dip/commands/ssh.rb, line 17
def execute
  exec_subprocess("docker", "volume create --name ssh_data", out: File::NULL, err: File::NULL)

  exec_subprocess(
    "docker",
    "run #{user_args}--detach --volume ssh_data:/ssh --name=ssh-agent whilp/ssh-agent"
  )

  key = Dip.env.interpolate(@key)
  exec_subprocess("docker", "run #{container_args} whilp/ssh-agent ssh-add #{key}")
end

Private Instance Methods

container_args() click to toggle source
# File lib/dip/commands/ssh.rb, line 35
def container_args
  result = %w[--rm]
  volume = Dip.env.interpolate(@volume)
  result << "--volume ssh_data:/ssh"
  result << "--volume #{volume}:#{volume}"
  result << "--interactive --tty" if @interactive
  result.join(" ")
end
user_args() click to toggle source
# File lib/dip/commands/ssh.rb, line 31
def user_args
  "-u #{@user} " if @user
end