neronmoon / scriptsdev

Scripts-dev directive for composer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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

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);
    }

@neronmoon do you still accept PRs ?

This problem has been fixed with #20 and released in v0.1.9.