From 37c50918dbf15a6903e3ecf85841ecc3454bda80 Mon Sep 17 00:00:00 2001 From: Dariusz Gafka Date: Wed, 6 May 2026 20:53:24 +0200 Subject: [PATCH 1/2] fix: ensure first composer install symlinks local packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace wikimedia/composer-merge-plugin indirection with a top-level path repository in each composer.json. The merge plugin could only intercept Composer events after it was already installed, so the first composer install in a sub-package fetched siblings from Packagist instead of symlinking from local paths — requiring a second install for the plugin to kick in. A top-level repositories field is read by Composer immediately, so sibling packages resolve to local symlinks on the first install with no plugin needed. End-user installs are unaffected because Composer ignores repositories defined in dependency packages. --- .github/workflows/quickstart-examples.yml | 4 -- .github/workflows/split-testing.yml | 3 -- _PackageTemplate/composer.json | 27 ++++++----- composer.json | 16 ++++--- docker-compose.yml | 2 - local-packages.json | 44 ----------------- packages/Amqp/composer.json | 22 ++++----- packages/DataProtection/composer.json | 24 +++++----- packages/Dbal/composer.json | 22 ++++----- packages/Ecotone/composer.json | 21 ++++---- packages/Enqueue/composer.json | 22 ++++----- packages/JmsConverter/composer.json | 24 +++++----- packages/Kafka/composer.json | 22 ++++----- packages/Laravel/composer.json | 22 ++++----- packages/LiteApplication/composer.json | 24 +++++----- packages/OpenTelemetry/composer.json | 18 +++---- packages/PdoEventSourcing/composer.json | 22 ++++----- packages/Redis/composer.json | 24 +++++----- packages/Sqs/composer.json | 24 +++++----- packages/Symfony/composer.json | 24 +++++----- packages/local_packages.json | 48 ------------------- .../Asynchronous/composer.json | 24 +++++----- .../AuthoritativeClassmap/composer.json | 24 +++++----- .../BuildingBlocks/composer.json | 24 +++++----- .../Asynchronous/composer.json | 24 +++++----- .../BusinessInterface/Routing/composer.json | 24 +++++----- .../ServiceActivator/composer.json | 24 +++++----- quickstart-examples/CQRS/composer.json | 24 +++++----- .../ConsoleCommand/Laravel/composer.json | 24 +++++----- .../ConsoleCommand/Symfony/composer.json | 24 +++++----- quickstart-examples/Conversion/composer.json | 24 +++++----- .../composer.json | 24 +++++----- .../ErrorHandling/composer.json | 24 +++++----- .../EventHandling/composer.json | 24 +++++----- .../PartitionedProjection/composer.json | 25 +++++----- .../EventSourcing/composer.json | 24 +++++----- .../MessageBroker/composer.json | 25 +++++----- .../Microservices/composer.json | 24 +++++----- .../MicroservicesAdvanced/composer.json | 24 +++++----- .../HookIntoTenantSwitch/composer.json | 24 +++++----- .../composer.json | 24 +++++----- .../Laravel/Aggregate/composer.json | 24 +++++----- .../Laravel/AsynchronousEvents/composer.json | 24 +++++----- .../Laravel/EventSourcing/composer.json | 24 +++++----- .../MultiTenant/Laravel/Events/composer.json | 24 +++++----- .../Laravel/MessageBus/composer.json | 24 +++++----- .../Symfony/Aggregate/composer.json | 24 +++++----- .../Symfony/AsynchronousEvents/composer.json | 24 +++++----- .../Symfony/EventSourcing/composer.json | 24 +++++----- .../MultiTenant/Symfony/Events/composer.json | 24 +++++----- .../Symfony/MessageBus/composer.json | 24 +++++----- .../OutboxPattern/composer.json | 24 +++++----- .../RefactorToReactiveSystem/composer.json | 24 +++++----- quickstart-examples/Schedule/composer.json | 24 +++++----- .../StatefulProjection/composer.json | 24 +++++----- quickstart-examples/Testing/composer.json | 24 +++++----- .../AsynchronousStateless/composer.json | 24 +++++----- .../Workflows/Saga/composer.json | 24 +++++----- .../SynchronousStateless/composer.json | 24 +++++----- .../composer.json | 24 +++++----- 60 files changed, 602 insertions(+), 795 deletions(-) delete mode 100644 local-packages.json delete mode 100644 packages/local_packages.json diff --git a/.github/workflows/quickstart-examples.yml b/.github/workflows/quickstart-examples.yml index c542a5feb..e7a21a18a 100644 --- a/.github/workflows/quickstart-examples.yml +++ b/.github/workflows/quickstart-examples.yml @@ -120,10 +120,6 @@ jobs: echo "Kafka failed to start within 60 seconds" exit 1 - - name: Enable merge-plugin - run: composer global config --no-interaction allow-plugins.wikimedia/composer-merge-plugin true && composer global require wikimedia/composer-merge-plugin - working-directory: ${{ github.workspace }}/${{ matrix.package.directory }} - - name: Install dependencies run: composer update --${{ matrix.stability }} --no-interaction working-directory: ${{ github.workspace }}/${{ matrix.package.directory }} diff --git a/.github/workflows/split-testing.yml b/.github/workflows/split-testing.yml index 0b3152f02..1feec6608 100644 --- a/.github/workflows/split-testing.yml +++ b/.github/workflows/split-testing.yml @@ -127,9 +127,6 @@ jobs: echo "Kafka failed to start within 60 seconds" exit 1 - - name: Enable merge-plugin - run: composer global config --no-interaction allow-plugins.wikimedia/composer-merge-plugin true && composer global require wikimedia/composer-merge-plugin - - name: Remove grpc dependent packages (ext-grpc not available on PHP 8.5) if: matrix.php-version == '8.5' run: cd packages/OpenTelemetry && composer remove --dev --no-update open-telemetry/transport-grpc diff --git a/_PackageTemplate/composer.json b/_PackageTemplate/composer.json index 514ba4f88..1d4096a08 100644 --- a/_PackageTemplate/composer.json +++ b/_PackageTemplate/composer.json @@ -15,8 +15,20 @@ "email": "support@simplycodedsoftware.com" } ], - "keywords": ["ecotone", "_PackageTemplate"], + "keywords": [ + "ecotone", + "_PackageTemplate" + ], "description": "Extends Ecotone with _PackageTemplate integration", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\_PackageTemplate\\": "src" @@ -35,8 +47,7 @@ "require-dev": { "phpunit/phpunit": "^9.5|^10.5|^11.0", "phpstan/phpstan": "^1.8", - "psr/container": "^2.0", - "wikimedia/composer-merge-plugin": "^2.1" + "psr/container": "^2.0" }, "scripts": { "tests:phpstan": "vendor/bin/phpstan", @@ -53,11 +64,6 @@ "ecotone": { "repository": "_PackageTemplate" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -69,10 +75,5 @@ "description": "Allows to use Enterprise features of Ecotone. For more information please write to support@simplycodedsoftware.com" } } - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } } diff --git a/composer.json b/composer.json index fecc8dd4f..f0d94139c 100644 --- a/composer.json +++ b/composer.json @@ -20,6 +20,15 @@ "service-bus" ], "description": "Enterprise architecture layer for Laravel and Symfony — CQRS, Event Sourcing, Sagas, Projections, Workflows, and Outbox messaging via PHP attributes.", + "repositories": [ + { + "type": "path", + "url": "packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\": [ @@ -138,7 +147,6 @@ "symfony/console": "^6.4|^7.0|^8.0", "symfony/framework-bundle": "^6.4|^7.0|^8.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "wikimedia/composer-merge-plugin": "^2.1", "php-di/php-di": "^7.0.5", "open-telemetry/sdk": "^1.0.0", "psr/container": "^1.1.1|^2.0.1", @@ -190,11 +198,6 @@ "Ecotone\\Laravel\\EcotoneProvider" ] }, - "merge-plugin": { - "include": [ - "local-packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -239,7 +242,6 @@ }, "config": { "allow-plugins": { - "wikimedia/composer-merge-plugin": true, "php-http/discovery": false, "tbachert/spi": false }, diff --git a/docker-compose.yml b/docker-compose.yml index 82c59594b..7e33a353d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,6 @@ services: SQS_DSN: sqs:?key=key&secret=secret®ion=us-east-1&endpoint=http://localstack:4566&version=latest REDIS_DSN: redis://redis:6379 KAFKA_DSN: kafka:9092 - APP_MERGE_PLUGIN: "yes" env_file: - ".env" app8_2: @@ -44,7 +43,6 @@ services: SQS_DSN: sqs:?key=key&secret=secret®ion=us-east-1&endpoint=http://localstack:4566&version=latest REDIS_DSN: redis://redis:6379 KAFKA_DSN: kafka:9092 - APP_MERGE_PLUGIN: "yes" env_file: - ".env" database: diff --git a/local-packages.json b/local-packages.json deleted file mode 100644 index fd62c3f8f..000000000 --- a/local-packages.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "repositories": [ - { - "type": "path", - "url": "packages/Amqp" - }, - { - "type": "path", - "url": "packages/Ecotone" - }, - { - "type": "path", - "url": "packages/Dbal" - }, - { - "type": "path", - "url": "packages/Enqueue" - }, - { - "type": "path", - "url": "packages/PdoEventSourcing" - }, - { - "type": "path", - "url": "packages/JmsConverter" - }, - { - "type": "path", - "url": "packages/Laravel" - }, - { - "type": "path", - "url": "packages/Symfony" - }, - { - "type": "path", - "url": "packages/LiteApplication" - }, - { - "type": "path", - "url": "packages/Kafka" - } - ] -} \ No newline at end of file diff --git a/packages/Amqp/composer.json b/packages/Amqp/composer.json index 2d63cb5ae..d9617db3f 100644 --- a/packages/Amqp/composer.json +++ b/packages/Amqp/composer.json @@ -28,6 +28,15 @@ "domain driven design" ], "description": "AMQP / RabbitMQ transport for Ecotone asynchronous messaging, outbox, and dead letter.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Amqp\\": "src" @@ -51,7 +60,6 @@ "phpunit/phpunit": "^10.5|^11.0", "phpstan/phpstan": "^1.8", "doctrine/annotations": "^1.13|^2.0", - "wikimedia/composer-merge-plugin": "^2.1", "ext-amqp": "*", "enqueue/amqp-ext": "^0.10.18", "enqueue/amqp-lib": "^0.10.25" @@ -89,11 +97,6 @@ "ecotone": { "repository": "amqp" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -106,10 +109,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/DataProtection/composer.json b/packages/DataProtection/composer.json index be1a6861a..d8b99d6bd 100644 --- a/packages/DataProtection/composer.json +++ b/packages/DataProtection/composer.json @@ -23,6 +23,15 @@ "Secure Messages" ], "description": "Field-level encryption and PII masking for Ecotone messages \u2014 GDPR-friendly data protection with crypto-shredding.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\DataProtection\\": "src" @@ -45,8 +54,7 @@ "require-dev": { "ecotone/pdo-event-sourcing": "~1.309.3", "phpunit/phpunit": "^11.0", - "phpstan/phpstan": "^2.1", - "wikimedia/composer-merge-plugin": "^2.1" + "phpstan/phpstan": "^2.1" }, "suggest": { "ext-simplexml": "Required if application/xml is used as serialization media type" @@ -69,11 +77,6 @@ "ecotone": { "repository": "data-protection" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -86,10 +89,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/Dbal/composer.json b/packages/Dbal/composer.json index 2491028a7..91f2b171a 100644 --- a/packages/Dbal/composer.json +++ b/packages/Dbal/composer.json @@ -20,6 +20,15 @@ "ecotone" ], "description": "Doctrine DBAL integration for Ecotone \u2014 database-backed message channel, outbox pattern, dead letter queue, and document store.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Dbal\\": "src", @@ -45,7 +54,6 @@ "doctrine/orm": "^2.11|^3.0", "doctrine/cache": "^1.0.0|^2.0", "doctrine/annotations": "^1.13|^2.0", - "wikimedia/composer-merge-plugin": "^2.1", "ecotone/jms-converter": "~1.309.3", "symfony/expression-language": "^6.4|^7.0|^8.0" }, @@ -64,11 +72,6 @@ "ecotone": { "repository": "dbal" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -82,12 +85,7 @@ }, "release-time": "2026-04-23 17:37:39" }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, "conflict": { "enqueue/dbal": "*" } -} \ No newline at end of file +} diff --git a/packages/Ecotone/composer.json b/packages/Ecotone/composer.json index 67bae51ee..bec17e94f 100644 --- a/packages/Ecotone/composer.json +++ b/packages/Ecotone/composer.json @@ -26,6 +26,15 @@ "event-driven" ], "description": "Enterprise architecture layer for Laravel and Symfony \u2014 CQRS, Event Sourcing, Sagas, Projections, Workflows, and Outbox messaging via PHP attributes.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\": "src" @@ -68,11 +77,6 @@ "ecotone": { "repository": "ecotone" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -87,9 +91,6 @@ "release-time": "2026-04-23 17:37:39" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } + "sort-packages": true } -} \ No newline at end of file +} diff --git a/packages/Enqueue/composer.json b/packages/Enqueue/composer.json index 0a4b793ec..beb73d8e7 100644 --- a/packages/Enqueue/composer.json +++ b/packages/Enqueue/composer.json @@ -20,6 +20,15 @@ "ecotone" ], "description": "Enqueue adapter layer for Ecotone \u2014 shared base for AMQP, Redis, and SQS transports.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Enqueue\\": "src" @@ -40,7 +49,6 @@ "require-dev": { "phpunit/phpunit": "^10.5|^11.0", "phpstan/phpstan": "^1.8", - "wikimedia/composer-merge-plugin": "^2.1", "enqueue/null": "^0.10.18" }, "scripts": { @@ -60,11 +68,6 @@ "ecotone": { "repository": "enqueue" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -77,10 +80,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/JmsConverter/composer.json b/packages/JmsConverter/composer.json index 3ba3d2eaa..ebaa7b96b 100644 --- a/packages/JmsConverter/composer.json +++ b/packages/JmsConverter/composer.json @@ -25,6 +25,15 @@ "converter" ], "description": "JMS Serializer media type converter for Ecotone \u2014 serialize commands, events, and queries with JMS annotations.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\JMSConverter\\": "src" @@ -44,8 +53,7 @@ }, "require-dev": { "phpunit/phpunit": "^10.5|^11.0", - "phpstan/phpstan": "^1.8", - "wikimedia/composer-merge-plugin": "^2.1" + "phpstan/phpstan": "^1.8" }, "scripts": { "tests:phpstan": "vendor/bin/phpstan", @@ -64,11 +72,6 @@ "ecotone": { "repository": "jms-converter" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -83,9 +86,6 @@ "release-time": "2026-04-23 17:37:39" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } + "sort-packages": true } -} \ No newline at end of file +} diff --git a/packages/Kafka/composer.json b/packages/Kafka/composer.json index 639e1af43..9a7e5992f 100644 --- a/packages/Kafka/composer.json +++ b/packages/Kafka/composer.json @@ -19,6 +19,15 @@ "Kafka" ], "description": "Apache Kafka transport for Ecotone asynchronous messaging and Distributed Bus.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Kafka\\": "src" @@ -39,7 +48,6 @@ "phpunit/phpunit": "^10.5|^11.0", "phpstan/phpstan": "^1.8", "psr/container": "^1.1.1|^2.0.1", - "wikimedia/composer-merge-plugin": "^2.1", "kwn/php-rdkafka-stubs": "^2.2" }, "scripts": { @@ -57,11 +65,6 @@ "ecotone": { "repository": "kafka" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -74,10 +77,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/Laravel/composer.json b/packages/Laravel/composer.json index d6c789ae6..bb3546503 100644 --- a/packages/Laravel/composer.json +++ b/packages/Laravel/composer.json @@ -25,6 +25,15 @@ "ddd and cqrs on top of eip" ], "description": "Ecotone for Laravel \u2014 CQRS, Event Sourcing, Sagas, and Workflows on top of Laravel Queue, via PHP attributes.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Laravel\\": "src" @@ -46,7 +55,6 @@ "guzzlehttp/psr7": "^2.0", "phpstan/phpstan": "^1.8", "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0", - "wikimedia/composer-merge-plugin": "^2.1", "symfony/expression-language": "^6.4|^7.0|^8.0", "nesbot/carbon": "^2.71|^3.0", "moneyphp/money": "^4.1.0", @@ -65,11 +73,6 @@ "ecotone": { "repository": "laravel" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -92,10 +95,5 @@ "@tests:phpstan", "@tests:phpunit" ] - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/LiteApplication/composer.json b/packages/LiteApplication/composer.json index 31135780a..075fb53ae 100644 --- a/packages/LiteApplication/composer.json +++ b/packages/LiteApplication/composer.json @@ -25,6 +25,15 @@ "ddd and cqrs on top of eip" ], "description": "Ecotone Lite \u2014 framework-agnostic bootstrap for PSR-11 applications with CQRS, Event Sourcing, Sagas, and Workflows.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Lite\\": "src" @@ -44,8 +53,7 @@ "phpunit/phpunit": "^10.5|^11.0", "guzzlehttp/psr7": "^2.0", "phpstan/phpstan": "^1.8", - "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0" }, "extra": { "branch-alias": { @@ -54,11 +62,6 @@ "ecotone": { "repository": "lite-application" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -81,10 +84,5 @@ "@tests:phpstan", "@tests:phpunit" ] - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/OpenTelemetry/composer.json b/packages/OpenTelemetry/composer.json index a7c5eef69..c387175a5 100644 --- a/packages/OpenTelemetry/composer.json +++ b/packages/OpenTelemetry/composer.json @@ -21,6 +21,15 @@ "tracing" ], "description": "OpenTelemetry distributed tracing for Ecotone \u2014 automatic spans and trace context propagation across sync and async flows.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\OpenTelemetry\\": "src" @@ -40,7 +49,6 @@ "require-dev": { "phpunit/phpunit": "^10.5|^11.0", "phpstan/phpstan": "^1.8", - "wikimedia/composer-merge-plugin": "^2.1", "open-telemetry/transport-grpc": "^1.0.0", "open-telemetry/exporter-otlp": "^1.0.0", "symfony/http-client": "^6.4|^7.0|^8.0", @@ -66,11 +74,6 @@ "ecotone": { "repository": "open-telemetry" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -86,8 +89,7 @@ }, "config": { "allow-plugins": { - "wikimedia/composer-merge-plugin": true, "php-http/discovery": true } } -} \ No newline at end of file +} diff --git a/packages/PdoEventSourcing/composer.json b/packages/PdoEventSourcing/composer.json index 8566220a5..632e7e991 100644 --- a/packages/PdoEventSourcing/composer.json +++ b/packages/PdoEventSourcing/composer.json @@ -20,6 +20,15 @@ "ecotone" ], "description": "PDO-backed Event Store for Ecotone \u2014 event-sourced aggregates, projections, upcasting, and streaming projections (Kafka, RabbitMQ).", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\EventSourcing\\": "src" @@ -39,7 +48,6 @@ "require-dev": { "phpunit/phpunit": "^10.5|^11.0", "phpstan/phpstan": "^1.8", - "wikimedia/composer-merge-plugin": "^2.1", "symfony/process": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", "doctrine/orm": "^2.11|^3.0", @@ -61,11 +69,6 @@ "ecotone": { "repository": "pdo-event-sourcing" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -78,10 +81,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/Redis/composer.json b/packages/Redis/composer.json index e2fbc601b..6fe190c14 100644 --- a/packages/Redis/composer.json +++ b/packages/Redis/composer.json @@ -25,6 +25,15 @@ "redis" ], "description": "Redis transport for Ecotone asynchronous messaging.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Redis\\": "src" @@ -44,8 +53,7 @@ "require-dev": { "phpstan/phpstan": "^1.8", "phpunit/phpunit": "^10.5|^11.0", - "predis/predis": "^1.1.10", - "wikimedia/composer-merge-plugin": "^2.1" + "predis/predis": "^1.1.10" }, "scripts": { "tests:phpstan": "vendor/bin/phpstan", @@ -62,11 +70,6 @@ "ecotone": { "repository": "redis" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -79,10 +82,5 @@ } }, "release-time": "2026-04-23 17:37:39" - }, - "config": { - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } } -} \ No newline at end of file +} diff --git a/packages/Sqs/composer.json b/packages/Sqs/composer.json index 1ddfe9280..5473b68d2 100644 --- a/packages/Sqs/composer.json +++ b/packages/Sqs/composer.json @@ -20,6 +20,15 @@ "Sqs" ], "description": "AWS SQS transport for Ecotone asynchronous messaging.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "Ecotone\\Sqs\\": "src" @@ -39,8 +48,7 @@ }, "require-dev": { "phpunit/phpunit": "^10.5|^11.0", - "phpstan/phpstan": "^1.8", - "wikimedia/composer-merge-plugin": "^2.1" + "phpstan/phpstan": "^1.8" }, "conflict": { "guzzlehttp/promises": "<1.4.0" @@ -60,11 +68,6 @@ "ecotone": { "repository": "sqs" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -79,9 +82,6 @@ "release-time": "2026-04-23 17:37:39" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } + "sort-packages": true } -} \ No newline at end of file +} diff --git a/packages/Symfony/composer.json b/packages/Symfony/composer.json index d11f75c4b..1a8cbdf83 100644 --- a/packages/Symfony/composer.json +++ b/packages/Symfony/composer.json @@ -26,6 +26,15 @@ "distributed architecture" ], "description": "Ecotone for Symfony \u2014 CQRS, Event Sourcing, Sagas, and Workflows on top of Symfony Messenger, via PHP attributes.", + "repositories": [ + { + "type": "path", + "url": "../*", + "options": { + "symlink": true + } + } + ], "require": { "ecotone/ecotone": "~1.309.3", "symfony/console": "^6.4|^7.0|^8.0", @@ -46,17 +55,13 @@ "symfony/monolog-bundle": "^3.10", "symfony/translation": "^6.4|^7.0|^8.0", "symfony/var-exporter": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0", - "wikimedia/composer-merge-plugin": "^2.1" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/proxy-manager-bridge": "<5.4.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } + "sort-packages": true }, "autoload": { "psr-4": { @@ -92,11 +97,6 @@ "ecotone": { "repository": "symfony" }, - "merge-plugin": { - "include": [ - "../local_packages.json" - ] - }, "license-info": { "Apache-2.0": { "name": "Apache License 2.0", @@ -110,4 +110,4 @@ }, "release-time": "2026-04-23 17:37:39" } -} \ No newline at end of file +} diff --git a/packages/local_packages.json b/packages/local_packages.json deleted file mode 100644 index bf61019b7..000000000 --- a/packages/local_packages.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "repositories": [ - { - "type": "path", - "url": "Amqp" - }, - { - "type": "path", - "url": "Ecotone" - }, - { - "type": "path", - "url": "Dbal" - }, - { - "type": "path", - "url": "DataProtection" - }, - { - "type": "path", - "url": "Enqueue" - }, - { - "type": "path", - "url": "PdoEventSourcing" - }, - { - "type": "path", - "url": "JmsConverter" - }, - { - "type": "path", - "url": "Laravel" - }, - { - "type": "path", - "url": "Symfony" - }, - { - "type": "path", - "url": "LiteApplication" - }, - { - "type": "path", - "url": "Kafka" - } - ] -} \ No newline at end of file diff --git a/quickstart-examples/Asynchronous/composer.json b/quickstart-examples/Asynchronous/composer.json index 7b5678617..501d39644 100644 --- a/quickstart-examples/Asynchronous/composer.json +++ b/quickstart-examples/Asynchronous/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Asynchronous\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-amqp-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/AuthoritativeClassmap/composer.json b/quickstart-examples/AuthoritativeClassmap/composer.json index 1e6ef4536..69c120398 100644 --- a/quickstart-examples/AuthoritativeClassmap/composer.json +++ b/quickstart-examples/AuthoritativeClassmap/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\": "src" @@ -19,8 +28,7 @@ "ecotone/lite-amqp-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "scripts": { "tests:ci": [ @@ -30,17 +38,7 @@ ] }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/BuildingBlocks/composer.json b/quickstart-examples/BuildingBlocks/composer.json index e478b5006..523925235 100644 --- a/quickstart-examples/BuildingBlocks/composer.json +++ b/quickstart-examples/BuildingBlocks/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\": "src" @@ -25,21 +34,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/BusinessInterface/Asynchronous/composer.json b/quickstart-examples/BusinessInterface/Asynchronous/composer.json index 02d747baa..01359c2a2 100644 --- a/quickstart-examples/BusinessInterface/Asynchronous/composer.json +++ b/quickstart-examples/BusinessInterface/Asynchronous/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\BusinessInterface\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/BusinessInterface/Routing/composer.json b/quickstart-examples/BusinessInterface/Routing/composer.json index 02d747baa..01359c2a2 100644 --- a/quickstart-examples/BusinessInterface/Routing/composer.json +++ b/quickstart-examples/BusinessInterface/Routing/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\BusinessInterface\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/BusinessInterface/ServiceActivator/composer.json b/quickstart-examples/BusinessInterface/ServiceActivator/composer.json index 02d747baa..01359c2a2 100644 --- a/quickstart-examples/BusinessInterface/ServiceActivator/composer.json +++ b/quickstart-examples/BusinessInterface/ServiceActivator/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\BusinessInterface\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/CQRS/composer.json b/quickstart-examples/CQRS/composer.json index bb6b55865..2cd5510b2 100644 --- a/quickstart-examples/CQRS/composer.json +++ b/quickstart-examples/CQRS/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\CQRS\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-application-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/ConsoleCommand/Laravel/composer.json b/quickstart-examples/ConsoleCommand/Laravel/composer.json index fb9a725f2..3bda28cea 100644 --- a/quickstart-examples/ConsoleCommand/Laravel/composer.json +++ b/quickstart-examples/ConsoleCommand/Laravel/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -19,21 +28,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/ConsoleCommand/Symfony/composer.json b/quickstart-examples/ConsoleCommand/Symfony/composer.json index 0ec8a3770..3fd81009e 100644 --- a/quickstart-examples/ConsoleCommand/Symfony/composer.json +++ b/quickstart-examples/ConsoleCommand/Symfony/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -19,21 +28,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Conversion/composer.json b/quickstart-examples/Conversion/composer.json index 942265db6..ff555be12 100644 --- a/quickstart-examples/Conversion/composer.json +++ b/quickstart-examples/Conversion/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Conversion\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/EmittingEventsFromProjection/composer.json b/quickstart-examples/EmittingEventsFromProjection/composer.json index 6726aabbe..edf3691f7 100644 --- a/quickstart-examples/EmittingEventsFromProjection/composer.json +++ b/quickstart-examples/EmittingEventsFromProjection/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\": "src/" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/ErrorHandling/composer.json b/quickstart-examples/ErrorHandling/composer.json index 31b0b46f1..38556f35f 100644 --- a/quickstart-examples/ErrorHandling/composer.json +++ b/quickstart-examples/ErrorHandling/composer.json @@ -1,6 +1,15 @@ { "name": "ecotone/quickstart", "license": "MIT", + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/EventHandling/composer.json b/quickstart-examples/EventHandling/composer.json index e9fc5cd65..941bfbb8a 100644 --- a/quickstart-examples/EventHandling/composer.json +++ b/quickstart-examples/EventHandling/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\EventHandling\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-application-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/EventProjecting/PartitionedProjection/composer.json b/quickstart-examples/EventProjecting/PartitionedProjection/composer.json index 404cd09c8..9a057434f 100644 --- a/quickstart-examples/EventProjecting/PartitionedProjection/composer.json +++ b/quickstart-examples/EventProjecting/PartitionedProjection/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\EventProjecting\\PartitionedProjection\\": "src" @@ -18,23 +27,11 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true } - diff --git a/quickstart-examples/EventSourcing/composer.json b/quickstart-examples/EventSourcing/composer.json index a3cb48d73..2fba0ed43 100644 --- a/quickstart-examples/EventSourcing/composer.json +++ b/quickstart-examples/EventSourcing/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\EventSourcing\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-event-sourcing-starter": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MessageBroker/composer.json b/quickstart-examples/MessageBroker/composer.json index 3b669bc13..54ed25db7 100644 --- a/quickstart-examples/MessageBroker/composer.json +++ b/quickstart-examples/MessageBroker/composer.json @@ -7,28 +7,25 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "require": { "ecotone/lite-amqp-starter": "^1.0.1", "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true } - diff --git a/quickstart-examples/Microservices/composer.json b/quickstart-examples/Microservices/composer.json index bcdbd8149..8c1e0fcfa 100644 --- a/quickstart-examples/Microservices/composer.json +++ b/quickstart-examples/Microservices/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Microservices\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-amqp-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MicroservicesAdvanced/composer.json b/quickstart-examples/MicroservicesAdvanced/composer.json index b8cb80753..556a46315 100644 --- a/quickstart-examples/MicroservicesAdvanced/composer.json +++ b/quickstart-examples/MicroservicesAdvanced/composer.json @@ -7,6 +7,15 @@ "email": "support@simplycodedsoftware.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Microservices\\BackofficeService\\": "BackofficeService/src", @@ -19,21 +28,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/General/HookIntoTenantSwitch/composer.json b/quickstart-examples/MultiTenant/General/HookIntoTenantSwitch/composer.json index 5f85720f5..32fbb55f9 100644 --- a/quickstart-examples/MultiTenant/General/HookIntoTenantSwitch/composer.json +++ b/quickstart-examples/MultiTenant/General/HookIntoTenantSwitch/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -18,21 +27,10 @@ "ecotone/lite-dbal-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/General/MessageBusForMultipleTenants/composer.json b/quickstart-examples/MultiTenant/General/MessageBusForMultipleTenants/composer.json index b070925ff..76d97cbbc 100644 --- a/quickstart-examples/MultiTenant/General/MessageBusForMultipleTenants/composer.json +++ b/quickstart-examples/MultiTenant/General/MessageBusForMultipleTenants/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -17,21 +26,10 @@ "ecotone/lite-dbal-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Laravel/Aggregate/composer.json b/quickstart-examples/MultiTenant/Laravel/Aggregate/composer.json index 546330d70..432b2e5f3 100644 --- a/quickstart-examples/MultiTenant/Laravel/Aggregate/composer.json +++ b/quickstart-examples/MultiTenant/Laravel/Aggregate/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -18,21 +27,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Laravel/AsynchronousEvents/composer.json b/quickstart-examples/MultiTenant/Laravel/AsynchronousEvents/composer.json index e62f59107..c8e68f8f2 100644 --- a/quickstart-examples/MultiTenant/Laravel/AsynchronousEvents/composer.json +++ b/quickstart-examples/MultiTenant/Laravel/AsynchronousEvents/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -19,21 +28,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Laravel/EventSourcing/composer.json b/quickstart-examples/MultiTenant/Laravel/EventSourcing/composer.json index 16f6d0941..1e59ed626 100644 --- a/quickstart-examples/MultiTenant/Laravel/EventSourcing/composer.json +++ b/quickstart-examples/MultiTenant/Laravel/EventSourcing/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -20,21 +29,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Laravel/Events/composer.json b/quickstart-examples/MultiTenant/Laravel/Events/composer.json index 546330d70..432b2e5f3 100644 --- a/quickstart-examples/MultiTenant/Laravel/Events/composer.json +++ b/quickstart-examples/MultiTenant/Laravel/Events/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -18,21 +27,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Laravel/MessageBus/composer.json b/quickstart-examples/MultiTenant/Laravel/MessageBus/composer.json index 546330d70..432b2e5f3 100644 --- a/quickstart-examples/MultiTenant/Laravel/MessageBus/composer.json +++ b/quickstart-examples/MultiTenant/Laravel/MessageBus/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "app" @@ -18,21 +27,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Symfony/Aggregate/composer.json b/quickstart-examples/MultiTenant/Symfony/Aggregate/composer.json index 03899345e..5d77d5222 100644 --- a/quickstart-examples/MultiTenant/Symfony/Aggregate/composer.json +++ b/quickstart-examples/MultiTenant/Symfony/Aggregate/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -21,21 +30,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Symfony/AsynchronousEvents/composer.json b/quickstart-examples/MultiTenant/Symfony/AsynchronousEvents/composer.json index de38eae64..5ef5aa427 100644 --- a/quickstart-examples/MultiTenant/Symfony/AsynchronousEvents/composer.json +++ b/quickstart-examples/MultiTenant/Symfony/AsynchronousEvents/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -22,21 +31,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Symfony/EventSourcing/composer.json b/quickstart-examples/MultiTenant/Symfony/EventSourcing/composer.json index a47e914e0..a6b337a9d 100644 --- a/quickstart-examples/MultiTenant/Symfony/EventSourcing/composer.json +++ b/quickstart-examples/MultiTenant/Symfony/EventSourcing/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -23,21 +32,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Symfony/Events/composer.json b/quickstart-examples/MultiTenant/Symfony/Events/composer.json index 03899345e..5d77d5222 100644 --- a/quickstart-examples/MultiTenant/Symfony/Events/composer.json +++ b/quickstart-examples/MultiTenant/Symfony/Events/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -21,21 +30,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/MultiTenant/Symfony/MessageBus/composer.json b/quickstart-examples/MultiTenant/Symfony/MessageBus/composer.json index 03899345e..5d77d5222 100644 --- a/quickstart-examples/MultiTenant/Symfony/MessageBus/composer.json +++ b/quickstart-examples/MultiTenant/Symfony/MessageBus/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\MultiTenant\\": "src" @@ -21,21 +30,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/OutboxPattern/composer.json b/quickstart-examples/OutboxPattern/composer.json index 8d6c85ecb..e89f78bb4 100644 --- a/quickstart-examples/OutboxPattern/composer.json +++ b/quickstart-examples/OutboxPattern/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\OutboxPattern\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-dbal-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/RefactorToReactiveSystem/composer.json b/quickstart-examples/RefactorToReactiveSystem/composer.json index ed5a7bdb1..63fca75cd 100644 --- a/quickstart-examples/RefactorToReactiveSystem/composer.json +++ b/quickstart-examples/RefactorToReactiveSystem/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\ReactiveSystem\\": "src" @@ -19,21 +28,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Schedule/composer.json b/quickstart-examples/Schedule/composer.json index 4a3647ad8..adb1f9afa 100644 --- a/quickstart-examples/Schedule/composer.json +++ b/quickstart-examples/Schedule/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Schedule\\": "src" @@ -16,21 +25,10 @@ "ecotone/lite-dbal-starter": "^1.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/StatefulProjection/composer.json b/quickstart-examples/StatefulProjection/composer.json index 6726aabbe..edf3691f7 100644 --- a/quickstart-examples/StatefulProjection/composer.json +++ b/quickstart-examples/StatefulProjection/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\": "src/" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Testing/composer.json b/quickstart-examples/Testing/composer.json index 184d02808..cb7e25460 100755 --- a/quickstart-examples/Testing/composer.json +++ b/quickstart-examples/Testing/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Testing\\": "src" @@ -23,21 +32,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Workflows/AsynchronousStateless/composer.json b/quickstart-examples/Workflows/AsynchronousStateless/composer.json index c16dbc653..650ad6bee 100644 --- a/quickstart-examples/Workflows/AsynchronousStateless/composer.json +++ b/quickstart-examples/Workflows/AsynchronousStateless/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Workflow\\": "src" @@ -23,21 +32,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Workflows/Saga/composer.json b/quickstart-examples/Workflows/Saga/composer.json index f2a8a55e8..4814a5869 100644 --- a/quickstart-examples/Workflows/Saga/composer.json +++ b/quickstart-examples/Workflows/Saga/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Workflow\\Saga\\": "src" @@ -26,21 +35,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/Workflows/SynchronousStateless/composer.json b/quickstart-examples/Workflows/SynchronousStateless/composer.json index c16dbc653..650ad6bee 100644 --- a/quickstart-examples/Workflows/SynchronousStateless/composer.json +++ b/quickstart-examples/Workflows/SynchronousStateless/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\Workflow\\": "src" @@ -23,21 +32,10 @@ }, "require-dev": { "doctrine/orm": "^2.11|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true diff --git a/quickstart-examples/WorkingWithAggregateDirectly/composer.json b/quickstart-examples/WorkingWithAggregateDirectly/composer.json index f72d74b7a..7d3dba5a3 100644 --- a/quickstart-examples/WorkingWithAggregateDirectly/composer.json +++ b/quickstart-examples/WorkingWithAggregateDirectly/composer.json @@ -7,6 +7,15 @@ "email": "dgafka.mail@gmail.com" } ], + "repositories": [ + { + "type": "path", + "url": "../../packages/*", + "options": { + "symlink": true + } + } + ], "autoload": { "psr-4": { "App\\WorkingWithAggregateDirectly\\": "src" @@ -17,21 +26,10 @@ "ramsey/uuid": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6|^10.5|^11.0", - "wikimedia/composer-merge-plugin": "^2.1" + "phpunit/phpunit": "^9.6|^10.5|^11.0" }, "config": { - "sort-packages": true, - "allow-plugins": { - "wikimedia/composer-merge-plugin": true - } - }, - "extra": { - "merge-plugin": { - "include": [ - "../../packages/local_packages.json" - ] - } + "sort-packages": true }, "minimum-stability": "dev", "prefer-stable": true From 52a1af95665c0133d3c4d9d76316051cb9aaba06 Mon Sep 17 00:00:00 2001 From: Dariusz Gafka Date: Wed, 6 May 2026 21:17:34 +0200 Subject: [PATCH 2/2] fix: strip path repositories from composer.json on package split MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new top-level repositories wildcard works inside the monorepo, but points to nonexistent paths once the directory is split into a standalone repo. For package splits (../*) it falls through silently, but the quickstart-examples split (../../packages/*) refers to a parent directory that does not exist next to a clone of the split repo, which made composer install fail hard with "the url supplied for the path repository does not exist". Add a release-time helper that strips type=path entries from every composer.json under the package directory and run it in the split job before invoking the split action. Monorepo composer.jsons are unaffected — the strip only runs on the in-memory checkout used by the split job. --- .github/workflows/release.yml | 3 +++ bin/strip-monorepo-repositories.php | 42 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 bin/strip-monorepo-repositories.php diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2aeecfcd9..41f09f852 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,6 +171,9 @@ jobs: run: | echo "${{ secrets.ECOTONE_ENTERPRISE_PUBLIC_KEY }}" > ${{ matrix.package.directory }}/src/Messaging/Config/Licence/key.pem + - name: Strip monorepo-only path repositories from composer.json + run: php bin/strip-monorepo-repositories.php "${{ matrix.package.directory }}" + - uses: "danharrin/monorepo-split-github-action@v2.4.0" if: "startsWith(github.ref, 'refs/tags/')" diff --git a/bin/strip-monorepo-repositories.php b/bin/strip-monorepo-repositories.php new file mode 100644 index 000000000..54b08bd40 --- /dev/null +++ b/bin/strip-monorepo-repositories.php @@ -0,0 +1,42 @@ +#!/usr/bin/env php + $current->getFilename() !== 'vendor' + ) +); + +foreach ($iterator as $file) { + if ($file->getFilename() !== 'composer.json') { + continue; + } + + $path = $file->getPathname(); + $composer = json_decode(file_get_contents($path), true); + if (!is_array($composer) || !isset($composer['repositories'])) { + continue; + } + + $composer['repositories'] = array_values(array_filter( + $composer['repositories'], + fn ($repository) => ($repository['type'] ?? null) !== 'path' + )); + + if (empty($composer['repositories'])) { + unset($composer['repositories']); + } + + file_put_contents( + $path, + json_encode($composer, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "\n" + ); + + echo "stripped: $path\n"; +}