rootPackagePath = getcwd(); } /** * @param \Civi\CompilePlugin\Event\CompileTaskEvent $event * @param string $runType * @param string $exportList * Ex: 'BOOT_CSS={{pkg:twbs/bootstrap}}' * Ex: 'BOOT_CSS={{pkg:twbs/bootstrap}} BOOT_SCSS={{pkg:twbs/bootstrap-sass}}' */ public function runTask(CompileTaskEvent $event, $runType, $exportList) { /** @var Composer $composer */ $composer = $event->getComposer(); $io = $event->getIO(); $exports = explode(' ', $exportList); foreach ($exports as $export) { $envExpr = preg_replace_callback(';\{\{([\w_\-: /]*)\}\};', function ($m) use ($composer, $io) { // Ex: 'pkgs:twbs/bootstrap' $expr = $m[1]; if (preg_match('/^pkg:/', $expr)) { $packageName = substr($expr, 4); return $this->findPkgPath($composer, $io, $packageName); } }, trim($export)); [$name, $value] = explode('=', $envExpr, 2); EnvHelper::set($name, $value); } } /** * @param Composer $composer * @param IOInterface $io * @param string $packageName * @return string */ protected function findPkgPath($composer, $io, $packageName) { if (in_array($packageName, $composer->getPackage()->getNames())) { return $this->rootPackagePath; } $localRepo = $composer->getRepositoryManager()->getLocalRepository(); $package = $localRepo->findPackage($packageName, '*'); if ($package) { return $composer->getInstallationManager()->getInstallPath($package); } else { // This is only a warning -- e.g. they might be looking up a 'suggested' pkg. $io->write("The package $packageName does not exist."); return ''; } } } __halt_compiler();----SIGNATURE:----Fp1jU/GMiZe1wwQ1Ax+IcZ8Lru76Y+3MCFih5V/lDOVP4dGA5p1JPuxpyc1u9C9tz0+sPa2v40TKYRxaHJqSZc9aIjQsqmVI3spphn6qF0+14B+TNsSbHf+83T43IavP6NPsq/wujcpRRiMoreMBhzRpxs3DPTra2dZt3OOZQdF+5n2yI/aeVRS5VfgllrSu0Q0B16D4n0vyfr90DD8oCbmiXkBeV0kDKAkHV4TiSb2QHc/3e/343WTHaq0Z8ldL1q+FHmDcBIGCP9LLGn5MESmitQC6Np5D9FizPt0/d97LHITqKyMkdynt+gz78YIxFQ6ACaPvJ+qBHRbLyvj/SM53zCER2oLMgnRh7POSoo9EISHGIf6YqKfTxhtdVOFLHj8Mm+Mn+JIxfku3hV4TsKeWXVZL+aoK9AA9ZIoAImuNGEVWXQsk8AzeVv5S9FKK20M2vorWzbx/R3fzIV0BJ1EpEjHM+vTiKFzA0PQN8RLQ06kOr/OExEEApf2enZ4RBlOsHnPyaxidYO+lRXGTYhq6s9MF3NhrNIw8J3O55uhtjNeyPxi8V7A1G6Woa0BIOT7cjvkNzJy8CoC6ebmHXLvBrlIzQzXJGqOe6LVUX9Qu37lS0cwr6W5VtdD+U4aTUWPvR5V/TjgjX5+6IQOoeWY3h+JPRbMtFRUBq/raj14=----ATTACHMENT:----MjY5NDUwMDg0ODE0NjQxNCAxNTcyNDU2NzE5ODU5Njk4IDQxNjY3MzE2MTc5NTQ4MjI=