Sha256: b7a6ec8aceed3fb1a24b46dd7c31775124664e0a5f596e3e0fe4aeffa52b04a6
Contents?: true
Size: 2 KB
Versions: 12
Compression:
Stored size: 2 KB
Contents
module Facter module Core module Execution class Windows < Facter::Core::Execution::Base def search_paths ENV['PATH'].split(File::PATH_SEPARATOR) end DEFAULT_COMMAND_EXTENSIONS = %w[.COM .EXE .BAT .CMD].freeze def which(bin) if absolute_path?(bin) return bin if File.executable?(bin) else search_paths.each do |dir| dest = File.join(dir, bin) dest.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File.extname(dest).empty? exts = ENV['PATHEXT'] exts = exts ? exts.split(File::PATH_SEPARATOR) : DEFAULT_COMMAND_EXTENSIONS exts.each do |ext| destext = dest + ext return destext if File.executable?(destext) end end return dest if File.executable?(dest) end end nil end slash = '[\\\\/]' name = '[^\\\\/]+' ABSOLUTE_PATH_REGEX = /^(([A-Z]:#{slash})|(#{slash}#{slash}#{name}#{slash}#{name})|(#{slash}#{slash}\?#{slash}#{name}))/i.freeze def absolute_path?(path) !!(path =~ ABSOLUTE_PATH_REGEX) end DOUBLE_QUOTED_COMMAND = /\A"(.+?)"(?:\s+(.*))?/.freeze def expand_command(command) exe = nil args = nil if (match = command.match(DOUBLE_QUOTED_COMMAND)) exe, args = match.captures else exe, args = command.split(/ /, 2) end return unless exe && (expanded = which(exe)) expanded = "\"#{expanded}\"" if expanded =~ /\s+/ expanded << " #{args}" if args expanded end def execute(command, options = {}) expand = options.fetch(:expand, true) raise ArgumentError.new, 'Unsupported argument on Windows expand with value false' unless expand super(command, options) end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems