refactor(plugin): inherit from topfloor/composer-cleanup-vcs-dirs
This commit is contained in:
parent
363d8c7491
commit
4ae6f770d0
@ -19,7 +19,11 @@
|
|||||||
"source": "https://git.defis.info/SeaCMS/composer-plugin"
|
"source": "https://git.defis.info/SeaCMS/composer-plugin"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"composer-plugin-api": "^2.3"
|
"composer-plugin-api": "^2.3",
|
||||||
|
"topfloor/composer-cleanup-vcs-dirs": "^1.1"
|
||||||
|
},
|
||||||
|
"replace": {
|
||||||
|
"symfony/finder": "*"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@ -27,8 +31,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"extra": {
|
"extra": {
|
||||||
"class": "Seacms\\ComposerInstaller\\Plugin",
|
"class": "Seacms\\ComposerInstaller\\Plugin"
|
||||||
"plugin-modifies-downloads": false,
|
},
|
||||||
"plugin-modifies-install-path": false
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"topfloor/composer-cleanup-vcs-dirs": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
39
src/Handler.php
Normal file
39
src/Handler.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SPDX-License-Identifier: EUPL-1.2
|
||||||
|
* Authors: see /README.md
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Seacms\ComposerInstaller;
|
||||||
|
|
||||||
|
use SplFileInfo;
|
||||||
|
use TopFloor\ComposerCleanupVcsDirs\Handler as ParentHandler;
|
||||||
|
|
||||||
|
class Handler extends ParentHandler
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param $parentDir
|
||||||
|
* @param bool $excludeRoot
|
||||||
|
* @return SplFileInfo[]
|
||||||
|
*/
|
||||||
|
public function getVcsDirs($parentDir, $excludeRoot = false) {
|
||||||
|
|
||||||
|
$dirs = [];
|
||||||
|
if (!is_link($parentDir) && is_dir($parentDir) && is_dir("$parentDir/.git")){
|
||||||
|
$dirs[] = new SplFileInfo("$parentDir/.git");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $dirs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $dirs
|
||||||
|
*/
|
||||||
|
public function deleteVcsDirs(array $dirs) {
|
||||||
|
/** @var SplFileInfo $dir */
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
// $this->fs->removeDirectory($dir->getRealPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -9,19 +9,17 @@ namespace Seacms\ComposerInstaller;
|
|||||||
|
|
||||||
use Composer\Composer;
|
use Composer\Composer;
|
||||||
use Composer\Config;
|
use Composer\Config;
|
||||||
use Composer\EventDispatcher\EventSubscriberInterface;
|
|
||||||
use Composer\Installer\PackageEvent;
|
|
||||||
use Composer\Installer\PackageEvents;
|
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Plugin\PluginInterface;
|
use Seacms\ComposerInstaller\Handler;
|
||||||
use Seacms\ComposerInstaller\NotFoundFileException;
|
use Seacms\ComposerInstaller\NotFoundFileException;
|
||||||
|
use TopFloor\ComposerCleanupVcsDirs\Plugin as ParentPlugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composer plugin to install or not packages from local path
|
* Composer plugin to install or not packages from local path
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Plugin implements PluginInterface, EventSubscriberInterface
|
class Plugin extends ParentPlugin
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* composer instance
|
* composer instance
|
||||||
@ -34,29 +32,16 @@ class Plugin implements PluginInterface, EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
protected $io;
|
protected $io;
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of event names this subscriber wants to listen to.
|
|
||||||
* @return array<string, string|array{0: string, 1?: int}|array<array{0: string, 1?: int}>> The event names to listen to
|
|
||||||
*/
|
|
||||||
public static function getSubscribedEvents(){
|
|
||||||
return [
|
|
||||||
PackageEvents::PRE_PACKAGE_UPDATE => 'prePackageUpdate',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function prePackageUpdate(PackageEvent $event)
|
|
||||||
{
|
|
||||||
$event->getIO()->write("<info>Test : {$event->getOperation()}</info>");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply plugin modifications to Composer
|
* Apply plugin modifications to Composer
|
||||||
*
|
*
|
||||||
* @return void
|
* @param Composer $composer
|
||||||
|
* @param IOInterface $io
|
||||||
*/
|
*/
|
||||||
public function activate(Composer $composer, IOInterface $io) {
|
public function activate(Composer $composer, IOInterface $io) {
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->io = $io;
|
$this->io = $io;
|
||||||
|
$this->handler = new Handler($composer, $io);
|
||||||
try {
|
try {
|
||||||
$this->updateConfig($this->getConfigJsonFile());
|
$this->updateConfig($this->getConfigJsonFile());
|
||||||
} catch (NotFoundFileException $ex){
|
} catch (NotFoundFileException $ex){
|
||||||
@ -64,30 +49,6 @@ class Plugin implements PluginInterface, EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove any hooks from Composer
|
|
||||||
*
|
|
||||||
* This will be called when a plugin is deactivated before being
|
|
||||||
* uninstalled, but also before it gets upgraded to a new version
|
|
||||||
* so the old one can be deactivated and the new one activated.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function deactivate(Composer $composer, IOInterface $io){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare the plugin to be uninstalled
|
|
||||||
*
|
|
||||||
* This will be called after deactivate.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function uninstall(Composer $composer, IOInterface $io){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get config.json File from root path
|
* get config.json File from root path
|
||||||
* @return array ['config' => $config,'path'=>path]
|
* @return array ['config' => $config,'path'=>path]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user