diff --git a/bard.json b/bard.json
index ca59433a..5328dfba 100644
--- a/bard.json
+++ b/bard.json
@@ -47,7 +47,10 @@
},
{
"path": "src/SonsOfPHP/Bundle/Cqrs",
- "repository": "git@github.com:SonsOfPHP/cqrs-bundle.git"
+ "repository": "git@github.com:SonsOfPHP/cqrs-bundle.git",
+ "config": {
+ "merge": false
+ }
},
{
"path": "src/SonsOfPHP/Bridge/Symfony/Cqrs",
@@ -188,6 +191,13 @@
{
"path": "src/SonsOfPHP/Contract/Version",
"repository": "git@github.com:SonsOfPHP/version-contract.git"
+ },
+ {
+ "path": "src/SonsOfPHP/Bundle/FeatureToggleBundle",
+ "repository": "git@github.com:SonsOfPHP/feature-toggle-bundle.git",
+ "config": {
+ "merge": false
+ }
}
]
-}
\ No newline at end of file
+}
diff --git a/composer.json b/composer.json
index bac2561a..2b06555c 100644
--- a/composer.json
+++ b/composer.json
@@ -12,6 +12,10 @@
"homepage": "https://github.com/SonsOfPHP",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
@@ -79,11 +83,8 @@
"psr/log": "^2.0 || ^3.0",
"psr/simple-cache": "^2.0 || ^3.0",
"symfony/console": "^4 || ^5 || ^6 || ^7",
- "symfony/dependency-injection": "^5 || ^6 || ^7",
"symfony/dotenv": "^5 || ^6 || ^7",
"symfony/finder": "^5 || ^6 || ^7",
- "symfony/http-kernel": "^5 || ^6 || ^7",
- "symfony/messenger": "^5 || ^6 || ^7",
"symfony/options-resolver": "^6 || ^7",
"symfony/process": "^5 || ^6 || ^7",
"symfony/security-bundle": "^6 || ^7",
@@ -100,7 +101,6 @@
"sonsofphp/cookie": "self.version",
"sonsofphp/cookie-contract": "self.version",
"sonsofphp/cqrs": "self.version",
- "sonsofphp/cqrs-bundle": "self.version",
"sonsofphp/cqrs-contract": "self.version",
"sonsofphp/cqrs-symfony": "self.version",
"sonsofphp/event-dispatcher": "self.version",
@@ -150,7 +150,6 @@
"src/SonsOfPHP/Component/Container/Tests",
"src/SonsOfPHP/Component/Cookie/Tests",
"src/SonsOfPHP/Component/Cqrs/Tests",
- "src/SonsOfPHP/Bundle/Cqrs/Tests",
"src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests",
"src/SonsOfPHP/Bridge/Symfony/EventSourcing/Tests",
"src/SonsOfPHP/Bridge/Twig/Money/Tests",
@@ -186,7 +185,6 @@
"SonsOfPHP\\Bridge\\Symfony\\Cqrs\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs",
"SonsOfPHP\\Bridge\\Symfony\\EventSourcing\\": "src/SonsOfPHP/Bridge/Symfony/EventSourcing",
"SonsOfPHP\\Bridge\\Twig\\Money\\": "src/SonsOfPHP/Bridge/Twig/Money",
- "SonsOfPHP\\Bundle\\Cqrs\\": "src/SonsOfPHP/Bundle/Cqrs",
"SonsOfPHP\\Component\\Assert\\": "src/SonsOfPHP/Component/Assert",
"SonsOfPHP\\Component\\Cache\\": "src/SonsOfPHP/Component/Cache",
"SonsOfPHP\\Component\\Clock\\": "src/SonsOfPHP/Component/Clock",
@@ -234,13 +232,13 @@
"require-dev": {
"phpunit/phpunit": "^10.4",
"symfony/http-foundation": "^5 || ^6 || ^7",
+ "symfony/messenger": "^5 || ^6 || ^7",
"symfony/serializer": "^5 || ^6 || ^7"
},
"autoload-dev": {
"psr-4": {
"SonsOfPHP\\Bard\\Tests\\": "src/SonsOfPHP/Bard/Tests",
- "SonsOfPHP\\Bridge\\Symfony\\Cqrs\\Tests\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests",
- "SonsOfPHP\\Bundle\\Cqrs\\Tests\\": "src/SonsOfPHP/Bundle/Cqrs/Tests"
+ "SonsOfPHP\\Bridge\\Symfony\\Cqrs\\Tests\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests"
}
},
"scripts": {
diff --git a/src/SonsOfPHP/Bard/composer.json b/src/SonsOfPHP/Bard/composer.json
index e59ba433..e2a014a6 100644
--- a/src/SonsOfPHP/Bard/composer.json
+++ b/src/SonsOfPHP/Bard/composer.json
@@ -52,6 +52,10 @@
"docs": "https://docs.sonsofphp.com"
},
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php b/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php
index 64d2e1aa..2373f385 100644
--- a/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php
+++ b/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php
@@ -70,6 +70,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int
;
foreach ($this->bardConfig->getSection('packages') as $pkg) {
+ if (array_key_exists('config', $pkg) && array_key_exists('merge', $pkg['config']) && false === $pkg['config']['merge']) {
+ // Do not merge this package
+ continue;
+ }
+
$pkgComposerFile = realpath($input->getOption('working-dir') . '/' . $pkg['path'] . '/composer.json');
if (!file_exists($pkgComposerFile)) {
$output->writeln(sprintf('No "%s" found, skipping', $pkgComposerFile));
@@ -116,6 +121,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$io->text(sprintf('Updated "%s"', $rootComposerJsonFile->getRealPath()));
}
+ // @todo if not dry-run, run composer dump
+
$io->success('Merge Complete');
return self::SUCCESS;
diff --git a/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json b/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json
index 45a86403..d17e20a6 100644
--- a/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json
+++ b/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/filesystem-aws",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json
index b3de330d..5a57913d 100644
--- a/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json
+++ b/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/pager-doctrine-collections",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json
index 4be23a91..ab9c3be8 100644
--- a/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json
+++ b/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/pager-doctrine-dbal",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json b/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json
index f7b20945..06c8ae47 100644
--- a/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json
+++ b/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/event-sourcing",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json
index 6564c490..fccc2dee 100644
--- a/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json
+++ b/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/pager-doctrine-orm",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json b/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json
index ca625487..27699010 100644
--- a/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json
+++ b/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/filesystem-liip-imagine",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json b/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json
index 5fbb3a48..88e0ccbf 100644
--- a/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json
+++ b/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json
@@ -12,6 +12,10 @@
"homepage": "https://github.com/SonsOfPHP/cqrs-symfony",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json b/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json
index 8eceb2ff..6376cd05 100644
--- a/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json
+++ b/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/event-sourcing-symfony",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bridge/Twig/Money/composer.json b/src/SonsOfPHP/Bridge/Twig/Money/composer.json
index 0ae8d638..373cff8e 100644
--- a/src/SonsOfPHP/Bridge/Twig/Money/composer.json
+++ b/src/SonsOfPHP/Bridge/Twig/Money/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/money",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE b/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE
new file mode 100644
index 00000000..39238382
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE
@@ -0,0 +1,19 @@
+Copyright 2022 to Present Joshua Estes
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md b/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md
new file mode 100644
index 00000000..dc962281
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+# Sons of PHP
+
+Sons of PHP is builds reusable components and tools using PHP.
+
+* Documentation can be found at [docs.SonsOfPHP.com][docs]
+* Please [Report Issues][issues] and send [Pull Requests][pull-requests] in the [Mother Repository][mother-repo]
+* You can get more help by posting questions in the [GitHub Discussions][discussions]
+
+[mother-repo]: "Sons of PHP Mother Repository"
+[discussions]: https://github.com/orgs/SonsOfPHP/discussions
+[issues]: https://github.com/SonsOfPHP/sonsofphp/issues
+[pull-requests]: https://github.com/SonsOfPHP/sonsofphp/pulls
+[docs]: https://docs.sonsofphp.com
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json b/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json
new file mode 100644
index 00000000..9ba60a3a
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json
@@ -0,0 +1,56 @@
+{
+ "name": "sonsofphp/feature-toggle-bundle",
+ "type": "symfony-bundle",
+ "description": "Sons of PHP | Feature Toggle Bundle",
+ "keywords": [
+ "sonsofphp",
+ "sons of php",
+ "feature",
+ "toggle",
+ "feature toggle",
+ "symfony"
+ ],
+ "homepage": "https://github.com/SonsOfPHP/feature-toggle-bundle",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Joshua Estes",
+ "email": "joshua@sonsofphp.com"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/SonsOfPHP/sonsofphp/issues",
+ "forum": "https://github.com/orgs/SonsOfPHP/discussions",
+ "docs": "https://docs.sonsofphp.com/symfony-bundles/feature-toggle"
+ },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/JoshuaEstes"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/subscription/pkg/packagist-sonsofphp-sonsofphp"
+ }
+ ],
+ "require": {
+ "php": ">=8.2",
+ "sonsofphp/feature-toggle": "^0.3@dev"
+ },
+ "autoload": {
+ "psr-4": {
+ "SonsOfPHP\\Bundle\\FeatureToggleBundle\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "SonsOfPHP\\Bundle\\FeatureToggleBundle\\Tests\\": "tests/"
+ }
+ },
+ "extra": {
+ "sort-packages": true,
+ "branch-alias": {
+ "dev-main": "0.3.x-dev"
+ }
+ }
+}
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml b/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml
new file mode 100644
index 00000000..390a61c8
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml
@@ -0,0 +1,40 @@
+services:
+ SonsOfPHP\Bundle\FeatureToggleBundle\Command\DebugCommand:
+ arguments: ['@sons_of_php.feature_toggle.provider']
+ tags:
+ - { name: 'console.command' }
+
+ SonsOfPHP\Bundle\FeatureToggleBundle\Twig\Extension\FeatureToggleExtension:
+ tags:
+ - { name: 'twig.extension' }
+
+ SonsOfPHP\Bundle\FeatureToggleBundle\Twig\Runtime\FeatureToggleExtensionRuntime:
+ arguments: ['@sons_of_php.feature_toggle.provider']
+ tags:
+ - { name: 'twig.runtime' }
+
+ SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysDisabledToggle:
+ tags:
+ - { name: 'sons_of_php.feature_toggle.toggle' }
+
+ sons_of_php.feature_toggle.toggle.disabled:
+ alias: SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysDisabledToggle
+ public: true
+
+ SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysEnabledToggle:
+ tags:
+ - { name: 'sons_of_php.feature_toggle.toggle' }
+
+ sons_of_php.feature_toggle.toggle.enabled:
+ alias: SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysEnabledToggle
+ public: true
+
+ # The provider contains all the different features and their toggles Default
+ # provider should be a chain provider so that users can define additional
+ # providers
+ SonsOfPHP\Contract\FeatureToggle\FeatureToggleProviderInterface:
+ class: SonsOfPHP\Component\FeatureToggle\Provider\InMemoryFeatureToggleProvider
+
+ sons_of_php.feature_toggle.provider:
+ alias: SonsOfPHP\Contract\FeatureToggle\FeatureToggleProviderInterface
+ public: true
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php
new file mode 100644
index 00000000..d57c08fb
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php
@@ -0,0 +1,7 @@
+setName('debug:features')
+ ->setDescription('Debug feature toggles')
+ ;
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $symfonyStyle = new SymfonyStyle($input, $output);
+
+ $header = ['Key', 'Toggle'];
+ $rows = [];
+ $toggle = new \ReflectionProperty(Feature::class, 'toggle');
+ foreach ($this->provider->all() as $key => $feature) {
+ $rows[] = [$key, $toggle->getValue($feature)::class];
+ }
+
+ $symfonyStyle->table($header, $rows);
+
+ return Command::SUCCESS;
+ }
+}
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php
new file mode 100644
index 00000000..e12a00c9
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php
@@ -0,0 +1,26 @@
+has('sons_of_php.feature_toggle.provider')) {
+ return;
+ }
+
+ $provider = $container->findDefinition('sons_of_php.feature_toggle.provider');
+ $features = $container->findTaggedServiceIds('sons_of_php.feature_toggle.feature');
+
+ foreach (array_keys($features) as $id) {
+ $provider->addMethodCall('add', [new Reference($id)]);
+ }
+ }
+}
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php
new file mode 100644
index 00000000..8eedef3d
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php
@@ -0,0 +1,73 @@
+rootNode()->children()
+ // @todo
+ //->scalarNode('provider')
+ // ->defaultValue('sons_of_php.feature_toggle.provider')
+ //->end() // provider
+ ->arrayNode('features')
+ ->info('Features contains a list of features by "key" and the toggle the feature uses')
+ ->useAttributeAsKey('key')
+ ->arrayPrototype()
+ ->children()
+ ->scalarNode('toggle')
+ ->info('Can be "enabled", "disabled", or a service')
+ ->isRequired()
+ ->cannotBeEmpty()
+ ->defaultValue('sons_of_php.feature_toggle.toggle.enabled')
+ ->end()
+ ->end()
+ ->end()
+ ->end() // features
+ ->end();
+ }
+
+ public function build(ContainerBuilder $container): void
+ {
+ $container->registerForAutoconfiguration(AsFeature::class)->addTag('sons_of_php.feature_toggle.feature');
+ $container->addCompilerPass(new FeaturePass());
+ }
+
+ public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
+ {
+ $container->import('../config/services.yaml');
+
+ foreach ($config['features'] as $key => $value) {
+ $value['toggle'] = match ($value['toggle']) {
+ 'enabled' => 'sons_of_php.feature_toggle.toggle.enabled',
+ 'disabled' => 'sons_of_php.feature_toggle.toggle.disabled',
+ default => $value['toggle'],
+ };
+
+ $feature = $container->services()->set('sons_of_php.feature_toggle.feature.' . $key, Feature::class);
+ $feature->arg(0, $key);
+ $feature->arg(1, new Reference($value['toggle']));
+ $feature->tag('sons_of_php.feature_toggle.feature');
+ }
+ }
+}
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php
new file mode 100644
index 00000000..52f290db
--- /dev/null
+++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php
@@ -0,0 +1,19 @@
+provider->get($key)->isEnabled();
+ }
+}
diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/tests/.gitignore b/src/SonsOfPHP/Bundle/FeatureToggleBundle/tests/.gitignore
new file mode 100644
index 00000000..e69de29b
diff --git a/src/SonsOfPHP/Component/Assert/composer.json b/src/SonsOfPHP/Component/Assert/composer.json
index 174e1024..25387d75 100644
--- a/src/SonsOfPHP/Component/Assert/composer.json
+++ b/src/SonsOfPHP/Component/Assert/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/assert",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Cache/composer.json b/src/SonsOfPHP/Component/Cache/composer.json
index 7fb9e02c..0b3b9cff 100644
--- a/src/SonsOfPHP/Component/Cache/composer.json
+++ b/src/SonsOfPHP/Component/Cache/composer.json
@@ -11,6 +11,10 @@
"homepage": "https://github.com/SonsOfPHP/cache",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Clock/composer.json b/src/SonsOfPHP/Component/Clock/composer.json
index 4c675f88..75be26f9 100644
--- a/src/SonsOfPHP/Component/Clock/composer.json
+++ b/src/SonsOfPHP/Component/Clock/composer.json
@@ -16,6 +16,10 @@
"homepage": "https://github.com/SonsOfPHP/clock",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Container/composer.json b/src/SonsOfPHP/Component/Container/composer.json
index e7bb3f49..0b49c857 100644
--- a/src/SonsOfPHP/Component/Container/composer.json
+++ b/src/SonsOfPHP/Component/Container/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/container",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Cookie/composer.json b/src/SonsOfPHP/Component/Cookie/composer.json
index 5bbe7384..97464bc8 100644
--- a/src/SonsOfPHP/Component/Cookie/composer.json
+++ b/src/SonsOfPHP/Component/Cookie/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/cookie",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Cqrs/composer.json b/src/SonsOfPHP/Component/Cqrs/composer.json
index ee4625b2..d7e31c04 100644
--- a/src/SonsOfPHP/Component/Cqrs/composer.json
+++ b/src/SonsOfPHP/Component/Cqrs/composer.json
@@ -12,6 +12,10 @@
"homepage": "https://github.com/SonsOfPHP/cqrs",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/EventDispatcher/composer.json b/src/SonsOfPHP/Component/EventDispatcher/composer.json
index 221a1bfb..fce147a5 100644
--- a/src/SonsOfPHP/Component/EventDispatcher/composer.json
+++ b/src/SonsOfPHP/Component/EventDispatcher/composer.json
@@ -9,6 +9,10 @@
"homepage": "https://github.com/SonsOfPHP/event-dispatcher",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/EventSourcing/composer.json b/src/SonsOfPHP/Component/EventSourcing/composer.json
index 3407f560..18e9a546 100644
--- a/src/SonsOfPHP/Component/EventSourcing/composer.json
+++ b/src/SonsOfPHP/Component/EventSourcing/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/event-sourcing",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/FeatureToggle/composer.json b/src/SonsOfPHP/Component/FeatureToggle/composer.json
index c9665f21..88340cf8 100644
--- a/src/SonsOfPHP/Component/FeatureToggle/composer.json
+++ b/src/SonsOfPHP/Component/FeatureToggle/composer.json
@@ -14,6 +14,10 @@
"homepage": "https://github.com/SonsOfPHP/feature-toggle",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Filesystem/composer.json b/src/SonsOfPHP/Component/Filesystem/composer.json
index 2543bb22..3987ca1e 100644
--- a/src/SonsOfPHP/Component/Filesystem/composer.json
+++ b/src/SonsOfPHP/Component/Filesystem/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/filesystem",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/HttpFactory/composer.json b/src/SonsOfPHP/Component/HttpFactory/composer.json
index 69789822..ebe75d0d 100644
--- a/src/SonsOfPHP/Component/HttpFactory/composer.json
+++ b/src/SonsOfPHP/Component/HttpFactory/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/http-factory",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/HttpHandler/composer.json b/src/SonsOfPHP/Component/HttpHandler/composer.json
index b2034ec7..543dfb3f 100644
--- a/src/SonsOfPHP/Component/HttpHandler/composer.json
+++ b/src/SonsOfPHP/Component/HttpHandler/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/http-handler",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/HttpMessage/composer.json b/src/SonsOfPHP/Component/HttpMessage/composer.json
index b567b6ed..9c146ef2 100644
--- a/src/SonsOfPHP/Component/HttpMessage/composer.json
+++ b/src/SonsOfPHP/Component/HttpMessage/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/http-message",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Json/composer.json b/src/SonsOfPHP/Component/Json/composer.json
index 34a5cc72..513a8aad 100644
--- a/src/SonsOfPHP/Component/Json/composer.json
+++ b/src/SonsOfPHP/Component/Json/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/json",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Link/composer.json b/src/SonsOfPHP/Component/Link/composer.json
index a67e2e84..b2ea8986 100644
--- a/src/SonsOfPHP/Component/Link/composer.json
+++ b/src/SonsOfPHP/Component/Link/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/link",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Logger/composer.json b/src/SonsOfPHP/Component/Logger/composer.json
index 22a0ac23..dad7d27b 100644
--- a/src/SonsOfPHP/Component/Logger/composer.json
+++ b/src/SonsOfPHP/Component/Logger/composer.json
@@ -10,6 +10,10 @@
"homepage": "https://github.com/SonsOfPHP/logger",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Mailer/composer.json b/src/SonsOfPHP/Component/Mailer/composer.json
index 17ead7f4..9120df11 100644
--- a/src/SonsOfPHP/Component/Mailer/composer.json
+++ b/src/SonsOfPHP/Component/Mailer/composer.json
@@ -8,6 +8,10 @@
"homepage": "https://github.com/SonsOfPHP/mailer",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Money/composer.json b/src/SonsOfPHP/Component/Money/composer.json
index 0210f5ef..5ee73e4c 100644
--- a/src/SonsOfPHP/Component/Money/composer.json
+++ b/src/SonsOfPHP/Component/Money/composer.json
@@ -11,6 +11,10 @@
"homepage": "https://github.com/SonsOfPHP/money",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Pager/composer.json b/src/SonsOfPHP/Component/Pager/composer.json
index 1eec4d52..36547d3e 100644
--- a/src/SonsOfPHP/Component/Pager/composer.json
+++ b/src/SonsOfPHP/Component/Pager/composer.json
@@ -9,6 +9,10 @@
"homepage": "https://github.com/SonsOfPHP/pager",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Registry/composer.json b/src/SonsOfPHP/Component/Registry/composer.json
index 9d2fc34d..d1449ad9 100644
--- a/src/SonsOfPHP/Component/Registry/composer.json
+++ b/src/SonsOfPHP/Component/Registry/composer.json
@@ -9,6 +9,10 @@
"homepage": "https://github.com/SonsOfPHP/registry",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/StateMachine/composer.json b/src/SonsOfPHP/Component/StateMachine/composer.json
index 595a0eac..5913b5d7 100644
--- a/src/SonsOfPHP/Component/StateMachine/composer.json
+++ b/src/SonsOfPHP/Component/StateMachine/composer.json
@@ -9,6 +9,10 @@
"homepage": "https://github.com/SonsOfPHP/state-machine",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Component/Version/composer.json b/src/SonsOfPHP/Component/Version/composer.json
index 767e40df..5770da03 100644
--- a/src/SonsOfPHP/Component/Version/composer.json
+++ b/src/SonsOfPHP/Component/Version/composer.json
@@ -9,6 +9,10 @@
"homepage": "https://github.com/SonsOfPHP/version",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Common/composer.json b/src/SonsOfPHP/Contract/Common/composer.json
index 9e87f8b8..0578f55c 100644
--- a/src/SonsOfPHP/Contract/Common/composer.json
+++ b/src/SonsOfPHP/Contract/Common/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/common-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Cookie/composer.json b/src/SonsOfPHP/Contract/Cookie/composer.json
index c5308723..245fbe63 100644
--- a/src/SonsOfPHP/Contract/Cookie/composer.json
+++ b/src/SonsOfPHP/Contract/Cookie/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/cookie-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Cqrs/composer.json b/src/SonsOfPHP/Contract/Cqrs/composer.json
index e01af0c4..a49e7820 100644
--- a/src/SonsOfPHP/Contract/Cqrs/composer.json
+++ b/src/SonsOfPHP/Contract/Cqrs/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/cqrs-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/EventSourcing/composer.json b/src/SonsOfPHP/Contract/EventSourcing/composer.json
index 89266cdc..2718a5ef 100644
--- a/src/SonsOfPHP/Contract/EventSourcing/composer.json
+++ b/src/SonsOfPHP/Contract/EventSourcing/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/event-sourcing-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php b/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php
index 1ea0cbbe..465a2798 100644
--- a/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php
+++ b/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php
@@ -40,7 +40,6 @@ public function get(string $key): FeatureInterface;
* When the $key is invalid. MUST support keys consisting of the
* characters A-Z, a-z, 0-9, _, and . in any order in UTF-8 encoding and
* a length of up to 64 characters
- *
*/
public function has(string $key): bool;
diff --git a/src/SonsOfPHP/Contract/FeatureToggle/composer.json b/src/SonsOfPHP/Contract/FeatureToggle/composer.json
index 0529784a..b0ee1418 100644
--- a/src/SonsOfPHP/Contract/FeatureToggle/composer.json
+++ b/src/SonsOfPHP/Contract/FeatureToggle/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/feature-toggle-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Filesystem/composer.json b/src/SonsOfPHP/Contract/Filesystem/composer.json
index 4f5aac56..d8586b86 100644
--- a/src/SonsOfPHP/Contract/Filesystem/composer.json
+++ b/src/SonsOfPHP/Contract/Filesystem/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/filesystem-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/HttpHandler/composer.json b/src/SonsOfPHP/Contract/HttpHandler/composer.json
index 34ff58c2..cc08afef 100644
--- a/src/SonsOfPHP/Contract/HttpHandler/composer.json
+++ b/src/SonsOfPHP/Contract/HttpHandler/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/http-handler-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Logger/composer.json b/src/SonsOfPHP/Contract/Logger/composer.json
index b8e72497..8cc270a8 100644
--- a/src/SonsOfPHP/Contract/Logger/composer.json
+++ b/src/SonsOfPHP/Contract/Logger/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/logger-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Mailer/composer.json b/src/SonsOfPHP/Contract/Mailer/composer.json
index cf094358..2961ff35 100644
--- a/src/SonsOfPHP/Contract/Mailer/composer.json
+++ b/src/SonsOfPHP/Contract/Mailer/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/mailer-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Money/composer.json b/src/SonsOfPHP/Contract/Money/composer.json
index 5bc44939..b1c24763 100644
--- a/src/SonsOfPHP/Contract/Money/composer.json
+++ b/src/SonsOfPHP/Contract/Money/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/money-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Pager/composer.json b/src/SonsOfPHP/Contract/Pager/composer.json
index 01028cde..771d6dc5 100644
--- a/src/SonsOfPHP/Contract/Pager/composer.json
+++ b/src/SonsOfPHP/Contract/Pager/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/pager-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Registry/composer.json b/src/SonsOfPHP/Contract/Registry/composer.json
index 9049e003..bd572265 100644
--- a/src/SonsOfPHP/Contract/Registry/composer.json
+++ b/src/SonsOfPHP/Contract/Registry/composer.json
@@ -15,6 +15,10 @@
"homepage": "https://github.com/SonsOfPHP/registry-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/StateMachine/composer.json b/src/SonsOfPHP/Contract/StateMachine/composer.json
index ed9852a3..d998385f 100644
--- a/src/SonsOfPHP/Contract/StateMachine/composer.json
+++ b/src/SonsOfPHP/Contract/StateMachine/composer.json
@@ -14,6 +14,10 @@
"homepage": "https://github.com/SonsOfPHP/state-machine-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"
diff --git a/src/SonsOfPHP/Contract/Version/composer.json b/src/SonsOfPHP/Contract/Version/composer.json
index c7e15b0e..5b1b3a85 100644
--- a/src/SonsOfPHP/Contract/Version/composer.json
+++ b/src/SonsOfPHP/Contract/Version/composer.json
@@ -13,6 +13,10 @@
"homepage": "https://github.com/SonsOfPHP/version-contract",
"license": "MIT",
"authors": [
+ {
+ "name": "Sons of PHP Community",
+ "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors"
+ },
{
"name": "Joshua Estes",
"email": "joshua@sonsofphp.com"