From dde51df82908c644c3f511103ab3a14bdd3db57e Mon Sep 17 00:00:00 2001
From: "Theresa.Grannum" <theresa.grannum@3688861.no-reply.drupal.org>
Date: Fri, 1 Apr 2022 18:46:49 +0000
Subject: [PATCH] Issue #3272061 by Theresa.Grannum, tedbow: AU Extension:
 Create new ExtensionUpdater class and service

---
 .../automatic_updates_extensions.services.yml | 13 +++++++
 .../src/ExtensionUpdater.php                  | 11 ++++++
 .../src/Form/UpdaterForm.php                  | 37 ++++++-------------
 3 files changed, 36 insertions(+), 25 deletions(-)
 create mode 100644 automatic_updates_extensions/automatic_updates_extensions.services.yml
 create mode 100644 automatic_updates_extensions/src/ExtensionUpdater.php

diff --git a/automatic_updates_extensions/automatic_updates_extensions.services.yml b/automatic_updates_extensions/automatic_updates_extensions.services.yml
new file mode 100644
index 0000000000..ba5bd80723
--- /dev/null
+++ b/automatic_updates_extensions/automatic_updates_extensions.services.yml
@@ -0,0 +1,13 @@
+services:
+  automatic_updates_extensions.updater:
+    class: Drupal\automatic_updates_extensions\ExtensionUpdater
+    arguments:
+      - '@config.factory'
+      - '@package_manager.path_locator'
+      - '@package_manager.beginner'
+      - '@package_manager.stager'
+      - '@package_manager.committer'
+      - '@file_system'
+      - '@event_dispatcher'
+      - '@tempstore.shared'
+      - '@datetime.time'
diff --git a/automatic_updates_extensions/src/ExtensionUpdater.php b/automatic_updates_extensions/src/ExtensionUpdater.php
new file mode 100644
index 0000000000..dbb577cf36
--- /dev/null
+++ b/automatic_updates_extensions/src/ExtensionUpdater.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Drupal\automatic_updates_extensions;
+
+use Drupal\package_manager\Stage;
+
+/**
+ * Defines a service to perform updates for modules and themes.
+ */
+class ExtensionUpdater extends Stage {
+}
diff --git a/automatic_updates_extensions/src/Form/UpdaterForm.php b/automatic_updates_extensions/src/Form/UpdaterForm.php
index a032b5773c..8f2579e009 100644
--- a/automatic_updates_extensions/src/Form/UpdaterForm.php
+++ b/automatic_updates_extensions/src/Form/UpdaterForm.php
@@ -4,9 +4,9 @@ namespace Drupal\automatic_updates_extensions\Form;
 
 use Drupal\automatic_updates\Event\ReadinessCheckEvent;
 use Drupal\automatic_updates\Validation\ReadinessTrait;
+use Drupal\automatic_updates_extensions\ExtensionUpdater;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\package_manager\Stage;
 use Drupal\system\SystemManager;
 use Drupal\update\UpdateManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -20,11 +20,11 @@ class UpdaterForm extends FormBase {
   use ReadinessTrait;
 
   /**
-   * The updater service.
+   * The extension updater service.
    *
-   * @var \Drupal\automatic_updates\Updater
+   * @var \Drupal\automatic_updates_extensions\ExtensionUpdater
    */
-  private $stage;
+  private $extensionUpdater;
 
   /**
    * The event dispatcher service.
@@ -37,21 +37,8 @@ class UpdaterForm extends FormBase {
    * {@inheritdoc}
    */
   public static function create(ContainerInterface $container) {
-    // @todo Create a our servcie that extends stage instead of creating a
-    //   generic stage class here.
-    $stage = new Stage(
-      $container->get('config.factory'),
-      $container->get('package_manager.path_locator'),
-      $container->get('package_manager.beginner'),
-      $container->get('package_manager.stager'),
-      $container->get('package_manager.committer'),
-      $container->get('file_system'),
-      $container->get('event_dispatcher'),
-      $container->get('tempstore.shared'),
-      $container->get('datetime.time')
-    );
     return new static(
-      $stage,
+      $container->get('automatic_updates_extensions.updater'),
       $container->get('event_dispatcher'),
     );
   }
@@ -59,13 +46,13 @@ class UpdaterForm extends FormBase {
   /**
    * Constructs a new UpdaterForm object.
    *
-   * @param \Drupal\package_manager\Stage $stage
-   *   The stage service.
+   * @param \Drupal\automatic_updates_extensions\ExtensionUpdater $extension_updater
+   *   The extension updater service.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   The extension event dispatcher service.
    */
-  public function __construct(Stage $stage, EventDispatcherInterface $event_dispatcher) {
-    $this->stage = $stage;
+  public function __construct(ExtensionUpdater $extension_updater, EventDispatcherInterface $event_dispatcher) {
+    $this->extensionUpdater = $extension_updater;
     $this->eventDispatcher = $event_dispatcher;
   }
 
@@ -124,7 +111,7 @@ class UpdaterForm extends FormBase {
       $results = [];
     }
     else {
-      $event = new ReadinessCheckEvent($this->stage);
+      $event = new ReadinessCheckEvent($this->extensionUpdater);
       $this->eventDispatcher->dispatch($event);
       $results = $event->getResults();
     }
@@ -149,7 +136,7 @@ class UpdaterForm extends FormBase {
    */
   protected function actions(FormStateInterface $form_state): array {
     $actions = ['#type' => 'actions'];
-    if (!$this->stage->isAvailable()) {
+    if (!$this->extensionUpdater->isAvailable()) {
       // If the form has been submitted do not display this error message
       // because ::deleteExistingUpdate() may run on submit. The message will
       // still be displayed on form build if needed.
@@ -175,7 +162,7 @@ class UpdaterForm extends FormBase {
    * Submit function to delete an existing in-progress update.
    */
   public function deleteExistingUpdate(): void {
-    $this->stage->destroy(TRUE);
+    $this->extensionUpdater->destroy(TRUE);
     $this->messenger()->addMessage($this->t("Staged update deleted"));
   }
 
-- 
GitLab