From 26efea98bd7a159b693f7f1df151d9068d4bf83f Mon Sep 17 00:00:00 2001
From: tedbow <tedbow@240860.no-reply.drupal.org>
Date: Tue, 5 Oct 2021 13:48:40 +0000
Subject: [PATCH] Issue #3240753 by tedbow, phenaproxima: Prevent install if
 Composer dependencies are not present

---
 automatic_updates.install               | 18 ++++++++++++------
 package_manager/package_manager.install | 20 ++++++++++++++++++++
 2 files changed, 32 insertions(+), 6 deletions(-)
 create mode 100644 package_manager/package_manager.install

diff --git a/automatic_updates.install b/automatic_updates.install
index a4b7e81fd5..d3df02c1a0 100644
--- a/automatic_updates.install
+++ b/automatic_updates.install
@@ -11,11 +11,17 @@ use Drupal\automatic_updates\Validation\ReadinessRequirements;
  * Implements hook_requirements().
  */
 function automatic_updates_requirements($phase) {
-  if ($phase !== 'runtime') {
-    return [];
+  if ($phase === 'runtime') {
+    /** @var \Drupal\automatic_updates\Validation\ReadinessRequirements $readiness_requirement */
+    $readiness_requirement = \Drupal::classResolver(ReadinessRequirements::class);
+    return $readiness_requirement->getRequirements();
+  }
+  if ($phase === 'install' && !class_exists('PhpTuf\ComposerStager\Domain\Beginner')) {
+    return [
+      'automatic_updates' => [
+        'description' => t('External dependencies for Automatic Updates are not available. Composer must be used to download the module with dependencies.'),
+        'severity' => REQUIREMENT_ERROR,
+      ],
+    ];
   }
-
-  /** @var \Drupal\automatic_updates\Validation\ReadinessRequirements $readiness_requirement */
-  $readiness_requirement = \Drupal::classResolver(ReadinessRequirements::class);
-  return $readiness_requirement->getRequirements();
 }
diff --git a/package_manager/package_manager.install b/package_manager/package_manager.install
new file mode 100644
index 0000000000..3162de1233
--- /dev/null
+++ b/package_manager/package_manager.install
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @file
+ * Contains install and update functions for Package Manager.
+ */
+
+/**
+ * Implements hook_requirements().
+ */
+function package_manager_requirements($phase) {
+  if ($phase === 'install' && !class_exists('PhpTuf\ComposerStager\Domain\Beginner')) {
+    return [
+      'package_manager' => [
+        'description' => t('External dependencies for Package Manager are not available. Composer must be used to download the module with dependencies.'),
+        'severity' => REQUIREMENT_ERROR,
+      ],
+    ];
+  }
+}
-- 
GitLab