2014-03-11 05:38:31 +00:00
|
|
|
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)
|
2014-04-05 18:26:31 +00:00
|
|
|
@_init = true
|
|
|
|
|
|
|
|
# Setup the I18n
|
2014-03-11 05:38:31 +00:00
|
|
|
I18n.load_path << File.expand_path(
|
|
|
|
"templates/locales/comm_winrm.yml", Vagrant.source_root)
|
|
|
|
I18n.reload!
|
2014-04-05 18:26:31 +00:00
|
|
|
|
2018-07-30 20:27:20 +00:00
|
|
|
# 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
|
2014-04-05 18:26:31 +00:00
|
|
|
# Load the WinRM gem
|
|
|
|
require "vagrant/util/silence_warnings"
|
|
|
|
Vagrant::Util::SilenceWarnings.silence! do
|
|
|
|
require "winrm"
|
|
|
|
end
|
2014-03-11 05:38:31 +00:00
|
|
|
end
|
2018-07-30 20:27:20 +00:00
|
|
|
|
|
|
|
# @private
|
|
|
|
# Reset the cached values. This is not considered a public
|
|
|
|
# API and should only be used for testing.
|
|
|
|
def self.reset!
|
|
|
|
instance_variables.each(&method(:remove_instance_variable))
|
|
|
|
end
|
2014-03-11 05:38:31 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|