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:----pxn867hT9eUvcMteIVGEpnJlT8qz3sx+aiLxTuaJDdSDEbHnkCkzujPmi5GXUpKmw5NGGHBwLDP6Co7UyxBzDJ6RjyTWXBGIX00zoMPpnGt/uH0gsJugsWLFjt7EW0H8eSML/8JgHOxbm1fEv7LqxuFv2IgWPNnxh+vyasiXQ1t9zarRW2te/ZxPfIhi3PsEoAVriJS5B3NywSvtpttQnUhnfu0IyIK0vY0hHGWR5rofQnoDSLkHnfKmstGIj+tGpkr46VdoxxzDmCu2aTDTPqy5vY/22uA2OuxcimZURVUaRlHSrayLkbMIMu6JHtAgH90P2srvvy8MbcK/wBGxBXc3O6JbN+3Btoyh7y5G7kPQ4pWMsbCgFTKAWQsM5SrgqyeQCmY2pKNI/4tMgK+07ZAtGqarr6NGeG0YmOXYbtx/3M/p/Xgho2quYSu9ddd7qCqRsVR4bimEW2Im/mAV9jWgziGONWsx480WtngtLsqxgJgpZp9+W6Yt2RPtVt3fsN5qUJz3aIULF8MQbXVcZeYJ539jZGlNNep17vo39nW1HOe1S999xhvW1cW4vut7L+Ap2DkIuJd+BOLy2gZWKFM/cNplzBL6P2oPDdhMgNTewJhqlP3iZaujxw7oMva0RwrE2bC+AeIJAB//Pzdb3p5d1Q6RqtcArDM6GKK/hhQ=----ATTACHMENT:----MTEzMjM5MTU3MDcyODQxNSAxOTQ2MDc1NDg1NTI2NDAyIDI2MzI4NzY5OTQzMjczMjE=