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

Initial code

parent 548bb707
No related branches found
No related tags found
No related merge requests found
{
"name": "lakedrops/composer-dev-environment",
"name": "lakedrops/dorgflow",
"description": "Composer Plugin for development environments",
"type": "composer-plugin",
"keywords": ["Development"],
"homepage": "https://gitlab.paragon-es.de/lakedrops/composer-dev-environment",
"homepage": "https://gitlab.paragon-es.de/lakedrops/dorgflow",
"license": "GPL-2.0+",
"authors": [
{
......@@ -20,8 +20,8 @@
}
],
"support": {
"issues": "https://gitlab.paragon-es.de/lakedrops/composer-dev-environment/issues",
"source": "https://gitlab.paragon-es.de/lakedrops/composer-dev-environment/tree/master"
"issues": "https://gitlab.paragon-es.de/lakedrops/dorgflow/issues",
"source": "https://gitlab.paragon-es.de/lakedrops/dorgflow/tree/master"
},
"require": {
"composer-plugin-api": "^1.0.0",
......@@ -33,10 +33,11 @@
}
},
"extra": {
"class": "LakeDrops\\ComposerDevEnvironment\\Plugin"
"class": "LakeDrops\\DorgFlow\\Plugin"
},
"require-dev": {
"composer/composer": "dev-master",
"cypresslab/gitelephant": "~1.0",
"phpunit/phpunit": "^4.4.0"
}
}
<?php
/**
* @file
* Contains \LakeDrops\ComposerDevEnvironment\Handler.
*/
namespace LakeDrops\ComposerDevEnvironment;
namespace LakeDrops\DorgFlow;
use Composer\Package\PackageInterface;
use Composer\Composer;
use Composer\IO\IOInterface;
use Composer\Script\Event as ScriptEvent;
use GitElephant\Repository;
class Handler {
......@@ -24,11 +20,6 @@ class Handler {
*/
protected $io;
/**
* @var PackageInterface
*/
protected $drupalCorePackage;
/**
* Handler constructor.
*
......@@ -41,12 +32,68 @@ class Handler {
}
/**
* Post project create event to execute the scaffolding.
* Retrieve a package from the current composer process.
*
* @param string $name
* Name of the package to get from the current composer installation.
*
* @return PackageInterface
*/
protected function getPackage($name) {
return $this->composer->getRepositoryManager()->getLocalRepository()->findPackage($name, '*');
}
/**
* Post install/update event to prepare projects for development.
*
* @param ScriptEvent $event
*/
public function test($event) {
print('HALLO, here I am' . PHP_EOL);
public function prepareDevProjects($event) {
// We only do the fancy stuff for developers
if (!$event->isDevMode()) {
return;
}
$options = $this->getOptions();
$installationManager = $this->composer->getInstallationManager();
foreach ($options['projects'] as $project => $version) {
$package = $this->getPackage($project);
if (empty($package)) {
continue;
}
$path = $installationManager->getInstallPath($package);
$this->prepareWorkingDirectory($path, $project, $version, $options['username']);
}
}
/**
* Retrieve excludes from optional "extra" configuration.
*
* @return array
*/
protected function getOptions() {
$extra = $this->composer->getPackage()->getExtra() + ['dorgflow' => []];
$options = $extra['dorgflow'] + [
'projects' => [],
'username' => '',
];
return $options;
}
/**
* @inheritDoc
*/
protected function prepareWorkingDirectory($path, $project, $version, $username) {
list(, $projectname) = explode('/', $project);
$repo = $username . '@git.drupal.org/project/' . $projectname . '.git';
// Git Clone the repository into the working directory
$repository = Repository::open($path);
$repository->cloneFrom($repo, '.');
$repository->checkout($version);
}
}
<?php
/**
* @file
* Contains LakeDrops\ComposerDevEnvironment\Plugin.
*/
namespace LakeDrops\ComposerDevEnvironment;
namespace LakeDrops\DorgFlow;
use Composer\Composer;
use Composer\EventDispatcher\EventSubscriberInterface;
......@@ -14,12 +9,12 @@ use Composer\Plugin\PluginInterface;
use Composer\Script\ScriptEvents;
/**
* Composer plugin for handling drupal scaffold.
* Composer plugin for preparing Drupal project for development with dorgflow.
*/
class Plugin implements PluginInterface, EventSubscriberInterface {
/**
* @var \LakeDrops\ComposerDevEnvironment\Handler
* @var \LakeDrops\DorgFlow\Handler
*/
protected $handler;
......@@ -35,17 +30,18 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
*/
public static function getSubscribedEvents() {
return array(
ScriptEvents::PRE_UPDATE_CMD => 'test',
ScriptEvents::POST_INSTALL_CMD => 'prepareDevProjects',
ScriptEvents::POST_UPDATE_CMD => 'prepareDevProjects',
);
}
/**
* Post create project event callback.
* Post install/update event callback.
*
* @param \Composer\Script\Event $event
*/
public function test($event) {
$this->handler->test($event);
public function prepareDevProjects($event) {
$this->handler->prepareDevProjects($event);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment