From bc0a3224c7373b9c7390b5c9884ebfa97db469de Mon Sep 17 00:00:00 2001 From: Benjamin Kluge Date: Tue, 24 Mar 2020 11:05:51 +0100 Subject: [PATCH 1/3] add composer exclude folders dynamicly --- packages/monorepo-builder/README.md | 9 +++++++++ packages/monorepo-builder/config/config.yaml | 1 + .../src/Finder/PackageComposerFinder.php | 15 ++++++++++++++- .../Source/First/ExcludeThis/composer.json | 3 +++ .../Source/source_config.yaml | 2 ++ 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/First/ExcludeThis/composer.json diff --git a/packages/monorepo-builder/README.md b/packages/monorepo-builder/README.md index d70598a4706..09e0add2226 100644 --- a/packages/monorepo-builder/README.md +++ b/packages/monorepo-builder/README.md @@ -58,6 +58,15 @@ parameters: Sections are sorted for you by saint defaults. Do you want change the order? Just override `section_order` parameter. +To exclude a specific folder for ignoring the composer.json in this folder. + +```yaml +# monorepo-builder.yml +parameters: + package_directories_excludes: + - 'ExcludeThis' +``` + #### After Merge Options Do you need to add or remove some packages only to root `composer.json`? diff --git a/packages/monorepo-builder/config/config.yaml b/packages/monorepo-builder/config/config.yaml index e22df7a1550..c07382dbbe3 100644 --- a/packages/monorepo-builder/config/config.yaml +++ b/packages/monorepo-builder/config/config.yaml @@ -5,6 +5,7 @@ imports: parameters: package_directories: - 'packages' + package_directories_excludes: [] data_to_append: [] data_to_remove: [] package_alias_format: '.-dev' diff --git a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php index eece63681dc..f332a1f1601 100644 --- a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php +++ b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php @@ -15,6 +15,11 @@ final class PackageComposerFinder */ private $packageDirectories = []; + /** + * @var string[] + */ + private $packageDirectoriesExcludes = []; + /** * @var FinderSanitizer */ @@ -22,10 +27,12 @@ final class PackageComposerFinder /** * @param string[] $packageDirectories + * @param string[] $packageDirectoriesExcludes */ - public function __construct(array $packageDirectories, FinderSanitizer $finderSanitizer) + public function __construct(array $packageDirectories, array $packageDirectoriesExcludes, FinderSanitizer $finderSanitizer) { $this->packageDirectories = $packageDirectories; + $this->packageDirectoriesExcludes = $packageDirectoriesExcludes; $this->finderSanitizer = $finderSanitizer; } @@ -47,6 +54,12 @@ public function getPackageComposerFiles(): array ->exclude('node_modules') ->name('composer.json'); + if ($this->packageDirectoriesExcludes) { + foreach ($this->packageDirectoriesExcludes as $excludeFolder) { + $finder->exclude($excludeFolder); + } + } + if (! $this->isPHPUnit()) { $finder->notPath('#tests#'); } diff --git a/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/First/ExcludeThis/composer.json b/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/First/ExcludeThis/composer.json new file mode 100644 index 00000000000..1934c075f5b --- /dev/null +++ b/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/First/ExcludeThis/composer.json @@ -0,0 +1,3 @@ +{ + "name": "first/excludePackage" +} diff --git a/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/source_config.yaml b/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/source_config.yaml index ee1c69447d3..c52b242e62a 100644 --- a/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/source_config.yaml +++ b/packages/monorepo-builder/tests/Finder/PackageComposerFinder/Source/source_config.yaml @@ -1,3 +1,5 @@ parameters: package_directories: - '%kernel.project_dir%/tests/Finder/PackageComposerFinder/Source' + package_directories_excludes: + - 'ExcludeThis' From f0297fbf63628abe469967f407f5759c9aabcde2 Mon Sep 17 00:00:00 2001 From: Benjamin Kluge Date: Tue, 24 Mar 2020 11:16:34 +0100 Subject: [PATCH 2/3] fix cs --- .../src/Finder/PackageComposerFinder.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php index f332a1f1601..b1c754c34f2 100644 --- a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php +++ b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php @@ -29,8 +29,11 @@ final class PackageComposerFinder * @param string[] $packageDirectories * @param string[] $packageDirectoriesExcludes */ - public function __construct(array $packageDirectories, array $packageDirectoriesExcludes, FinderSanitizer $finderSanitizer) - { + public function __construct( + array $packageDirectories, + array $packageDirectoriesExcludes, + FinderSanitizer $finderSanitizer + ) { $this->packageDirectories = $packageDirectories; $this->packageDirectoriesExcludes = $packageDirectoriesExcludes; $this->finderSanitizer = $finderSanitizer; @@ -54,7 +57,7 @@ public function getPackageComposerFiles(): array ->exclude('node_modules') ->name('composer.json'); - if ($this->packageDirectoriesExcludes) { + if ($this->packageDirectoriesExcludes !== []) { foreach ($this->packageDirectoriesExcludes as $excludeFolder) { $finder->exclude($excludeFolder); } From c156c1f227534b4cb1a74d2f3daa4374d4003343 Mon Sep 17 00:00:00 2001 From: Benjamin Kluge Date: Wed, 25 Mar 2020 09:04:42 +0100 Subject: [PATCH 3/3] remove not needet if condition for empty array --- .../monorepo-builder/src/Finder/PackageComposerFinder.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php index b1c754c34f2..6f3d5f1abf3 100644 --- a/packages/monorepo-builder/src/Finder/PackageComposerFinder.php +++ b/packages/monorepo-builder/src/Finder/PackageComposerFinder.php @@ -57,10 +57,8 @@ public function getPackageComposerFiles(): array ->exclude('node_modules') ->name('composer.json'); - if ($this->packageDirectoriesExcludes !== []) { - foreach ($this->packageDirectoriesExcludes as $excludeFolder) { - $finder->exclude($excludeFolder); - } + foreach ($this->packageDirectoriesExcludes as $excludeFolder) { + $finder->exclude($excludeFolder); } if (! $this->isPHPUnit()) {