Sha256: eefcd60bb5df36d78b26571f5b061ced273d7bf8f11a0b07cd62c2ba8361c1fa
Contents?: true
Size: 1.02 KB
Versions: 53
Compression:
Stored size: 1.02 KB
Contents
require 'shellwords' module Dragonfly module Shell include Configurable configurable_attr :log_commands, false # Exceptions class CommandFailed < RuntimeError; end def run(command, args="") full_command = "#{command} #{escape_args(args)}" log.debug("Running command: #{full_command}") if log_commands begin result = `#{full_command}` rescue Errno::ENOENT raise_shell_command_failed(full_command) end if $?.exitstatus == 1 throw :unable_to_handle elsif !$?.success? raise_shell_command_failed(full_command) end result end def raise_shell_command_failed(command) raise CommandFailed, "Command failed (#{command}) with exit status #{$?.exitstatus}" end def escape_args(args) args.shellsplit.map do |arg| quote arg.gsub(/\\?'/, %q('\\\\'')) end.join(' ') end def quote(string) q = Dragonfly.running_on_windows? ? '"' : "'" q + string + q end end end
Version data entries
53 entries across 53 versions & 2 rubygems