symplify / monorepo-builder

Composer tools to maintain a monorepo

Home Page:https://www.tomasvotruba.cz/blog/2019/02/18/how-we-automated-shopsys-packages-release-from-2-days-to-1-console-command/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Custom worker not loaded correctly

ItsReddi opened this issue · 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.

commented

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.