From 96716d8e648941bbc6edafd96afc0e8243e82fb0 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Fri, 3 Nov 2017 16:52:51 +0100
Subject: [PATCH] #4 Quickly get just the origin remote and skip further steps
 if the uri already matches

---
 src/Handler.php | 39 ++++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/src/Handler.php b/src/Handler.php
index 5382278..d5c159a 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -58,8 +58,12 @@ class Handler {
     }
 
     $options = $this->getOptions();
-    $installationManager = $this->composer->getInstallationManager();
+    if (empty($options['projects'])) {
+      return;
+    }
 
+    $this->io->write('Dorgflow: Preparing drupol.org packages for development', TRUE);
+    $installationManager = $this->composer->getInstallationManager();
     foreach ($options['projects'] as $project => $version) {
       $package = $this->getPackage($project);
       if (empty($package)) {
@@ -67,6 +71,7 @@ class Handler {
       }
 
       $path = $installationManager->getInstallPath($package);
+      $this->io->write("- $project => $path", TRUE);
       $this->prepareWorkingDirectory($path, $project, $version, $options['username']);
     }
   }
@@ -97,31 +102,27 @@ class Handler {
     $repository = Repository::open($path);
     $repository->init();
 
-    $originExists = FALSE;
-    /** @var \GitElephant\Objects\Remote $remote */
-    foreach ($repository->getRemotes() as $remote) {
-      if ($remote->getName() == 'origin') {
-        if ($remote->getFetchURL() != $uri) {
-          $repository->getCaller()->execute('remote remove origin');
-        }
-        else {
-          $originExists = TRUE;
-        }
-        break;
+    try {
+      $origin = $repository->getRemote('origin', FALSE);
+      if ($origin && $origin->getFetchURL() == $uri) {
+        // Already setup correctly.
+        return;
       }
     }
-
-    if (!$originExists) {
-      $fs = new Filesystem();
-      $fs->remove($path);
-      $fs->mkdir($path);
-      $repository->init();
-      $repository->addRemote('origin', $uri);
+    catch (\Exception $ex) {
+      // ignore the exception and conitue setup.
     }
 
+    $fs = new Filesystem();
+    $fs->remove($path);
+    $fs->mkdir($path);
+    $repository->init();
+    $repository->addRemote('origin', $uri);
+
     $repository->fetch();
     $repository->checkout($version);
     $repository->getCaller()->execute('branch --set-upstream-to origin/' . $version . ' ' . $version);
+    $this->io->write("  - completed", TRUE);
   }
 
 }
-- 
GitLab