services:
  logger.channel.automatic_updates:
    parent: logger.channel_base
    arguments: ['automatic_updates']
  automatic_updates.psa:
    class: Drupal\automatic_updates\Services\AutomaticUpdatesPsa
    arguments:
      - '@config.factory'
      - '@cache.default'
      - '@datetime.time'
      - '@http_client'
      - '@extension.list.module'
      - '@extension.list.profile'
      - '@extension.list.theme'
      - '@logger.channel.automatic_updates'
  automatic_updates.psa_notify:
    class: Drupal\automatic_updates\Services\Notify
    arguments:
      - '@plugin.manager.mail'
      - '@automatic_updates.psa'
      - '@config.factory'
      - '@language_manager'
      - '@state'
      - '@datetime.time'
      - '@entity_type.manager'
      - '@string_translation'
  automatic_updates.cron_override:
    class: Drupal\automatic_updates\EventSubscriber\CronOverride
    tags:
      - { name: config.factory.override }
  automatic_updates.modified_files:
    class: Drupal\automatic_updates\Services\ModifiedFiles
    arguments:
      - '@logger.channel.automatic_updates'
      - '@http_client'
      - '@config.factory'
  automatic_updates.update:
    class: Drupal\automatic_updates\Services\InPlaceUpdate
    arguments:
      - '@logger.channel.automatic_updates'
      - '@plugin.manager.archiver'
      - '@config.factory'
      - '@file_system'
      - '@http_client'
      - '@app.root'
  plugin.manager.database_update_handler:
    class: Drupal\automatic_updates\DatabaseUpdateHandlerPluginManager
    parent: default_plugin_manager
  automatic_updates.post_update_subscriber:
    class: Drupal\automatic_updates\EventSubscriber\PostUpdateSubscriber
    arguments:
      - '@config.factory'
      - '@plugin.manager.mail'
      - '@language_manager'
      - '@entity_type.manager'
    tags:
      - { name: event_subscriber }

  automatic_updates.readiness_checker:
    class: Drupal\automatic_updates\ReadinessChecker\ReadinessCheckerManager
    arguments:
      - '@keyvalue'
      - '@config.factory'
    tags:
      - { name: service_collector, tag: readiness_checker, call: addChecker }

  # Readiness checkers.
  automatic_updates.readonly_checker:
    class: Drupal\automatic_updates\ReadinessChecker\ReadOnlyFilesystem
    arguments:
      - '@app.root'
      - '@logger.channel.automatic_updates'
      - '@file_system'
    tags:
      - { name: readiness_checker, priority: 100, category: error }
  automatic_updates.disk_space_checker:
    class: Drupal\automatic_updates\ReadinessChecker\DiskSpace
    arguments:
      - '@app.root'
    tags:
      - { name: readiness_checker, category: error}
  automatic_updates.modified_files_checker:
    class: Drupal\automatic_updates\ReadinessChecker\ModifiedFiles
    arguments:
      - '@automatic_updates.modified_files'
      - '@extension.list.module'
      - '@extension.list.profile'
      - '@extension.list.theme'
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.file_ownership:
    class: Drupal\automatic_updates\ReadinessChecker\FileOwnership
    arguments:
      - '@app.root'
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.minimum_php_version:
    class: Drupal\automatic_updates\ReadinessChecker\MinimumPhpVersion
    tags:
      - { name: readiness_checker, category: error}
  automatic_updates.blacklist_php_72:
    class: Drupal\automatic_updates\ReadinessChecker\BlacklistPhp72Versions
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.pending_db_updates:
    class: Drupal\automatic_updates\ReadinessChecker\PendingDbUpdates
    arguments:
      - '@update.post_update_registry'
    tags:
      - { name: readiness_checker, category: error}
  automatic_updates.missing_project_info:
    class: Drupal\automatic_updates\ReadinessChecker\MissingProjectInfo
    arguments:
      - '@extension.list.module'
      - '@extension.list.profile'
      - '@extension.list.theme'
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.opcode_cache:
    class: Drupal\automatic_updates\ReadinessChecker\OpcodeCache
    tags:
      - { name: readiness_checker, category: error}
  automatic_updates.php_sapi:
    class: Drupal\automatic_updates\ReadinessChecker\PhpSapi
    arguments:
      - '@state'
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.cron_frequency:
    class: Drupal\automatic_updates\ReadinessChecker\CronFrequency
    arguments:
      - '@config.factory'
      - '@module_handler'
    tags:
      - { name: readiness_checker, category: warning}
  automatic_updates.vendor:
    class: Drupal\automatic_updates\ReadinessChecker\Vendor
    arguments:
      - '@app.root'
    tags:
      - { name: readiness_checker, category: error}
