class VagrantPlugins::Share::Command::Connect

Public Class Methods

synopsis() click to toggle source
# File lib/vagrant-share/command/connect.rb, line 19
def self.synopsis
  "connect to a remotely shared Vagrant environment"
end

Public Instance Methods

execute() click to toggle source
# File lib/vagrant-share/command/connect.rb, line 23
def execute
  @logger = Log4r::Logger.new("vagrant::share::command::connect")

  options = {}

  opts = OptionParser.new do |o|
    o.banner = "Usage: vagrant connect NAME"
    o.separator ""
    o.separator "Gives you access to any Vagrant environment shared using "
    o.separator "`vagrant share`. The NAME parameter should be the unique name"
    o.separator "that was outputted with `vagrant share` on the remote side."
    o.separator ""
    o.separator "Vagrant will give you an IP that you can use to access the"
    o.separator "remote environment. You'll be able to access any ports that"
    o.separator "the shared environment has authorized."
    o.separator ""
    o.on("--disable-static-ip", "No static IP, only a SOCKS proxy") do |s|
      options[:disable_static_ip] = s
    end

    o.on("--static-ip IP", String, "Manually override static IP chosen") do |ip|
      begin
        IPAddr.new(ip)
      rescue IPAddr::InvalidAddressError
        raise Errors::IPInvalid, ip: ip
      end

      options[:static_ip] = ip
    end

    o.on("--ssh", "SSH into the remote machine") do |ssh|
      options[:ssh] = ssh
    end

    o.on("--driver DRIVER", "Deprecated option for compatibility") do |driver|
      options[:driver] = driver
    end

    o.on("--share-password", "Custom share password") do |p|
      options[:share_password] = p
    end
  end

  # Parse the options
  argv = parse_options(opts)
  return if !argv
  if argv.empty? || argv.length > 1
    raise Vagrant::Errors::CLIInvalidUsage, help: opts.help.chomp
  end

  if options[:ssh]
    return execute_ssh(argv, options)
  else
    return execute_connect(argv, options)
  end
end