You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: plugin_handler.rb
    path of file: ./repos/puppet/lib/puppet/configurer
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

# Break out the code related to plugins.  This module is
# just included into the agent, but having it here makes it
# easier to test.
require_relative '../
    
  def download_plugins(environment)
    source_permissions = Puppet::Util::Platform.windows? ? :ignore : :use

    plugin_downloader = Puppet::Configurer::Downloader.new(
      "plugin",
      Puppet[:plugindest],
      Puppet[:pluginsource],
      Puppet[:pluginsignore],
      environment
    )
    plugin_fact_downloader = Puppet::Configurer::Downloader.new(
      "pluginfacts",
      Puppet[:pluginfactdest],
      Puppet[:pluginfactsource],
      Puppet[:pluginsignore],
      environment,
      source_permissions
    )

    result = []
    result += plugin_fact_downloader.evaluate
    result += plugin_downloader.evaluate

    unless Puppet[:disable_i18n]
      # until file metadata/content are using the rest client, we need to check
      # both :server_agent_version and the session to see if the server supports
      # the "locales" mount
      server_agent_version = Puppet.lookup(:server_agent_version) { "0.0" }
      locales = Gem::Version.new(server_agent_version) >= SUPPORTED_LOCALES_MOUNT_AGENT_VERSION
      unless locales
        session = Puppet.lookup(:http_session)
        locales = session.supports?(:fileserver, 'locales') || session.supports?(:puppet, 'locales')
      end