Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / robo / scripts / composer / ScriptHandler.php
diff --git a/vendor/consolidation/robo/scripts/composer/ScriptHandler.php b/vendor/consolidation/robo/scripts/composer/ScriptHandler.php
new file mode 100644 (file)
index 0000000..ddf1111
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @file
+ * Contains \Robo\composer\ScriptHandler.
+ */
+
+namespace Robo\composer;
+
+use Composer\Script\Event;
+use Symfony\Component\Filesystem\Filesystem;
+
+class ScriptHandler
+{
+
+    /**
+     * Run prior to `composer installl` when a composer.lock is present.
+     * @param Event $event
+     */
+    public static function checkDependencies(Event $event)
+    {
+        if (version_compare(PHP_VERSION, '5.6.0') < 0) {
+            static::checkDependenciesFor55();
+        }
+    }
+
+    /**
+     * Check to see if the dependencies in composer.lock are compatible
+     * with php 5.5.
+     */
+    protected static function checkDependenciesFor55()
+    {
+        $fs = new Filesystem();
+        if (!$fs->exists('composer.lock')) {
+            return;
+        }
+
+        $composerLockContents = file_get_contents('composer.lock');
+        if (preg_match('#"php":.*(5\.6)#', $composerLockContents)) {
+            static::fixDependenciesFor55();
+        }
+    }
+
+    protected static function fixDependenciesFor55()
+    {
+        $fs = new Filesystem();
+        $status = 0;
+
+        $fs->remove('composer.lock');
+
+        // Composer has already read our composer.json file, so we will
+        // need to run in a new process to fix things up.
+        passthru('composer install --ansi', $status);
+
+        // Don't continue with the initial 'composer install' command
+        exit($status);
+    }
+}