Sha256: 821970c3ba10196395f5b30bf0b7a27da1aa5d9bcb2094a3a4d39a5e9f6f39af

Contents?: true

Size: 1.02 KB

Versions: 107

Compression:

Stored size: 1.02 KB

Contents

module RVM
  module Shell
    module Utility

      public

      # Takes an array / number of arguments and converts
      # them to a string useable for passing into a shell call.
      def escape_arguments(*args)
        return '' if args.nil?
        args.flatten.map { |a| escape_argument(a.to_s) }.join(" ")
      end

      # Given a string, converts to the escaped format. This ensures
      # that things such as variables aren't evaluated into strings
      # and everything else is setup as expected.
      def escape_argument(s)
        return "''" if s.empty?
        s.scan(/('+|[^']+)/).map do |section|
          section = section.first
          if section[0] == ?'
            "\\'" * section.length
          else
            "'#{section}'"
          end
        end.join
      end

      # From a command, will build up a runnable command. If args isn't provided,
      # it will escape arguments.
      def build_cli_call(command, args = nil)
        "#{command} #{escape_arguments(args)}".strip
      end

    end
  end
end

Version data entries

107 entries across 107 versions & 2 rubygems

Version Path
rvm-1.6.32 lib/rvm/shell/utility.rb
rvm-1.6.31 lib/rvm/shell/utility.rb
rvm-1.6.30 lib/rvm/shell/utility.rb
rvm-1.6.29 lib/rvm/shell/utility.rb
rvm-1.6.27 lib/rvm/shell/utility.rb
rvm-1.6.24 lib/rvm/shell/utility.rb
rvm-1.6.23 lib/rvm/shell/utility.rb
rvm-1.6.22 lib/rvm/shell/utility.rb
rvm-1.6.21 lib/rvm/shell/utility.rb
rvm-1.6.20 lib/rvm/shell/utility.rb
rvm-1.6.19 lib/rvm/shell/utility.rb
rvm-1.6.16 lib/rvm/shell/utility.rb
rvm-1.6.13 lib/rvm/shell/utility.rb
rvm-1.6.12 lib/rvm/shell/utility.rb
rvm-1.6.11 lib/rvm/shell/utility.rb
rvm-1.6.10 lib/rvm/shell/utility.rb
rvm-1.6.9 lib/rvm/shell/utility.rb
rvm-1.6.8 lib/rvm/shell/utility.rb
rvm-1.6.7 lib/rvm/shell/utility.rb
rvm-1.6.6 lib/rvm/shell/utility.rb