|  | @@ -6,16 +6,17 @@ use Composer\Composer;
 | 
	
		
			
				|  |  |  use Composer\EventDispatcher\Event;
 | 
	
		
			
				|  |  |  use Composer\EventDispatcher\EventSubscriberInterface;
 | 
	
		
			
				|  |  |  use Composer\Installer\InstallerEvents;
 | 
	
		
			
				|  |  | +use Composer\Installer\PackageEvent;
 | 
	
		
			
				|  |  |  use Composer\Installer\PackageEvents;
 | 
	
		
			
				|  |  |  use Composer\IO\IOInterface;
 | 
	
		
			
				|  |  | +use Composer\Plugin\Capability\Capability;
 | 
	
		
			
				|  |  |  use Composer\Plugin\Capability\CommandProvider;
 | 
	
		
			
				|  |  |  use Composer\Plugin\Capable;
 | 
	
		
			
				|  |  | -use Composer\Plugin\PluginEvents;
 | 
	
		
			
				|  |  |  use Composer\Plugin\PluginInterface;
 | 
	
		
			
				|  |  | +use Composer\Script\Event as ScriptEvent;
 | 
	
		
			
				|  |  |  use Composer\Script\ScriptEvents;
 | 
	
		
			
				|  |  | -use Doctrine\Common\Util\Debug;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -class Builder implements Capable, EventSubscriberInterface, PluginInterface {
 | 
	
		
			
				|  |  | +class Builder implements Capable, Capability, CommandProvider, EventSubscriberInterface, PluginInterface {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * @var IOInterface
 | 
	
	
		
			
				|  | @@ -29,8 +30,6 @@ class Builder implements Capable, EventSubscriberInterface, PluginInterface {
 | 
	
		
			
				|  |  |     * @param IOInterface $io
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    public function activate(Composer $composer, IOInterface $io) {
 | 
	
		
			
				|  |  | -    Debug::dump($composer);
 | 
	
		
			
				|  |  | -    Debug::dump($io);
 | 
	
		
			
				|  |  |      $this->io = $io;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -45,7 +44,9 @@ class Builder implements Capable, EventSubscriberInterface, PluginInterface {
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    public function getCommands() {
 | 
	
		
			
				|  |  |      echo __METHOD__ . "\n";
 | 
	
		
			
				|  |  | -    return [];
 | 
	
		
			
				|  |  | +    return [
 | 
	
		
			
				|  |  | +      new BuildSettingsCommand(),
 | 
	
		
			
				|  |  | +    ];
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
	
		
			
				|  | @@ -71,40 +72,49 @@ class Builder implements Capable, EventSubscriberInterface, PluginInterface {
 | 
	
		
			
				|  |  |        InstallerEvents::POST_DEPENDENCIES_SOLVING => 'onEvent',
 | 
	
		
			
				|  |  |        InstallerEvents::PRE_DEPENDENCIES_SOLVING => 'onEvent',
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      PackageEvents::POST_PACKAGE_INSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      PackageEvents::POST_PACKAGE_UNINSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      PackageEvents::POST_PACKAGE_UPDATE => 'onEvent',
 | 
	
		
			
				|  |  | -      PackageEvents::PRE_PACKAGE_INSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      PackageEvents::PRE_PACKAGE_UNINSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      PackageEvents::PRE_PACKAGE_UPDATE => 'onEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::POST_PACKAGE_INSTALL => 'onPackageEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::POST_PACKAGE_UNINSTALL => 'onPackageEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::POST_PACKAGE_UPDATE => 'onPackageEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::PRE_PACKAGE_INSTALL => 'onPackageEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::PRE_PACKAGE_UNINSTALL => 'onPackageEvent',
 | 
	
		
			
				|  |  | +      PackageEvents::PRE_PACKAGE_UPDATE => 'onPackageEvent',
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      PluginEvents::COMMAND => 'onEvent',
 | 
	
		
			
				|  |  | -      PluginEvents::INIT => 'onEvent',
 | 
	
		
			
				|  |  | -      PluginEvents::PRE_FILE_DOWNLOAD => 'onEvent',
 | 
	
		
			
				|  |  | +//      PluginEvents::COMMAND => 'onEvent',
 | 
	
		
			
				|  |  | +//      PluginEvents::INIT => 'onEvent',
 | 
	
		
			
				|  |  | +//      PluginEvents::PRE_FILE_DOWNLOAD => 'onEvent',
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_ARCHIVE_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_AUTOLOAD_DUMP => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_CREATE_PROJECT_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_INSTALL_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_PACKAGE_INSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_PACKAGE_UNINSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_PACKAGE_UPDATE => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_ROOT_PACKAGE_INSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_STATUS_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::POST_UPDATE_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_ARCHIVE_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_AUTOLOAD_DUMP => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_INSTALL_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_PACKAGE_INSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_PACKAGE_UNINSTALL => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_PACKAGE_UPDATE => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_STATUS_CMD => 'onEvent',
 | 
	
		
			
				|  |  | -      ScriptEvents::PRE_UPDATE_CMD => 'onEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::POST_ARCHIVE_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::POST_AUTOLOAD_DUMP => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::POST_CREATE_PROJECT_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +      ScriptEvents::POST_INSTALL_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::POST_ROOT_PACKAGE_INSTALL => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::POST_STATUS_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +      ScriptEvents::POST_UPDATE_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::PRE_ARCHIVE_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::PRE_AUTOLOAD_DUMP => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::PRE_INSTALL_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::PRE_STATUS_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  | +//      ScriptEvents::PRE_UPDATE_CMD => 'onScriptEvent',
 | 
	
		
			
				|  |  |      ];
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    public function onEvent(Event $event) {
 | 
	
		
			
				|  |  | -    $this->io->write(Debug::dump($event, 2, false, false));
 | 
	
		
			
				|  |  | +    $this->io->write($event->getName());
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  public function onPackageEvent(PackageEvent $event) {
 | 
	
		
			
				|  |  | +    $this->io->write([
 | 
	
		
			
				|  |  | +      $event->getName(),
 | 
	
		
			
				|  |  | +      $event->getOperation()->getJobType() . ' - ' . $event->getOperation()->getReason(),
 | 
	
		
			
				|  |  | +      json_encode($event->getArguments()),
 | 
	
		
			
				|  |  | +      json_encode($event->getInstalledRepo()->getRepositories()),
 | 
	
		
			
				|  |  | +    ]);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  public function onScriptEvent(ScriptEvent $event) {
 | 
	
		
			
				|  |  | +    $this->io->write([
 | 
	
		
			
				|  |  | +      $event->getName(),
 | 
	
		
			
				|  |  | +      json_encode($event->getArguments()),
 | 
	
		
			
				|  |  | +    ]);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 |