vagrant/plugins/communicators/winrm/plugin.rb

67 lines
1.8 KiB
Ruby

require "vagrant"
module VagrantPlugins
module CommunicatorWinRM
autoload :Errors, File.expand_path("../errors", __FILE__)
class Plugin < Vagrant.plugin("2")
name "winrm communicator"
description <<-DESC
This plugin allows Vagrant to communicate with remote machines using
WinRM.
DESC
communicator("winrm") do
require File.expand_path("../communicator", __FILE__)
init!
Communicator
end
config("winrm") do
require_relative "config"
Config
end
protected
def self.init!
return if defined?(@_init)
@_init = true
# Setup the I18n
I18n.load_path << File.expand_path(
"templates/locales/comm_winrm.yml", Vagrant.source_root)
I18n.reload!
# Check if vagrant-winrm plugin is installed and
# output warning to user if found
if !ENV["VAGRANT_IGNORE_WINRM_PLUGIN"] &&
Vagrant::Plugin::Manager.instance.installed_plugins.keys.include?("vagrant-winrm")
$stderr.puts <<-EOF
WARNING: Vagrant has detected the `vagrant-winrm` plugin. Vagrant ships with
WinRM support builtin and no longer requires the `vagrant-winrm` plugin. To
prevent unexpected errors please uninstall the `vagrant-winrm` plugin using
the command shown below:
vagrant plugin uninstall vagrant-winrm
To disable this warning, set the environment variable `VAGRANT_IGNORE_WINRM_PLUGIN`
EOF
end
# Load the WinRM gem
require "vagrant/util/silence_warnings"
Vagrant::Util::SilenceWarnings.silence! do
require "winrm"
end
end
# @private
# Reset the cached init value. This is not considered a public
# API and should only be used for testing.
def self.reset!
send(:remove_instance_variable, :@_init)
end
end
end
end