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