File: plugin.rb

package info (click to toggle)
vagrant 2.2.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 8,072 kB
  • sloc: ruby: 80,731; sh: 369; makefile: 9; lisp: 1
file content (66 lines) | stat: -rw-r--r-- 1,890 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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