Skip to content
Snippets Groups Projects
Commit ca6c6b25 authored by jurgenhaas's avatar jurgenhaas
Browse files

Add support for drupalspoons

parent b2c29912
No related branches found
No related tags found
No related merge requests found
vendor vendor
.env
composer.lock composer.lock
...@@ -24,14 +24,14 @@ ...@@ -24,14 +24,14 @@
"source": "https://gitlab.lakedrops.com/composer/plugin/dorgflow/tree/master" "source": "https://gitlab.lakedrops.com/composer/plugin/dorgflow/tree/master"
}, },
"require": { "require": {
"php": ">=7.0", "php": ">=7.2",
"composer-plugin-api": "^1.0.0", "composer-plugin-api": "^1.0.0",
"cypresslab/gitelephant": "^2.0|^4.0", "cypresslab/gitelephant": "^2.0|^4.0",
"lakedrops/composer-json-utils": "^1.3.2" "lakedrops/composer-json-utils": "^1.5"
}, },
"require-dev": { "require-dev": {
"composer/composer": "^1.5.0", "composer/composer": "^1.10",
"phpunit/phpunit": "^4.8.0" "phpunit/phpunit": "^8.4"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
......
...@@ -3,14 +3,11 @@ ...@@ -3,14 +3,11 @@
namespace LakeDrops\DorgFlow; namespace LakeDrops\DorgFlow;
use Composer\Plugin\Capability\CommandProvider as CommandProviderCapability; use Composer\Plugin\Capability\CommandProvider as CommandProviderCapability;
use Composer\Command\BaseCommand;
class CommandProvider implements CommandProviderCapability { class CommandProvider implements CommandProviderCapability {
/** /**
* Retrieves an array of commands * {@inheritdoc}
*
* @return BaseCommand[]
*/ */
public function getCommands(): array { public function getCommands(): array {
return [ return [
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace LakeDrops\DorgFlow; namespace LakeDrops\DorgFlow;
use Exception;
use GitElephant\Repository; use GitElephant\Repository;
use LakeDrops\Component\Composer\BaseHandler; use LakeDrops\Component\Composer\BaseHandler;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
...@@ -23,22 +24,26 @@ class Handler extends BaseHandler { ...@@ -23,22 +24,26 @@ class Handler extends BaseHandler {
return; return;
} }
$options = $this->getOptions();
if (empty($options['projects'])) {
return;
}
$this->io->write('Dorgflow: Preparing drupal.org packages for development', TRUE);
$installationManager = $this->composer->getInstallationManager(); $installationManager = $this->composer->getInstallationManager();
foreach ($options['projects'] as $project => $version) { $options = $this->getOptions();
$package = $this->getPackage($project); foreach ([
if ($package === NULL) { 'projects' => 'git.drupal.org:project',
'drupalspoons' => 'gitlab.com:drupalspoons',
] as $type => $url) {
if (empty($options[$type])) {
continue; continue;
} }
$this->io->write('Dorgflow: Preparing ' . $url . ' packages for development', TRUE);
foreach ($options[$type] as $project => $version) {
$package = $this->getPackage($project);
if ($package === NULL) {
continue;
}
$path = $installationManager->getInstallPath($package); $path = $installationManager->getInstallPath($package);
$this->io->write("- $project => $path", TRUE); $this->io->write("- $project => $path", TRUE);
$this->prepareWorkingDirectory($path, $project, $version); $this->prepareWorkingDirectory($path, $project, $version, $url);
}
} }
} }
...@@ -51,8 +56,9 @@ class Handler extends BaseHandler { ...@@ -51,8 +56,9 @@ class Handler extends BaseHandler {
protected function getOptions(): array { protected function getOptions(): array {
$extra = $this->composer->getPackage()->getExtra() + ['dorgflow' => []]; $extra = $this->composer->getPackage()->getExtra() + ['dorgflow' => []];
return $extra['dorgflow'] + [ return $extra['dorgflow'] + [
'projects' => [], 'projects' => [],
]; 'drupalspoons' => [],
];
} }
/** /**
...@@ -64,10 +70,12 @@ class Handler extends BaseHandler { ...@@ -64,10 +70,12 @@ class Handler extends BaseHandler {
* Name of the project. * Name of the project.
* @param string $version * @param string $version
* Version to checkout. * Version to checkout.
* @param string $url
* Base URL to checkout from.
*/ */
protected function prepareWorkingDirectory($path, $project, $version) { protected function prepareWorkingDirectory($path, $project, $version, $url) {
list(, $projectname) = explode('/', $project); [, $projectname] = explode('/', $project);
$uri = 'git@git.drupal.org:project/' . $projectname . '.git'; $uri = 'git@' . $url . '/' . $projectname . '.git';
// Git Clone the repository into the working directory. // Git Clone the repository into the working directory.
$repository = Repository::open($path); $repository = Repository::open($path);
...@@ -80,7 +88,7 @@ class Handler extends BaseHandler { ...@@ -80,7 +88,7 @@ class Handler extends BaseHandler {
return; return;
} }
} }
catch (\Exception $ex) { catch (Exception $ex) {
// Ignore the exception and conitue setup. // Ignore the exception and conitue setup.
} }
......
...@@ -12,8 +12,10 @@ class PrepareCommand extends BaseCommand { ...@@ -12,8 +12,10 @@ class PrepareCommand extends BaseCommand {
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function configure() { protected function configure() {
$this->setName('lakedrops:dorgflow'); parent::configure();
$this->setDescription('Prepare drupal.org projects for dorgflow utility.'); $this
->setName('lakedrops:dorgflow')
->setDescription('Prepare drupal.org projects for dorgflow utility.');
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment