# module Gem::LocalRemoteOptions

Mixin methods for local and remote `Gem::Command` options.

### Public Instance Methods

accept_uri_http() click to toggle source

Allows `OptionParser` to handle HTTP URIs.

    # File lib/rubygems/local_remote_options.rb, line 19
    def accept_uri_http
      OptionParser.accept URI::HTTP do |value|
        begin
          uri = URI.parse value
        rescue URI::InvalidURIError
          raise OptionParser::InvalidArgument, value
        end

        valid_uri_schemes = ["http", "https", "file", "s3"]
        unless valid_uri_schemes.include?(uri.scheme)
          msg = "Invalid uri scheme for #{value}\nPreface URLs with one of #{valid_uri_schemes.map{|s| "#{s}://" }}"
          raise ArgumentError, msg
        end

        value
      end
    end

add_bulk_threshold_option() click to toggle source

Add the –bulk-threshold option

    # File lib/rubygems/local_remote_options.rb, line 66
    def add_bulk_threshold_option
      add_option(:"Local/Remote", '-B', '--bulk-threshold COUNT',
                 "Threshold for switching to bulk",
                 "synchronization (default #{Gem.configuration.bulk_threshold})") do
        |value, options|
        Gem.configuration.bulk_threshold = value.to_i
      end
    end

add_clear_sources_option() click to toggle source

Add the –clear-sources option

    # File lib/rubygems/local_remote_options.rb, line 78
    def add_clear_sources_option
      add_option(:"Local/Remote", '--clear-sources',
                 'Clear the gem sources') do |value, options|

        Gem.sources = nil
        options[:sources_cleared] = true
      end
    end

add_local_remote_options() click to toggle source

Add local/remote options to the command line parser.

    # File lib/rubygems/local_remote_options.rb, line 40
    def add_local_remote_options
      add_option(:"Local/Remote", '-l', '--local',
                 'Restrict operations to the LOCAL domain') do |value, options|
        options[:domain] = :local
      end

      add_option(:"Local/Remote", '-r', '--remote',
        'Restrict operations to the REMOTE domain') do |value, options|
        options[:domain] = :remote
      end

      add_option(:"Local/Remote", '-b', '--both',
                 'Allow LOCAL and REMOTE operations') do |value, options|
        options[:domain] = :both
      end

      add_bulk_threshold_option
      add_clear_sources_option
      add_source_option
      add_proxy_option
      add_update_sources_option
    end

add_proxy_option() click to toggle source

Add the –http-proxy option

    # File lib/rubygems/local_remote_options.rb, line 90
    def add_proxy_option
      accept_uri_http

      add_option(:"Local/Remote", '-p', '--[no-]http-proxy [URL]', URI::HTTP,
                 'Use HTTP proxy for remote operations') do |value, options|
        options[:http_proxy] = (value == false) ? :no_proxy : value
        Gem.configuration[:http_proxy] = options[:http_proxy]
      end
    end

add_source_option() click to toggle source

Add the –source option

    # File lib/rubygems/local_remote_options.rb, line 103
    def add_source_option
      accept_uri_http

      add_option(:"Local/Remote", '-s', '--source URL', URI::HTTP,
                 'Append URL to list of remote gem sources') do |source, options|

        source << '/' if source !~ /\/\z/

        if options.delete :sources_cleared
          Gem.sources = [source]
        else
          Gem.sources << source unless Gem.sources.include?(source)
        end
      end
    end

add_update_sources_option() click to toggle source

Add the –update-sources option

    # File lib/rubygems/local_remote_options.rb, line 122
    def add_update_sources_option
      add_option(:Deprecated, '-u', '--[no-]update-sources',
                 'Update local source cache') do |value, options|
        Gem.configuration.update_sources = value
      end
    end

both?() click to toggle source

Is fetching of local and remote information enabled?

    # File lib/rubygems/local_remote_options.rb, line 132
    def both?
      options[:domain] == :both
    end

local?() click to toggle source

Is local fetching enabled?

    # File lib/rubygems/local_remote_options.rb, line 139
    def local?
      options[:domain] == :local || options[:domain] == :both
    end

remote?() click to toggle source

Is remote fetching enabled?

    # File lib/rubygems/local_remote_options.rb, line 146
    def remote?
      options[:domain] == :remote || options[:domain] == :both
    end