PHP Fatal error: Uncaught Error: Call to undefined method Composer\Package\RootAliasPackage::setScripts() on Composer2 and this package 0.1.8
hanovruslan opened this issue · comments
Hanov Ruslan commented
Hi! i've found some bug
Composer2 snapshot and composer 2.0.4 at least
Installing neronmoon/scriptsdev (v0.1.8): Extracting archive
PHP Fatal error: Uncaught Error: Call to undefined method Composer\Package\RootAliasPackage::setScripts() in vendor/neronmoon/scriptsdev/src/Plugin.php:26
Full stack trace
Installing neronmoon/scriptsdev (v0.1.8): Extracting archive
PHP Fatal error: Uncaught Error: Call to undefined method Composer\Package\RootAliasPackage::setScripts() in my_project/vendor/neronmoon/scriptsdev/src/Plugin.php:26
Full stack trace:
#0 phar:///....composer.phar/src/Composer/Plugin/PluginManager.php(319): ScriptsDev\Plugin->activate(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#1 phar:///.../composer.phar/src/Composer/Plugin/PluginManager.php(223): Composer\Plugin\PluginManager->addPlugin(Object(ScriptsDev\Plugin), false)
#2 phar:///.../composer.phar/src/Composer/Installer/PluginInstaller.php(76): Composer\Plugin\PluginManager->registerPackage(Object(Composer\Package\CompletePackage), true)
#3 [internal function]: Composer\Installer\PluginInstaller->Composer\Installer\{closure}(NULL)
#4 phar:///.../composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func(Object(Closure), NULL)
#5 phar:///.../composer.phar/vendor/react/promise/src in my_project/vendor/neronmoon/scriptsdev/src/Plugin.php on line 26
Fatal error: Uncaught Error: Call to undefined method Composer\Package\RootAliasPackage::setScripts() in my_project/vendor/neronmoon/scriptsdev/src/Plugin.php:26
Stack trace:
#0 phar:///.../composer.phar/src/Composer/Plugin/PluginManager.php(319): ScriptsDev\Plugin->activate(Object(Composer\Composer), Object(Composer\IO\ConsoleIO))
#1 phar:///.../composer.phar/src/Composer/Plugin/PluginManager.php(223): Composer\Plugin\PluginManager->addPlugin(Object(ScriptsDev\Plugin), false)
#2 phar:///.../composer.phar/src/Composer/Installer/PluginInstaller.php(76): Composer\Plugin\PluginManager->registerPackage(Object(Composer\Package\CompletePackage), true)
#3 [internal function]: Composer\Installer\PluginInstaller->Composer\Installer\{closure}(NULL)
#4 phar:///.../composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func(Object(Closure), NULL)
#5 phar:///.../composer.phar/vendor/react/promise/src in my_project/vendor/neronmoon/scriptsdev/src/Plugin.php on line 26
Hanov Ruslan commented
this is the hotfix
update \ScriptsDev\Plugin::activate
create new root package and replace it in the $composer
public function activate(Composer $composer, IOInterface $io)
{
$package = $composer->getPackage();
$completePackage = new RootPackage($package->getName(), $package->getVersion(), $package->getPrettyVersion());
$extractor = new PackageScriptsExtractor($io);
$devScripts = $extractor->extract($package);
$completePackage->setScripts(array_merge_recursive($package->getScripts(), $devScripts));
$composer->setPackage($completePackage);
}
Hanov Ruslan commented
@neronmoon do you still accept PRs ?
Fabien Villepinte commented