protected static function packagesInstall($installerInfo, $event) {
		
		// mark if this is an interactive call or not
		self::$isInteractive = $event->getIO()->isInteractive();
		
		// initialize a bunch of stuff like config and console
		self::init();
		
		// reorder packages so the starterkit is first if it's being installed as a package
		if (isset($installerInfo["packages"])) {
			
			$packages = $installerInfo["packages"];
			$packages = array_merge(array_filter($packages, "self::includeStarterKit"), array_filter($packages, "self::excludeStarterKit"));
			
			foreach ($packages as $package) {
				
				// set-up package info
				$extra     = $package["extra"];
				$type      = $package["type"];
				$name      = $package["name"];
				$pathBase  = $package["pathBase"];
				$pathDist  = $package["pathDist"];
				
				// make sure that it has the name-spaced section of data to be parsed. if it exists parse it
				if (!empty($extra)) {
					self::parseComposerExtraList($extra, $name, $pathDist);
				}
				
				// see if the package has a listener
				self::scanForListener($pathBase);
				
				// address other specific needs based on type
				if ($type == "patternlab-patternengine") {
					self::scanForPatternEngineRule($pathBase);
				} else if (($type == "patternlab-styleguidekit") && (strpos($name,"-assets-") === false)) {
					$dir = str_replace(Config::getOption("baseDir"), "", $pathBase);
					$dir = ($dir[strlen($dir)-1] == DIRECTORY_SEPARATOR) ? rtrim($dir, DIRECTORY_SEPARATOR) : $dir;
					Config::updateConfigOption("styleguideKit",$name);
					Config::updateConfigOption("styleguideKitPath",$dir);
				}
				
			}
			
		}
		
		// make sure user is prompted to install starterkit
		if (!empty($installerInfo["suggestedStarterKits"])) {
			self::promptStarterKitInstall($installerInfo["suggestedStarterKits"]);
		}
		
		// override any configs that have been set-up
		if (!empty($installerInfo["configOverrides"])) {
			foreach ($installerInfo["configOverrides"] as $option => $value) {
				Config::updateConfigOption($option,$value, true); // forces the update
			}
		}
		
		if ($installerInfo["projectInstall"]) {
			
			Console::writeLine("");
			Console::writeLine("<h1><fire3>Thank you for installing...</fire3></h1>", false, true);
			Console::writeLine("<fire1>(                               (             </fire1>");
			Console::writeLine("<fire2>)\ )        )   )               )\ )         )</fire2>");
			Console::writeLine("<fire3>(()/(   ) ( /(( /(  (  (        (()/(    ) ( /(</fire3>");
			Console::writeLine("<fire4>/(_)| /( )\())\())))\ )(   (    /(_))( /( )\())</fire4>");
			Console::writeLine("<fire5>(</fire5><cool>_</cool><fire5>)) )(_)|</fire5><cool>_</cool><fire5>))(</fire5><cool>_</cool><fire5>))//((_|()\  )\ )(</fire5><cool>_</cool><fire5>))  )(_)|(_)\</fire5>");
			Console::writeLine("<cool>| _ </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |_| |_</cool><fire6>(</fire6><cool>_</cool><fire6>))  ((</fire6><cool>_</cool><fire6>)</fire6><cool>_</cool><fire6>(</fire6><cool>_</cool><fire6>/(</fire6><cool>| |  </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |</cool><fire6>(</fire6><cool>_</cool><fire6>)</fire6>");
			Console::writeLine("<cool>|  _/ _` |  _|  _/ -_)| '_| ' \</cool><fire6>))</fire6><cool> |__/ _` | '_ \  </cool>");
			Console::writeLine("<cool>|_| \__,_|\__|\__\___||_| |_||_||____\__,_|_.__/  </cool>", false, true);

		}
		
	}
protected static function packagesInstall($installerInfo, $event) {
		
		// mark if this is an interactive call or not
		self::$isInteractive = $event->getIO()->isInteractive();
		
		// initialize a bunch of stuff like config and console
		self::init();
		
		// reorder packages so the starterkit is first if it's being installed as a package
		if (isset($installerInfo["packages"])) {
			
			$packages = $installerInfo["packages"];
			$packages = array_merge(array_filter($packages, "self::includeStarterKit"), array_filter($packages, "self::excludeStarterKit"));
			
			foreach ($packages as $package) {
				
				// set-up package info
				$extra     = $package["extra"];
				$type      = $package["type"];
				$name      = $package["name"];
				$pathBase  = $package["pathBase"];
				$pathDist  = $package["pathDist"];
				
				// make sure that it has the name-spaced section of data to be parsed. if it exists parse it
				if (!empty($extra)) {
					self::parseComposerExtraList($extra, $name, $pathDist);
				}
				
				// see if the package has a listener
				self::scanForListener($pathBase);
				
				// address other specific needs based on type
				if ($type == "patternlab-patternengine") {
					self::scanForPatternEngineRule($pathBase);
				} else if (($type == "patternlab-styleguidekit") && (strpos($name,"-assets-") === false)) {
					$dir = str_replace(Config::getOption("baseDir"), "", $pathBase);
					$dir = ($dir[strlen($dir)-1] == DIRECTORY_SEPARATOR) ? rtrim($dir, DIRECTORY_SEPARATOR) : $dir;
					Config::updateConfigOption("styleguideKit",$name);
					Config::updateConfigOption("styleguideKitPath",$dir);
				}
				
			}
			
		}
		
		// make sure user is prompted to install starterkit
		if (!empty($installerInfo["suggestedStarterKits"])) {
			self::promptStarterKitInstall($installerInfo["suggestedStarterKits"]);
		}
		
		// override any configs that have been set-up
		if (!empty($installerInfo["configOverrides"])) {
			foreach ($installerInfo["configOverrides"] as $option => $value) {
				Config::updateConfigOption($option,$value, true); // forces the update
			}
		}
		
		if ($installerInfo["projectInstall"]) {
			
			Console::writeLine("");
			Console::writeLine("<h1><fire3>Thank you for installing...</fire3></h1>", false, true);
			Console::writeLine("<fire1>(                               (             </fire1>");
			Console::writeLine("<fire2>)\ )        )   )               )\ )         )</fire2>");
			Console::writeLine("<fire3>(()/(   ) ( /(( /(  (  (        (()/(    ) ( /(</fire3>");
			Console::writeLine("<fire4>/(_)| /( )\())\())))\ )(   (    /(_))( /( )\())</fire4>");
			Console::writeLine("<fire5>(</fire5><cool>_</cool><fire5>)) )(_)|</fire5><cool>_</cool><fire5>))(</fire5><cool>_</cool><fire5>))//((_|()\  )\ )(</fire5><cool>_</cool><fire5>))  )(_)|(_)\</fire5>");
			Console::writeLine("<cool>| _ </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |_| |_</cool><fire6>(</fire6><cool>_</cool><fire6>))  ((</fire6><cool>_</cool><fire6>)</fire6><cool>_</cool><fire6>(</fire6><cool>_</cool><fire6>/(</fire6><cool>| |  </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |</cool><fire6>(</fire6><cool>_</cool><fire6>)</fire6>");
			Console::writeLine("<cool>|  _/ _` |  _|  _/ -_)| '_| ' \</cool><fire6>))</fire6><cool> |__/ _` | '_ \  </cool>");
			Console::writeLine("<cool>|_| \__,_|\__|\__\___||_| |_||_||____\__,_|_.__/  </cool>", false, true);

		}
		
	}
protected static function packagesInstall ( $ installerInfo , $ event ) { // mark if this is an interactive call or not self :: $ isInteractive = $ event -> getIO ( ) -> isInteractive ( ) ; // initialize a bunch of stuff like config and console self :: init ( ) ; // reorder packages so the starterkit is first if it's being installed as a package if ( isset ( $ installerInfo [ "packages" ] ) ) { $ packages = $ installerInfo [ "packages" ] ; $ packages = array_merge ( array_filter ( $ packages , "self::includeStarterKit" ) , array_filter ( $ packages , "self::excludeStarterKit" ) ) ; foreach ( $ packages as $ package ) { // set-up package info $ extra = $ package [ "extra" ] ; $ type = $ package [ "type" ] ; $ name = $ package [ "name" ] ; $ pathBase = $ package [ "pathBase" ] ; $ pathDist = $ package [ "pathDist" ] ; // make sure that it has the name-spaced section of data to be parsed. if it exists parse it if ( ! empty ( $ extra ) ) { self :: parseComposerExtraList ( $ extra , $ name , $ pathDist ) ; } // see if the package has a listener self :: scanForListener ( $ pathBase ) ; // address other specific needs based on type if ( $ type == "patternlab-patternengine" ) { self :: scanForPatternEngineRule ( $ pathBase ) ; } else if ( ( $ type == "patternlab-styleguidekit" ) && ( strpos ( $ name , "-assets-" ) === false ) ) { $ dir = str_replace ( Config :: getOption ( "baseDir" ) , "" , $ pathBase ) ; $ dir = ( $ dir [ strlen ( $ dir ) - 1 ] == DIRECTORY_SEPARATOR ) ? rtrim ( $ dir , DIRECTORY_SEPARATOR ) : $ dir ; Config :: updateConfigOption ( "styleguideKit" , $ name ) ; Config :: updateConfigOption ( "styleguideKitPath" , $ dir ) ; } } } // make sure user is prompted to install starterkit if ( ! empty ( $ installerInfo [ "suggestedStarterKits" ] ) ) { self :: promptStarterKitInstall ( $ installerInfo [ "suggestedStarterKits" ] ) ; } // override any configs that have been set-up if ( ! empty ( $ installerInfo [ "configOverrides" ] ) ) { foreach ( $ installerInfo [ "configOverrides" ] as $ option => $ value ) { Config :: updateConfigOption ( $ option , $ value , true ) ; // forces the update } } if ( $ installerInfo [ "projectInstall" ] ) { Console :: writeLine ( "" ) ; Console :: writeLine ( "<h1><fire3>Thank you for installing...</fire3></h1>" , false , true ) ; Console :: writeLine ( "<fire1>(                               (             </fire1>" ) ; Console :: writeLine ( "<fire2>)\ )        )   )               )\ )         )</fire2>" ) ; Console :: writeLine ( "<fire3>(()/(   ) ( /(( /(  (  (        (()/(    ) ( /(</fire3>" ) ; Console :: writeLine ( "<fire4>/(_)| /( )\())\())))\ )(   (    /(_))( /( )\())</fire4>" ) ; Console :: writeLine ( "<fire5>(</fire5><cool>_</cool><fire5>)) )(_)|</fire5><cool>_</cool><fire5>))(</fire5><cool>_</cool><fire5>))//((_|()\  )\ )(</fire5><cool>_</cool><fire5>))  )(_)|(_)\</fire5>" ) ; Console :: writeLine ( "<cool>| _ </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |_| |_</cool><fire6>(</fire6><cool>_</cool><fire6>))  ((</fire6><cool>_</cool><fire6>)</fire6><cool>_</cool><fire6>(</fire6><cool>_</cool><fire6>/(</fire6><cool>| |  </cool><fire6>((</fire6><cool>_</cool><fire6>)</fire6><cool>_| |</cool><fire6>(</fire6><cool>_</cool><fire6>)</fire6>" ) ; Console :: writeLine ( "<cool>|  _/ _` |  _|  _/ -_)| '_| ' \</cool><fire6>))</fire6><cool> |__/ _` | '_ \  </cool>" ) ; Console :: writeLine ( "<cool>|_| \__,_|\__|\__\___||_| |_||_||____\__,_|_.__/  </cool>" , false , true ) ; } }
Handle some Pattern Lab specific tasks based on what's found in the package's composer.json file on install
@param  {Array}      the info culled from installing various pattern lab-related packages
Handle some Pattern Lab specific tasks based on what s found in the package s composer . json file on install