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

Move scripts to composer commands

parent 08203ff7
No related branches found
No related tags found
No related merge requests found
......@@ -24,10 +24,9 @@
"source": "https://gitlab.lakedrops.com/composer/plugin/dorgflow/tree/master"
},
"require": {
"php": ">=7.0",
"composer-plugin-api": "^1.0.0",
"cypresslab/gitelephant": "~1.0",
"lakedrops/composer-json-utils": "^1.1.0",
"php": ">=5.6"
"lakedrops/composer-json-utils": "^1.3.1"
},
"require-dev": {
"composer/composer": "^1.5.0",
......@@ -41,14 +40,6 @@
}
},
"extra": {
"class": "LakeDrops\\DorgFlow\\Plugin",
"lakedrops": {
"scripts": {
"dorgflow": {
"callback": "LakeDrops\\DorgFlow\\Plugin::prepare",
"description": "Prepare drupal.org projects for dorgflow utility."
}
}
}
"class": "LakeDrops\\DorgFlow\\Plugin"
}
}
<?php
namespace LakeDrops\DorgFlow;
use Composer\Plugin\Capability\CommandProvider as CommandProviderCapability;
use Composer\Command\BaseCommand;
class CommandProvider implements CommandProviderCapability {
/**
* Retrieves an array of commands
*
* @return BaseCommand[]
*/
public function getCommands(): array {
return [
new PrepareCommand(),
];
}
}
......@@ -2,7 +2,6 @@
namespace LakeDrops\DorgFlow;
use Composer\Script\Event;
use GitElephant\Repository;
use LakeDrops\Component\Composer\BaseHandler;
use Symfony\Component\Filesystem\Filesystem;
......@@ -16,14 +15,11 @@ class Handler extends BaseHandler {
/**
* Post install/update event to prepare projects for development.
*
* @param \Composer\Script\Event $event
* The event that triggered the call of this function.
*/
public function prepareDevProjects(Event $event) {
public function prepareDevProjects() {
// We only do the fancy stuff for developers.
if (!$event->isDevMode()) {
if (!$this->isDevMode()) {
return;
}
......@@ -36,7 +32,7 @@ class Handler extends BaseHandler {
$installationManager = $this->composer->getInstallationManager();
foreach ($options['projects'] as $project => $version) {
$package = $this->getPackage($project);
if (empty($package)) {
if ($package === NULL) {
continue;
}
......@@ -52,7 +48,7 @@ class Handler extends BaseHandler {
* @return array
* The options.
*/
protected function getOptions() {
protected function getOptions(): array {
$extra = $this->composer->getPackage()->getExtra() + ['dorgflow' => []];
return $extra['dorgflow'] + [
'projects' => [],
......@@ -79,7 +75,7 @@ class Handler extends BaseHandler {
try {
$origin = $repository->getRemote('origin', FALSE);
if ($origin && $origin->getFetchURL() == $uri) {
if ($origin && $origin->getFetchURL() === $uri) {
// Already setup correctly.
return;
}
......@@ -97,7 +93,7 @@ class Handler extends BaseHandler {
$repository->fetch();
$repository->checkout($version);
$repository->getCaller()->execute('branch --set-upstream-to origin/' . $version . ' ' . $version);
$this->io->write(" - completed", TRUE);
$this->io->write(' - completed', TRUE);
}
}
......@@ -21,7 +21,16 @@ class Plugin extends BasePlugin {
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
public function getCapabilities(): array {
return [
\Composer\Plugin\Capability\CommandProvider::class => CommandProvider::class,
];
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents(): array {
return array(
ScriptEvents::POST_INSTALL_CMD => 'prepareDevProjects',
ScriptEvents::POST_UPDATE_CMD => 'prepareDevProjects',
......@@ -35,18 +44,11 @@ class Plugin extends BasePlugin {
* The event that triggered the call of this function.
*/
public function prepareDevProjects(Event $event) {
$this->handler->prepareDevProjects($event);
}
/**
* Script callback for putting in composer scripts to prepare the project.
*
* @param \Composer\Script\Event $event
* The event that triggered the call of this function.
*/
public static function prepare(Event $event) {
$handler = new Handler($event->getComposer(), $event->getIO());
$handler->prepareDevProjects($event);
/** @var Handler $handler */
$handler = $this->handler;
$handler
->setEvent($event)
->prepareDevProjects();
}
}
<?php
namespace LakeDrops\DorgFlow;
use LakeDrops\Component\Composer\BaseCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class PrepareCommand extends BaseCommand {
/**
* {@inheritdoc}
*/
protected function configure() {
$this->setName('lakedrops:dorgflow');
$this->setDescription('Prepare drupal.org projects for dorgflow utility.');
}
/**
* {@inheritdoc}
*/
public function getHandlerClass() {
return Handler::class;
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output) {
parent::execute($input, $output);
/** @var Handler $handler */
$handler = $this->handler;
$handler->prepareDevProjects();
}
}
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