Sha256: bd87324706468e59b2b919aeae644db915ddfc32c9a4ee1a80f75d5d4a184cbc

Contents?: true

Size: 1.22 KB

Versions: 62

Compression:

Stored size: 1.22 KB

Contents

module VagrantPlugins
  module CommunicatorWinRM
    # Handles loading and applying all available WinRM command filters
    class CommandFilter
      @@cmd_filters = [
        "cat",
        "chmod",
        "chown",
        "grep",
        "rm",
        "test",
        "uname",
        "which",
        "mkdir",
      ]

      # Filter the given Vagrant command to ensure compatibility with Windows
      #
      # @param [String] The Vagrant shell command
      # @returns [String] Windows runnable command or empty string
      def filter(command)
        command_filters.each { |c| command = c.filter(command) if c.accept?(command) }
        command
      end

      # All the available Linux command filters
      #
      # @returns [Array] All Linux command filter instances
      def command_filters
        @command_filters ||= create_command_filters()
      end

      private

      def create_command_filters
        [].tap do |filters|
          @@cmd_filters.each do |cmd|
            require_relative "command_filters/#{cmd}"
            class_name = "VagrantPlugins::CommunicatorWinRM::CommandFilters::#{cmd.capitalize}"
            filters << Module.const_get(class_name).new
          end
        end
      end
    end
  end
end

Version data entries

62 entries across 55 versions & 7 rubygems

Version Path
vagrant-cloudstack-1.1.0 vendor/bundle/bundler/gems/vagrant-309e896975d1/plugins/communicators/winrm/command_filter.rb
vagrant-cloudstack-1.1.0 vendor/bundle/bundler/gems/vagrant-272fb27e0536/plugins/communicators/winrm/command_filter.rb