execute (Gem::Commands::SourcesCommand)

    # File lib/rubygems/commands/sources_command.rb, line 38
      def execute
        options[:list] = !(options[:add] || options[:remove] || options[:clear_all] || options[:update])

        if options[:clear_all] then
          remove_cache_file("user", Gem::SourceInfoCache.user_cache_file)
          remove_cache_file("system", Gem::SourceInfoCache.system_cache_file)
        end

        if options[:add] then
          source_uri = options[:add]

          sice = Gem::SourceInfoCacheEntry.new nil, nil
          begin
            sice.refresh source_uri

            Gem::SourceInfoCache.cache_data[source_uri] = sice
            Gem::SourceInfoCache.cache.update
            Gem::SourceInfoCache.cache.flush

            Gem.sources << source_uri
            Gem.configuration.write

            say "#{source_uri} added to sources"
          rescue URI::Error, ArgumentError
            say "#{source_uri} is not a URI"
          rescue Gem::RemoteFetcher::FetchError => e
            say "Error fetching #{source_uri}:\n\t#{e.message}"
          end
        end

        if options[:update] then
          Gem::SourceInfoCache.cache.refresh
          Gem::SourceInfoCache.cache.flush

          say "source cache successfully updated"
        end

        if options[:remove] then
          source_uri = options[:remove]

          unless Gem.sources.include? source_uri then
            say "source #{source_uri} not present in cache"
          else
            Gem::SourceInfoCache.cache_data.delete source_uri
            Gem::SourceInfoCache.cache.update
            Gem::SourceInfoCache.cache.flush
            Gem.sources.delete source_uri
            Gem.configuration.write

            say "#{source_uri} removed from sources"
          end
        end

        if options[:list] then
          say "*** CURRENT SOURCES ***"
          say

          Gem.sources.each do |source_uri|
            say source_uri
          end
        end
      end