original_string: 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);
  
  		}
  		
  	}
code: 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);
  
  		}
  		
  	}
code_tokens: 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 ) ; } }
docstring: 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
docstring_tokens: Handle some Pattern Lab specific tasks based on what s found in the package s composer . json file on install