commands/rdp: basic skeleton

This commit is contained in:
Mitchell Hashimoto 2014-04-12 15:40:27 -07:00
parent 2929f7a853
commit de7b4bbdc1
4 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,28 @@
require "optparse"
module VagrantPlugins
module CommandRDP
class Command < Vagrant.plugin("2", :command)
def self.synopsis
"connects to machine via RDP"
end
def execute
opts = OptionParser.new do |o|
o.banner = "Usage: vagrant rdp [options] [name]"
end
# Parse the options and return if we don't have any target.
argv = parse_options(opts)
return if !argv
# Check if the host even supports RDP
raise Errors::HostUnsupported if !@env.host.capability?(:rdp_client)
# Execute RDP if we can
with_target_vms(argv, single_target: true) do |machine|
end
end
end
end
end

View File

@ -0,0 +1,14 @@
module VagrantPlugins
module CommandRDP
module Errors
# A convenient superclass for all our errors.
class RDPError < Vagrant::Errors::VagrantError
error_namespace("vagrant_rdp.errors")
end
class HostUnsupported < RDPError
error_key(:host_unsupported)
end
end
end
end

View File

@ -0,0 +1,31 @@
require "vagrant"
module VagrantPlugins
module CommandRDP
autoload :Errors, File.expand_path("../errors", __FILE__)
class Plugin < Vagrant.plugin("2")
name "rdp command"
description <<-DESC
The rdp command opens a remote desktop Window to the
machine if it supports RDP.
DESC
command("rdp") do
require File.expand_path("../command", __FILE__)
init!
Command
end
protected
def self.init!
return if defined?(@_init)
I18n.load_path << File.expand_path(
"templates/locales/command_rdp.yml", Vagrant.source_root)
I18n.reload!
@_init = true
end
end
end
end

View File

@ -0,0 +1,12 @@
en:
vagrant_rdp:
errors:
host_unsupported: |-
Vagrant doesn't support running an RDP client on your
host OS. Currently only Windows is supported for RDP
clients.
If you wish for the OS you're running to support launching
an RDP client, please contribute this functionality back
into Vagrant. At the very least, open an issue on how it
could be done and we can handle the integration.