monorepo-builder icon indicating copy to clipboard operation
monorepo-builder copied to clipboard

Custom worker not loaded correctly

Open ItsReddi opened this issue 2 years ago • 2 comments

Error:

"Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface". Got: "workers\MonoRepo\TestWorker"

Setup: monorepo-builder.php

<?php

declare(strict_types=1);

use Symplify\MonorepoBuilder\Config\MBConfig;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\AddTagToChangelogReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushNextDevReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\PushTagReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetCurrentMutualDependenciesReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\SetNextMutualDependenciesReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\TagVersionReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateBranchAliasReleaseWorker;
use Symplify\MonorepoBuilder\Release\ReleaseWorker\UpdateReplaceReleaseWorker;
use Workers\MonoRepo\TestWorker;

return static function (MBConfig $mbConfig): void {
    $mbConfig->packageDirectories([__DIR__ . '/packages']);
    $mbConfig->defaultBranch('develop');
    $mbConfig->packageAliasFormat('<major>.<minor>.x-dev');

    // release workers - in order to execute
    $mbConfig->workers([
        UpdateReplaceReleaseWorker::class,
        SetCurrentMutualDependenciesReleaseWorker::class,
        AddTagToChangelogReleaseWorker::class,
        TagVersionReleaseWorker::class,
        PushTagReleaseWorker::class,
        SetNextMutualDependenciesReleaseWorker::class,
        UpdateBranchAliasReleaseWorker::class,
        PushNextDevReleaseWorker::class,
        TestWorker::class,
    ]);
};

src/TestWorker.php

<?php

namespace Workers\MonoRepo;
use Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface;

class TestWorker implements ReleaseWorkerInterface
{

    public function work(\PharIo\Version\Version $version) : void
    {
        echo "not implemented";
    }
    public function getDescription(\PharIo\Version\Version $version) : string
    {
        return "Does not work";
    }
}

psr-4 from composer.json:

    "require-dev": {
        "rector/rector": "0.15.24",
        "symplify/easy-coding-standard": "11.3.2",
        "symplify/monorepo-builder": "11.2.3.72",
    },
    "autoload": {
        "psr-4": {
            "Workers\\MonoRepo\\": "src"
        }
    },

vendor/bin/monorepo-builder release minor --dry-run

Result:

 [ERROR] Expected an instance of this class or to this class among its parents                                          
         "Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface". Got:                         
         "Workers\MonoRepo\TestWorker"   

It feels that it has something todo with the autoloading.

ItsReddi avatar Apr 24 '23 12:04 ItsReddi

Same for me, using version 11.2.3.72

@ItsReddi could you solve your issue?

Edit:

I was able to solve it by loading vendor/autoload.php in monorepo-builder.php.

outermedia-kha avatar Jun 02 '23 08:06 outermedia-kha

Same problem here. Custom worker won't load because monorepo-builder.php doesn't recognize main vendor/composer autoload. I wonder how that is intended.

MarkusEhrlich avatar Feb 21 '25 09:02 MarkusEhrlich