PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / typisttech / imposter / src / ConfigCollectionFactory.php
surecart / vendor / typisttech / imposter / src Last commit date
ArrayUtil.php 3 years ago Config.php 3 years ago ConfigCollection.php 3 years ago ConfigCollectionFactory.php 3 years ago ConfigCollectionInterface.php 3 years ago ConfigFactory.php 3 years ago ConfigInterface.php 3 years ago Filesystem.php 3 years ago FilesystemInterface.php 3 years ago Imposter.php 3 years ago ImposterFactory.php 3 years ago ImposterInterface.php 3 years ago ProjectConfig.php 3 years ago ProjectConfigInterface.php 3 years ago StringUtil.php 3 years ago Transformer.php 3 years ago TransformerInterface.php 3 years ago
ConfigCollectionFactory.php
69 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace TypistTech\Imposter;
6
7 class ConfigCollectionFactory
8 {
9 public static function forProject(
10 ProjectConfigInterface $projectConfig,
11 Filesystem $filesystem
12 ): ConfigCollectionInterface {
13 return static::addRequiredPackageConfigsRecursively(
14 new ConfigCollection(),
15 $projectConfig,
16 $projectConfig,
17 $filesystem
18 );
19 }
20
21 private static function addRequiredPackageConfigsRecursively(
22 ConfigCollectionInterface $configCollection,
23 ProjectConfigInterface $projectConfig,
24 ConfigInterface $config,
25 Filesystem $filesystem
26 ): ConfigCollectionInterface {
27 $filteredRequires = static::getFilteredPackages($projectConfig, $config);
28
29 foreach ($filteredRequires as $package) {
30 $packageConfig = ConfigFactory::build(
31 $projectConfig->getVendorDir() . $package . '/composer.json',
32 $filesystem
33 );
34
35 $configCollection->add($packageConfig);
36
37 static::addRequiredPackageConfigsRecursively(
38 $configCollection,
39 $projectConfig,
40 $packageConfig,
41 $filesystem
42 );
43 }
44
45 return $configCollection;
46 }
47
48 /**
49 * @param ProjectConfigInterface $projectConfig
50 * @param ConfigInterface $config
51 *
52 * @return string[]
53 */
54 private static function getFilteredPackages(ProjectConfigInterface $projectConfig, ConfigInterface $config): array
55 {
56 $requiredPackages = array_filter($config->getRequires(), function (string $package) {
57 return (false !== strpos($package, '/'));
58 });
59
60 $nonComposerPackages = array_filter($requiredPackages, function (string $package) {
61 return (false === strpos($package, 'composer/'));
62 });
63
64 return array_filter($nonComposerPackages, function (string $package) use ($projectConfig) {
65 return ! in_array($package, $projectConfig->getExcludes(), true);
66 });
67 }
68 }
69