WP_CLI

PackageManagerEventSubscriber{}WP-CLI 1.0

A Composer Event subscriber so we can keep track of what's happening inside Composer

No Hooks.

Usage

$PackageManagerEventSubscriber = new PackageManagerEventSubscriber();
// use class methods

Methods

  1. public static getSubscribedEvents()
  2. public static post_install( PackageEvent $event )
  3. public static pre_install( PackageEvent $event )

PackageManagerEventSubscriber{} code WP-CLI 2.8.0-alpha

class PackageManagerEventSubscriber implements EventSubscriberInterface {

	/**
	 * Get subscribed events.
	 *
	 * @return array
	 */
	public static function getSubscribedEvents() {

		return [
			PackageEvents::PRE_PACKAGE_INSTALL  => 'pre_install',
			PackageEvents::POST_PACKAGE_INSTALL => 'post_install',
		];
	}

	/**
	 * Pre-install operation message.
	 *
	 * @param \Composer\Installer\PackageEvent $event
	 *
	 * @return void
	 */
	public static function pre_install( PackageEvent $event ) {
		$operation_message = $event->getOperation()->__toString();
		WP_CLI::log( ' - ' . $operation_message );
	}

	/**
	 * Post-install operation log.
	 *
	 * @param \Composer\Installer\PackageEvent $event
	 *
	 * @return void
	 */
	public static function post_install( PackageEvent $event ) {

		$operation = $event->getOperation();

		// getReason() was removed in Composer v2 without replacement.
		if ( ! method_exists( $operation, 'getReason' ) ) {
			return;
		}

		$reason = $operation->getReason();
		if ( $reason instanceof Rule ) {

			switch ( $reason->getReason() ) {

				case Rule::RULE_PACKAGE_CONFLICT:
				case Rule::RULE_PACKAGE_SAME_NAME:
				case Rule::RULE_PACKAGE_REQUIRES:
					$composer_error = $reason->getPrettyString( $event->getPool() );
					break;

			}

			if ( ! empty( $composer_error ) ) {
				WP_CLI::log( sprintf( ' - Warning: %s', $composer_error ) );
			}
		}

	}

}