File "GithubArchiveInstaller.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/.wp-cli/wp-content/plugins/mojo-marketplace-wp-plugin/vendor/wpscholar/github-archive-installer/src/GithubArchiveInstaller.php
File size: 3.4 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Installs GitHub archive files from a release when installing from distribution.
*
* @package wpscholar/Composer/GithubArchiveInstaller
*/
namespace wpscholar\Composer;
use Composer\Composer;
use Composer\DependencyResolver\Operation\OperationInterface;
use Composer\EventDispatcher\EventSubscriberInterface;
use Composer\Installer\PackageEvent;
use Composer\Installer\PackageEvents;
use Composer\IO\IOInterface;
use Composer\Plugin\PluginInterface;
/**
* Class GithubArchiveInstaller
*
* @package wpscholar\Composer
*/
class GithubArchiveInstaller implements PluginInterface, EventSubscriberInterface {
const PACKAGE_TYPE = 'github-archive-installer';
/**
* Composer instance.
*
* @var \Composer\Composer
*/
protected $composer;
/**
* Input/Output interface.
*
* @var \Composer\IO\IOInterface
*/
protected $io;
/**
* Apply plugin modifications to Composer.
*
* @param \Composer\Composer $composer Composer instance
* @param \Composer\IO\IOInterface $io Input/Output interface
*/
public function activate( Composer $composer, IOInterface $io ) {
$this->composer = $composer;
$this->io = $io;
}
/**
* Returns an array of event names this subscriber wants to listen to.
*
* @return array
*/
public static function getSubscribedEvents() {
return array(
PackageEvents::PRE_PACKAGE_INSTALL => 'preInstall',
PackageEvents::PRE_PACKAGE_UPDATE => 'preInstall',
);
}
/**
* Set distribution URL before installing.
*
* @param \Composer\Installer\PackageEvent $event The package install or update event.
*/
public function preInstall( PackageEvent $event ) {
/**
* Get the package instance.
*
* @var \Composer\Package\Package $package
*/
$package = $this->getPackageFromOperation( $event->getOperation() );
if ( array_key_exists( 'wpscholar/github-archive-installer', $package->getRequires() ) ) {
if ( version_compare( $package->getFullPrettyVersion(), '0.0.0', '>=' ) ) {
$package->setDistUrl(
sprintf(
'https://github.com/%1$s/releases/download/%2$s/%3$s.zip',
$package->getName(),
$package->getFullPrettyVersion(),
explode( '/', $package->getName() )[1]
)
);
}
}
}
/**
* Convert operation to package instance.
*
* @param \Composer\DependencyResolver\Operation\OperationInterface $operation The operation
*
* @return \Composer\Package\PackageInterface The package of the operation
*/
public function getPackageFromOperation( OperationInterface $operation ) {
if ( 'update' === $operation->getJobType() ) {
/**
* Operation is an update operation.
*
* @var \Composer\DependencyResolver\Operation\UpdateOperation $operation
*/
return $operation->getTargetPackage();
}
/**
* Operation is an install operation.
*
* @var \Composer\DependencyResolver\Operation\InstallOperation $operation
*/
return $operation->getPackage();
}
/**
* Deactivate
*
* @param \Composer\Composer $composer Composer instance
* @param \Composer\IO\IOInterface $io Input/Output interface
*/
public function deactivate( Composer $composer, IOInterface $io ) {
// Nothing to do here.
}
/**
* Uninstall
*
* @param \Composer\Composer $composer Composer instance
* @param \Composer\IO\IOInterface $io Input/Output interface
*/
public function uninstall( Composer $composer, IOInterface $io ) {
// Nothing to do here.
}
}