Updated Rector to commit 3c07468691132d0246e55627495a1e7d4cd76a8d

3c07468691 [DX] Localize few PackageBuilder classes (#2884)
This commit is contained in:
Tomas Votruba 2022-09-01 19:50:06 +00:00
parent 28c719d1fb
commit 4e3847e1bc
68 changed files with 1663 additions and 275 deletions

View File

@ -7,7 +7,7 @@
],
"require": {
"php": "^7.2|^8.0",
"phpstan/phpstan": "^1.8.2"
"phpstan/phpstan": "^1.8.3"
},
"autoload": {
"files": [

View File

@ -30,6 +30,7 @@ use Rector\Caching\CacheFactory;
use Rector\Caching\ValueObject\Storage\MemoryCacheStorage;
use Rector\Config\RectorConfig;
use Rector\Core\Bootstrap\ExtensionConfigResolver;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Console\ConsoleApplication;
use Rector\Core\Console\Style\RectorConsoleOutputStyle;
use Rector\Core\Console\Style\RectorConsoleOutputStyleFactory;
@ -49,8 +50,6 @@ use function RectorPrefix202209\Symfony\Component\DependencyInjection\Loader\Con
use RectorPrefix202209\Symfony\Component\Filesystem\Filesystem;
use RectorPrefix202209\Symplify\EasyParallel\ValueObject\EasyParallelConfig;
use RectorPrefix202209\Symplify\PackageBuilder\Console\Style\SymfonyStyleFactory;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker;
use RectorPrefix202209\Symplify\PackageBuilder\Yaml\ParametersMerger;
return static function (RectorConfig $rectorConfig) : void {
// make use of https://github.com/symplify/easy-parallel
@ -146,6 +145,4 @@ return static function (RectorConfig $rectorConfig) : void {
$services->set(\PHPStan\PhpDocParser\Lexer\Lexer::class);
$services->set(TypeParser::class);
$services->set(ConstExprParser::class);
// skipper
$services->set(ClassLikeExistenceChecker::class);
};

View File

@ -6,13 +6,13 @@ namespace Rector\Caching;
use Rector\Caching\ValueObject\Storage\FileCacheStorage;
use Rector\Caching\ValueObject\Storage\MemoryCacheStorage;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use RectorPrefix202209\Symfony\Component\Filesystem\Filesystem;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
final class CacheFactory
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -15,10 +15,10 @@ use PHPStan\Parser\Parser;
use PHPStan\PhpDoc\TypeNodeResolver;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
use ReflectionClass;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* Factory so Symfony app can use services from PHPStan container
*/

View File

@ -10,8 +10,8 @@ use PhpParser\Node\Stmt\Nop;
use PhpParser\NodeTraverser;
use PhpParser\NodeVisitorAbstract;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* Skips performance trap in PHPStan: https://github.com/phpstan/phpstan/issues/254
*/

View File

@ -8,12 +8,14 @@ use PhpParser\Node as PhpParserNode;
use PHPStan\PhpDocParser\Ast\Node;
use PHPStan\PhpDocParser\Ast\PhpDoc\TemplateTagValueNode;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Type\ObjectType;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode;
use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey;
use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Provider\CurrentFileProvider;
use Rector\Core\ValueObject\Application\File;
@ -21,8 +23,6 @@ use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\StaticTypeMapper\StaticTypeMapper;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker;
final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
{
/**
@ -36,7 +36,7 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
private $staticTypeMapper;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**
@ -56,17 +56,17 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
private $currentFileProvider;
/**
* @readonly
* @var \Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $classLikeExistenceChecker;
public function __construct(StaticTypeMapper $staticTypeMapper, ParameterProvider $parameterProvider, ClassNameImportSkipper $classNameImportSkipper, UseNodesToAddCollector $useNodesToAddCollector, CurrentFileProvider $currentFileProvider, ClassLikeExistenceChecker $classLikeExistenceChecker)
private $reflectionProvider;
public function __construct(StaticTypeMapper $staticTypeMapper, ParameterProvider $parameterProvider, ClassNameImportSkipper $classNameImportSkipper, UseNodesToAddCollector $useNodesToAddCollector, CurrentFileProvider $currentFileProvider, ReflectionProvider $reflectionProvider)
{
$this->staticTypeMapper = $staticTypeMapper;
$this->parameterProvider = $parameterProvider;
$this->classNameImportSkipper = $classNameImportSkipper;
$this->useNodesToAddCollector = $useNodesToAddCollector;
$this->currentFileProvider = $currentFileProvider;
$this->classLikeExistenceChecker = $classLikeExistenceChecker;
$this->reflectionProvider = $reflectionProvider;
}
public function beforeTraverse(Node $node) : void
{
@ -147,7 +147,7 @@ final class NameImportingPhpDocNodeVisitor extends AbstractPhpDocNodeVisitor
return \true;
}
$className = $fullyQualifiedObjectType->getClassName();
if (!$this->classLikeExistenceChecker->doesClassLikeInsensitiveExists($className)) {
if (!$this->reflectionProvider->hasClass($className)) {
return \false;
}
$firstPath = Strings::before($identifierTypeNode->name, '\\' . $newNode->name);

View File

@ -10,6 +10,7 @@ use RectorPrefix202209\React\EventLoop\StreamSelectLoop;
use RectorPrefix202209\React\Socket\ConnectionInterface;
use RectorPrefix202209\React\Socket\TcpServer;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Console\Command\ProcessCommand;
use Rector\Core\ValueObject\Error\SystemError;
use Rector\Core\ValueObject\Reporting\FileDiff;
@ -25,7 +26,6 @@ use RectorPrefix202209\Symplify\EasyParallel\Enum\ReactEvent;
use RectorPrefix202209\Symplify\EasyParallel\ValueObject\ParallelProcess;
use RectorPrefix202209\Symplify\EasyParallel\ValueObject\ProcessPool;
use RectorPrefix202209\Symplify\EasyParallel\ValueObject\Schedule;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Throwable;
/**
* Inspired from @see
@ -50,7 +50,7 @@ final class ParallelFileProcessor
private $workerCommandLineFactory;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
public function __construct(WorkerCommandLineFactory $workerCommandLineFactory, ParameterProvider $parameterProvider)

View File

@ -11,18 +11,18 @@ use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
use Rector\CodingStyle\Node\NameImporter;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Core\Provider\CurrentFileProvider;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockNameImporter;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class NameImportingPostRector extends \Rector\PostRector\Rector\AbstractPostRector
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -3,9 +3,9 @@
declare (strict_types=1);
namespace Rector\Skipper\SkipCriteriaResolver;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Core\Configuration\Option;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker;
use Rector\Core\Configuration\Parameter\ParameterProvider;
final class SkippedClassResolver
{
/**
@ -14,18 +14,18 @@ final class SkippedClassResolver
private $skippedClasses = [];
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**
* @readonly
* @var \Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $classLikeExistenceChecker;
public function __construct(ParameterProvider $parameterProvider, ClassLikeExistenceChecker $classLikeExistenceChecker)
private $reflectionProvider;
public function __construct(ParameterProvider $parameterProvider, ReflectionProvider $reflectionProvider)
{
$this->parameterProvider = $parameterProvider;
$this->classLikeExistenceChecker = $classLikeExistenceChecker;
$this->reflectionProvider = $reflectionProvider;
}
/**
* @return array<string, string[]|null>
@ -45,7 +45,7 @@ final class SkippedClassResolver
if (!\is_string($key)) {
continue;
}
if (!$this->classLikeExistenceChecker->doesClassLikeExist($key)) {
if (!$this->reflectionProvider->hasClass($key)) {
continue;
}
$this->skippedClasses[$key] = $value;

View File

@ -4,8 +4,8 @@ declare (strict_types=1);
namespace Rector\Skipper\SkipCriteriaResolver;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\FileSystem\FilePathHelper;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* @see \Rector\Tests\Skipper\SkipCriteriaResolver\SkippedPathsResolver\SkippedPathsResolverTest
*/
@ -17,7 +17,7 @@ final class SkippedPathsResolver
private $skippedPaths = [];
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -3,17 +3,12 @@
declare (strict_types=1);
namespace Rector\Skipper\SkipVoter;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Skipper\Contract\SkipVoterInterface;
use Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver;
use Rector\Skipper\Skipper\SkipSkipper;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker;
final class ClassSkipVoter implements SkipVoterInterface
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker
*/
private $classLikeExistenceChecker;
/**
* @readonly
* @var \Rector\Skipper\Skipper\SkipSkipper
@ -24,11 +19,16 @@ final class ClassSkipVoter implements SkipVoterInterface
* @var \Rector\Skipper\SkipCriteriaResolver\SkippedClassResolver
*/
private $skippedClassResolver;
public function __construct(ClassLikeExistenceChecker $classLikeExistenceChecker, SkipSkipper $skipSkipper, SkippedClassResolver $skippedClassResolver)
/**
* @readonly
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
public function __construct(SkipSkipper $skipSkipper, SkippedClassResolver $skippedClassResolver, ReflectionProvider $reflectionProvider)
{
$this->classLikeExistenceChecker = $classLikeExistenceChecker;
$this->skipSkipper = $skipSkipper;
$this->skippedClassResolver = $skippedClassResolver;
$this->reflectionProvider = $reflectionProvider;
}
/**
* @param string|object $element
@ -38,7 +38,7 @@ final class ClassSkipVoter implements SkipVoterInterface
if (\is_object($element)) {
return \true;
}
return $this->classLikeExistenceChecker->doesClassLikeExist($element);
return $this->reflectionProvider->hasClass($element);
}
/**
* @param string|object $element

View File

@ -15,6 +15,7 @@ use Rector\Core\Autoloading\AdditionalAutoloader;
use Rector\Core\Autoloading\BootstrapFilesIncluder;
use Rector\Core\Configuration\ConfigurationFactory;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\Reflection\BetterReflection\SourceLocatorProvider\DynamicSourceLocatorProvider;
use Rector\Testing\Contract\RectorTestInterface;
@ -23,13 +24,12 @@ use Rector\Testing\Fixture\FixtureFileUpdater;
use Rector\Testing\Fixture\FixtureSplitter;
use Rector\Testing\Fixture\FixtureTempFileDumper;
use Rector\Testing\PHPUnit\Behavior\MovingFilesTrait;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Symplify\SmartFileSystem\SmartFileInfo;
abstract class AbstractRectorTestCase extends \Rector\Testing\PHPUnit\AbstractTestCase implements RectorTestInterface
{
use MovingFilesTrait;
/**
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
protected $parameterProvider;
/**

View File

@ -6,10 +6,10 @@ namespace Rector\Testing\TestingParser;
use RectorPrefix202209\Nette\Utils\FileSystem;
use PhpParser\Node;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\PhpParser\Parser\RectorParser;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* @api
*/
@ -17,7 +17,7 @@ final class TestingParser
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -14,12 +14,12 @@ use PHPStan\Reflection\ReflectionProvider;
use Rector\CodingStyle\ClassNameImport\AliasUsesResolver;
use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\ValueObject\Application\File;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PostRector\Collector\UseNodesToAddCollector;
use Rector\StaticTypeMapper\StaticTypeMapper;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
final class NameImporter
{
/**
@ -38,7 +38,7 @@ final class NameImporter
private $classNameImportSkipper;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -13,16 +13,16 @@ use PhpParser\Node\Stmt\UseUse;
use PHPStan\Reflection\Constant\RuntimeConstantReflection;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Enum\ObjectReference;
use Rector\NodeNameResolver\NodeNameResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
final class FullyQualifyStmtsAnalyzer
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -10,12 +10,12 @@ use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name\FullyQualified;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassConst;
use PHPStan\Reflection\ReflectionProvider;
use Rector\Core\Contract\Rector\AllowEmptyConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use RectorPrefix202209\Webmozart\Assert\Assert;
@ -36,12 +36,12 @@ final class StringClassNameToClassConstantRector extends AbstractRector implemen
];
/**
* @readonly
* @var \Symplify\PackageBuilder\Reflection\ClassLikeExistenceChecker
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $classLikeExistenceChecker;
public function __construct(ClassLikeExistenceChecker $classLikeExistenceChecker)
private $reflectionProvider;
public function __construct(ReflectionProvider $reflectionProvider)
{
$this->classLikeExistenceChecker = $classLikeExistenceChecker;
$this->reflectionProvider = $reflectionProvider;
}
public function getRuleDefinition() : RuleDefinition
{
@ -123,7 +123,7 @@ CODE_SAMPLE
}
private function shouldSkip(string $classLikeName, String_ $string) : bool
{
if (!$this->classLikeExistenceChecker->doesClassLikeInsensitiveExists($classLikeName)) {
if (!$this->reflectionProvider->hasClass($classLikeName)) {
return \true;
}
foreach ($this->classesToSkip as $classToSkip) {

View File

@ -25,6 +25,7 @@ use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocClassRenamer;
use Rector\BetterPhpDocParser\ValueObject\NodeTypes;
use Rector\CodingStyle\Naming\ClassNaming;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\PhpParser\Node\BetterNodeFinder;
use Rector\Naming\Naming\UseImportsResolver;
use Rector\NodeNameResolver\NodeNameResolver;
@ -34,7 +35,6 @@ use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockClassRenamer;
use Rector\NodeTypeResolver\ValueObject\OldToNewType;
use Rector\PhpDocParser\NodeTraverser\SimpleCallableNodeTraverser;
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
final class ClassRenamer
{
/**
@ -92,7 +92,7 @@ final class ClassRenamer
private $nodeRemover;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -25,6 +25,7 @@ use PHPStan\Type\TypeWithClassName;
use PHPStan\Type\UnionType;
use PHPStan\Type\VoidType;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Enum\ObjectReference;
use Rector\Core\Exception\ShouldNotHappenException;
use Rector\Core\Php\PhpVersionProvider;
@ -37,7 +38,6 @@ use Rector\TypeDeclaration\Contract\TypeInferer\ReturnTypeInfererInterface;
use Rector\TypeDeclaration\Sorter\PriorityAwareSorter;
use Rector\TypeDeclaration\TypeAnalyzer\GenericClassStringTypeNormalizer;
use Rector\TypeDeclaration\TypeNormalizer;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* @deprecated
* @todo Split into many narrow-focused rules
@ -65,7 +65,7 @@ final class ReturnTypeInferer
private $phpVersionProvider;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -7,6 +7,7 @@ use PHPStan\Analyser\NodeScopeResolver;
use Rector\Core\Application\FileDecorator\FileDiffFileDecorator;
use Rector\Core\Application\FileSystem\RemovedAndAddedFilesProcessor;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Contract\Console\OutputStyleInterface;
use Rector\Core\Contract\Processor\FileProcessorInterface;
use Rector\Core\ValueObject\Application\File;
@ -20,9 +21,7 @@ use RectorPrefix202209\Symfony\Component\Console\Input\InputInterface;
use RectorPrefix202209\Symfony\Component\Filesystem\Filesystem;
use RectorPrefix202209\Symplify\EasyParallel\CpuCoreCountProvider;
use RectorPrefix202209\Symplify\EasyParallel\Exception\ParallelShouldNotHappenException;
//use Symplify\EasyParallel\FileSystem\FilePathNormalizer;
use RectorPrefix202209\Symplify\EasyParallel\ScheduleFactory;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Symplify\PackageBuilder\Yaml\ParametersMerger;
use RectorPrefix202209\Webmozart\Assert\Assert;
final class ApplicationFileProcessor
@ -77,7 +76,7 @@ final class ApplicationFileProcessor
private $parallelFileProcessor;
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**
@ -110,7 +109,6 @@ final class ApplicationFileProcessor
$this->parallelFileProcessor = $parallelFileProcessor;
$this->parameterProvider = $parameterProvider;
$this->scheduleFactory = $scheduleFactory;
// private readonly FilePathNormalizer $filePathNormalizer,
$this->cpuCoreCountProvider = $cpuCoreCountProvider;
$this->fileProcessors = $fileProcessors;
}

View File

@ -17,12 +17,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '8961d20f56fa4b39bb21feec1f24422398f13dba';
public const PACKAGE_VERSION = '3c07468691132d0246e55627495a1e7d4cd76a8d';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2022-09-01 19:25:30';
public const RELEASE_DATE = '2022-09-01 19:44:57';
/**
* @var int
*/

View File

@ -4,9 +4,9 @@ declare (strict_types=1);
namespace Rector\Core\Autoloading;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\StaticReflection\DynamicSourceLocatorDecorator;
use RectorPrefix202209\Symfony\Component\Console\Input\InputInterface;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Webmozart\Assert\Assert;
/**
* Should it pass autoload files/directories to PHPStan analyzer?
@ -15,7 +15,7 @@ final class AdditionalAutoloader
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -4,18 +4,18 @@ declare (strict_types=1);
namespace Rector\Core\Autoloading;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Exception\ShouldNotHappenException;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
use SplFileInfo;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Throwable;
use RectorPrefix202209\Webmozart\Assert\Assert;
final class BootstrapFilesIncluder
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
public function __construct(ParameterProvider $parameterProvider)

View File

@ -4,15 +4,15 @@ declare (strict_types=1);
namespace Rector\Core\Configuration;
use Rector\ChangesReporting\Output\ConsoleOutputFormatter;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Contract\Console\OutputStyleInterface;
use Rector\Core\ValueObject\Configuration;
use RectorPrefix202209\Symfony\Component\Console\Input\InputInterface;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
final class ConfigurationFactory
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -0,0 +1,93 @@
<?php
declare (strict_types=1);
namespace Rector\Core\Configuration\Parameter;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Container;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
/**
* @api
*/
final class ParameterProvider
{
/**
* @var array<string, mixed>
*/
private $parameters = [];
public function __construct(Container $container)
{
/** @var ParameterBagInterface $parameterBag */
$parameterBag = $container->getParameterBag();
$this->parameters = $parameterBag->all();
}
public function hasParameter(string $name) : bool
{
return isset($this->parameters[$name]);
}
/**
* @api
* @return mixed
*/
public function provideParameter(string $name)
{
return $this->parameters[$name] ?? null;
}
/**
* @api
*/
public function provideStringParameter(string $name) : string
{
$this->ensureParameterIsSet($name);
return (string) $this->parameters[$name];
}
/**
* @api
* @return mixed[]
*/
public function provideArrayParameter(string $name) : array
{
$this->ensureParameterIsSet($name);
return $this->parameters[$name];
}
/**
* @api
*/
public function provideBoolParameter(string $parameterName) : bool
{
return $this->parameters[$parameterName] ?? \false;
}
/**
* @param mixed $value
*/
public function changeParameter(string $name, $value) : void
{
$this->parameters[$name] = $value;
}
/**
* @api
* @return mixed[]
*/
public function provide() : array
{
return $this->parameters;
}
/**
* @api
*/
public function provideIntParameter(string $name) : int
{
$this->ensureParameterIsSet($name);
return (int) $this->parameters[$name];
}
/**
* @api
*/
public function ensureParameterIsSet(string $name) : void
{
if (\array_key_exists($name, $this->parameters)) {
return;
}
throw new ParameterNotFoundException($name);
}
}

View File

@ -3,7 +3,7 @@
declare (strict_types=1);
namespace Rector\Core\Configuration;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Rector\Core\Configuration\Parameter\ParameterProvider;
/**
* Rector native configuration provider, to keep deprecated options hidden,
* but also provide configuration that custom rules can check
@ -12,7 +12,7 @@ final class RectorConfigProvider
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
public function __construct(ParameterProvider $parameterProvider)

View File

@ -4,13 +4,13 @@ declare (strict_types=1);
namespace Rector\Core\Php;
use Rector\Core\Configuration\Option;
use Rector\Core\Configuration\Parameter\ParameterProvider;
use Rector\Core\Exception\Configuration\InvalidConfigurationException;
use Rector\Core\Php\PhpVersionResolver\ProjectComposerJsonPhpVersionResolver;
use Rector\Core\Util\StringUtils;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Testing\PHPUnit\StaticPHPUnitEnvironment;
use ReflectionClass;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
/**
* @see \Rector\Core\Tests\Php\PhpVersionProviderTest
*/
@ -23,7 +23,7 @@ final class PhpVersionProvider
private const VALID_PHP_VERSION_REGEX = '#^\\d{5,6}$#';
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

2
vendor/autoload.php vendored
View File

@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad::getLoader();
return ComposerAutoloaderInit86cbfc3673ea2a34d4a9839fb42e2f38::getLoader();

View File

@ -1063,6 +1063,26 @@ return array(
'RectorPrefix202209\\Symplify\\PackageBuilder\\ValueObject\\MethodName' => $vendorDir . '/symplify/package-builder/src/ValueObject/MethodName.php',
'RectorPrefix202209\\Symplify\\PackageBuilder\\ValueObject\\Option' => $vendorDir . '/symplify/package-builder/src/ValueObject/Option.php',
'RectorPrefix202209\\Symplify\\PackageBuilder\\Yaml\\ParametersMerger' => $vendorDir . '/symplify/package-builder/src/Yaml/ParametersMerger.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symplify/smart-file-system/src/Exception/DirectoryNotFoundException.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Exception\\FileNotFoundException' => $vendorDir . '/symplify/smart-file-system/src/Exception/FileNotFoundException.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\FileSystemFilter' => $vendorDir . '/symplify/smart-file-system/src/FileSystemFilter.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\FileSystemGuard' => $vendorDir . '/symplify/smart-file-system/src/FileSystemGuard.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Finder\\FinderSanitizer' => $vendorDir . '/symplify/smart-file-system/src/Finder/FinderSanitizer.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Finder\\SmartFinder' => $vendorDir . '/symplify/smart-file-system/src/Finder/SmartFinder.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Json\\JsonFileSystem' => $vendorDir . '/symplify/smart-file-system/src/Json/JsonFileSystem.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Normalizer\\PathNormalizer' => $vendorDir . '/symplify/smart-file-system/src/Normalizer/PathNormalizer.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\SmartFileInfo' => $vendorDir . '/symplify/smart-file-system/src/SmartFileInfo.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\SmartFileSystem' => $vendorDir . '/symplify/smart-file-system/src/SmartFileSystem.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Config\\Loader\\ParameterMergingLoaderFactory' => $vendorDir . '/symplify/symplify-kernel/src/Config/Loader/ParameterMergingLoaderFactory.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ContainerBuilderFactory' => $vendorDir . '/symplify/symplify-kernel/src/ContainerBuilderFactory.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Contract\\Config\\LoaderFactoryInterface' => $vendorDir . '/symplify/symplify-kernel/src/Contract/Config/LoaderFactoryInterface.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Contract\\LightKernelInterface' => $vendorDir . '/symplify/symplify-kernel/src/Contract/LightKernelInterface.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\DependencyInjection\\LoadExtensionConfigsCompilerPass' => $vendorDir . '/symplify/symplify-kernel/src/DependencyInjection/LoadExtensionConfigsCompilerPass.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Exception\\BootException' => $vendorDir . '/symplify/symplify-kernel/src/Exception/BootException.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Exception\\ShouldNotHappenException' => $vendorDir . '/symplify/symplify-kernel/src/Exception/ShouldNotHappenException.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\HttpKernel\\AbstractSymplifyKernel' => $vendorDir . '/symplify/symplify-kernel/src/HttpKernel/AbstractSymplifyKernel.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ValueObject\\KernelBootAndApplicationRun' => $vendorDir . '/symplify/symplify-kernel/src/ValueObject/KernelBootAndApplicationRun.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ValueObject\\SymplifyKernelConfig' => $vendorDir . '/symplify/symplify-kernel/src/ValueObject/SymplifyKernelConfig.php',
'RectorPrefix202209\\Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
'RectorPrefix202209\\Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php',
'RectorPrefix202209\\Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php',
@ -1344,6 +1364,7 @@ return array(
'Rector\\Core\\Configuration\\ConfigurationFactory' => $baseDir . '/src/Configuration/ConfigurationFactory.php',
'Rector\\Core\\Configuration\\CurrentNodeProvider' => $baseDir . '/src/Configuration/CurrentNodeProvider.php',
'Rector\\Core\\Configuration\\Option' => $baseDir . '/src/Configuration/Option.php',
'Rector\\Core\\Configuration\\Parameter\\ParameterProvider' => $baseDir . '/src/Configuration/Parameter/ParameterProvider.php',
'Rector\\Core\\Configuration\\RectorConfigProvider' => $baseDir . '/src/Configuration/RectorConfigProvider.php',
'Rector\\Core\\Configuration\\RenamedClassesDataCollector' => $baseDir . '/src/Configuration/RenamedClassesDataCollector.php',
'Rector\\Core\\Configuration\\ValueObjectInliner' => $baseDir . '/src/Configuration/ValueObjectInliner.php',

View File

@ -20,6 +20,8 @@ return array(
'Rector\\CakePHP\\' => array($vendorDir . '/rector/rector-cakephp/src'),
'Rector\\' => array($baseDir . '/packages', $baseDir . '/rules', $vendorDir . '/rector/rector-downgrade-php/src', $vendorDir . '/rector/rector-downgrade-php/rules'),
'RectorPrefix202209\\Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
'RectorPrefix202209\\Symplify\\SymplifyKernel\\' => array($vendorDir . '/symplify/symplify-kernel/src'),
'RectorPrefix202209\\Symplify\\SmartFileSystem\\' => array($vendorDir . '/symplify/smart-file-system/src'),
'RectorPrefix202209\\Symplify\\PackageBuilder\\' => array($vendorDir . '/symplify/package-builder/src'),
'RectorPrefix202209\\Symplify\\EasyParallel\\' => array($vendorDir . '/symplify/easy-parallel/src'),
'RectorPrefix202209\\Symplify\\AutowireArrayParameter\\' => array($vendorDir . '/symplify/autowire-array-parameter/src'),

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad
class ComposerAutoloaderInit86cbfc3673ea2a34d4a9839fb42e2f38
{
private static $loader;
@ -22,19 +22,19 @@ class ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit86cbfc3673ea2a34d4a9839fb42e2f38', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
spl_autoload_unregister(array('ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit86cbfc3673ea2a34d4a9839fb42e2f38', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitb981bffc907afb7807601aec8347a8ad::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38::getInitializer($loader));
$loader->setClassMapAuthoritative(true);
$loader->register(true);
$includeFiles = \Composer\Autoload\ComposerStaticInitb981bffc907afb7807601aec8347a8ad::$files;
$includeFiles = \Composer\Autoload\ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38::$files;
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequireb981bffc907afb7807601aec8347a8ad($fileIdentifier, $file);
composerRequire86cbfc3673ea2a34d4a9839fb42e2f38($fileIdentifier, $file);
}
return $loader;
@ -46,7 +46,7 @@ class ComposerAutoloaderInitb981bffc907afb7807601aec8347a8ad
* @param string $file
* @return void
*/
function composerRequireb981bffc907afb7807601aec8347a8ad($fileIdentifier, $file)
function composerRequire86cbfc3673ea2a34d4a9839fb42e2f38($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
class ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@ -37,6 +37,8 @@ class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
'Rector\\CakePHP\\' => 15,
'Rector\\' => 7,
'RectorPrefix202209\\Webmozart\\Assert\\' => 36,
'RectorPrefix202209\\Symplify\\SymplifyKernel\\' => 43,
'RectorPrefix202209\\Symplify\\SmartFileSystem\\' => 44,
'RectorPrefix202209\\Symplify\\PackageBuilder\\' => 43,
'RectorPrefix202209\\Symplify\\EasyParallel\\' => 41,
'RectorPrefix202209\\Symplify\\AutowireArrayParameter\\' => 51,
@ -135,6 +137,14 @@ class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
'RectorPrefix202209\\Symplify\\SymplifyKernel\\' =>
array (
0 => __DIR__ . '/..' . '/symplify/symplify-kernel/src',
),
'RectorPrefix202209\\Symplify\\SmartFileSystem\\' =>
array (
0 => __DIR__ . '/..' . '/symplify/smart-file-system/src',
),
'RectorPrefix202209\\Symplify\\PackageBuilder\\' =>
array (
0 => __DIR__ . '/..' . '/symplify/package-builder/src',
@ -1323,6 +1333,26 @@ class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
'RectorPrefix202209\\Symplify\\PackageBuilder\\ValueObject\\MethodName' => __DIR__ . '/..' . '/symplify/package-builder/src/ValueObject/MethodName.php',
'RectorPrefix202209\\Symplify\\PackageBuilder\\ValueObject\\Option' => __DIR__ . '/..' . '/symplify/package-builder/src/ValueObject/Option.php',
'RectorPrefix202209\\Symplify\\PackageBuilder\\Yaml\\ParametersMerger' => __DIR__ . '/..' . '/symplify/package-builder/src/Yaml/ParametersMerger.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Exception/DirectoryNotFoundException.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Exception/FileNotFoundException.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\FileSystemFilter' => __DIR__ . '/..' . '/symplify/smart-file-system/src/FileSystemFilter.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\FileSystemGuard' => __DIR__ . '/..' . '/symplify/smart-file-system/src/FileSystemGuard.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Finder\\FinderSanitizer' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Finder/FinderSanitizer.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Finder\\SmartFinder' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Finder/SmartFinder.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Json\\JsonFileSystem' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Json/JsonFileSystem.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\Normalizer\\PathNormalizer' => __DIR__ . '/..' . '/symplify/smart-file-system/src/Normalizer/PathNormalizer.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\SmartFileInfo' => __DIR__ . '/..' . '/symplify/smart-file-system/src/SmartFileInfo.php',
'RectorPrefix202209\\Symplify\\SmartFileSystem\\SmartFileSystem' => __DIR__ . '/..' . '/symplify/smart-file-system/src/SmartFileSystem.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Config\\Loader\\ParameterMergingLoaderFactory' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/Config/Loader/ParameterMergingLoaderFactory.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ContainerBuilderFactory' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/ContainerBuilderFactory.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Contract\\Config\\LoaderFactoryInterface' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/Contract/Config/LoaderFactoryInterface.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Contract\\LightKernelInterface' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/Contract/LightKernelInterface.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\DependencyInjection\\LoadExtensionConfigsCompilerPass' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/DependencyInjection/LoadExtensionConfigsCompilerPass.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Exception\\BootException' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/Exception/BootException.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\Exception\\ShouldNotHappenException' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/Exception/ShouldNotHappenException.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\HttpKernel\\AbstractSymplifyKernel' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/HttpKernel/AbstractSymplifyKernel.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ValueObject\\KernelBootAndApplicationRun' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/ValueObject/KernelBootAndApplicationRun.php',
'RectorPrefix202209\\Symplify\\SymplifyKernel\\ValueObject\\SymplifyKernelConfig' => __DIR__ . '/..' . '/symplify/symplify-kernel/src/ValueObject/SymplifyKernelConfig.php',
'RectorPrefix202209\\Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
'RectorPrefix202209\\Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php',
'RectorPrefix202209\\Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php',
@ -1604,6 +1634,7 @@ class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
'Rector\\Core\\Configuration\\ConfigurationFactory' => __DIR__ . '/../..' . '/src/Configuration/ConfigurationFactory.php',
'Rector\\Core\\Configuration\\CurrentNodeProvider' => __DIR__ . '/../..' . '/src/Configuration/CurrentNodeProvider.php',
'Rector\\Core\\Configuration\\Option' => __DIR__ . '/../..' . '/src/Configuration/Option.php',
'Rector\\Core\\Configuration\\Parameter\\ParameterProvider' => __DIR__ . '/../..' . '/src/Configuration/Parameter/ParameterProvider.php',
'Rector\\Core\\Configuration\\RectorConfigProvider' => __DIR__ . '/../..' . '/src/Configuration/RectorConfigProvider.php',
'Rector\\Core\\Configuration\\RenamedClassesDataCollector' => __DIR__ . '/../..' . '/src/Configuration/RenamedClassesDataCollector.php',
'Rector\\Core\\Configuration\\ValueObjectInliner' => __DIR__ . '/../..' . '/src/Configuration/ValueObjectInliner.php',
@ -3113,9 +3144,9 @@ class ComposerStaticInitb981bffc907afb7807601aec8347a8ad
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitb981bffc907afb7807601aec8347a8ad::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitb981bffc907afb7807601aec8347a8ad::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitb981bffc907afb7807601aec8347a8ad::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit86cbfc3673ea2a34d4a9839fb42e2f38::$classMap;
}, null, ClassLoader::class);
}

View File

@ -2197,12 +2197,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/rectorphp\/rector-symfony.git",
"reference": "1a89172121f2a6a4cd010b727e6456ca49d1f8e1"
"reference": "4801624461ce7c7aeec47a7947af0b938b00af3e"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/1a89172121f2a6a4cd010b727e6456ca49d1f8e1",
"reference": "1a89172121f2a6a4cd010b727e6456ca49d1f8e1",
"url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/4801624461ce7c7aeec47a7947af0b938b00af3e",
"reference": "4801624461ce7c7aeec47a7947af0b938b00af3e",
"shasum": ""
},
"require": {
@ -2233,7 +2233,7 @@
"symplify\/rule-doc-generator": "^11.1",
"symplify\/vendor-patches": "^11.1"
},
"time": "2022-09-01T15:56:27+00:00",
"time": "2022-09-01T19:38:21+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {
@ -3108,49 +3108,49 @@
},
{
"name": "symplify\/autowire-array-parameter",
"version": "11.1.6",
"version_normalized": "11.1.6.0",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/autowire-array-parameter.git",
"reference": "4bd09786fd6c8cad3fcf1824fc1f5f387d30e4b0"
"reference": "463ddeb0bcc6d69fbcee7135b591a54ed5fab94c"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/autowire-array-parameter\/zipball\/4bd09786fd6c8cad3fcf1824fc1f5f387d30e4b0",
"reference": "4bd09786fd6c8cad3fcf1824fc1f5f387d30e4b0",
"url": "https:\/\/api.github.com\/repos\/symplify\/autowire-array-parameter\/zipball\/463ddeb0bcc6d69fbcee7135b591a54ed5fab94c",
"reference": "463ddeb0bcc6d69fbcee7135b591a54ed5fab94c",
"shasum": ""
},
"require": {
"nette\/utils": "^3.2",
"php": ">=8.0",
"symfony\/dependency-injection": "^6.0",
"symplify\/package-builder": "^11.1.6"
"symplify\/package-builder": "^11.1.7"
},
"conflict": {
"symplify\/coding-standard": "<11.1.6",
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6"
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
"phpunit\/phpunit": "^9.5.23",
"symplify\/symplify-kernel": "^11.1.7"
},
"time": "2022-08-31T08:17:59+00:00",
"time": "2022-09-01T19:30:33+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3169,7 +3169,7 @@
],
"description": "Autowire array parameters for your Symfony applications",
"support": {
"source": "https:\/\/github.com\/symplify\/autowire-array-parameter\/tree\/11.1.6"
"source": "https:\/\/github.com\/symplify\/autowire-array-parameter\/tree\/11.1.7"
},
"funding": [
{
@ -3185,17 +3185,17 @@
},
{
"name": "symplify\/easy-parallel",
"version": "11.1.6",
"version_normalized": "11.1.6.0",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/easy-parallel.git",
"reference": "94dc8a3744341c18233ac46686a177972611a20a"
"reference": "9fc3cb884b8e19bd46de7cedde9115483274d9f9"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/easy-parallel\/zipball\/94dc8a3744341c18233ac46686a177972611a20a",
"reference": "94dc8a3744341c18233ac46686a177972611a20a",
"url": "https:\/\/api.github.com\/repos\/symplify\/easy-parallel\/zipball\/9fc3cb884b8e19bd46de7cedde9115483274d9f9",
"reference": "9fc3cb884b8e19bd46de7cedde9115483274d9f9",
"shasum": ""
},
"require": {
@ -3205,32 +3205,31 @@
"react\/event-loop": "^1.3",
"react\/socket": "^1.11",
"symfony\/console": "^6.0",
"symplify\/package-builder": "^11.1.6"
"symplify\/package-builder": "^11.1.7"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6"
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
},
"time": "2022-08-31T08:18:02+00:00",
"time": "2022-09-01T19:30:44+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3250,23 +3249,23 @@
"description": "Helper package for easier CLI project parallelization",
"support": {
"issues": "https:\/\/github.com\/symplify\/easy-parallel\/issues",
"source": "https:\/\/github.com\/symplify\/easy-parallel\/tree\/11.1.6"
"source": "https:\/\/github.com\/symplify\/easy-parallel\/tree\/11.1.7"
},
"install-path": "..\/symplify\/easy-parallel"
},
{
"name": "symplify\/package-builder",
"version": "dev-main",
"version_normalized": "dev-main",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/package-builder.git",
"reference": "abb61fa4dc9b1d7c01df23993ecbebeafdb89592"
"reference": "d3b105c2343b8b5c4174e69c2cac3ad305743cee"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/package-builder\/zipball\/abb61fa4dc9b1d7c01df23993ecbebeafdb89592",
"reference": "abb61fa4dc9b1d7c01df23993ecbebeafdb89592",
"url": "https:\/\/api.github.com\/repos\/symplify\/package-builder\/zipball\/d3b105c2343b8b5c4174e69c2cac3ad305743cee",
"reference": "d3b105c2343b8b5c4174e69c2cac3ad305743cee",
"shasum": ""
},
"require": {
@ -3279,30 +3278,30 @@
"symfony\/finder": "^6.0"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6"
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23",
"symplify\/symplify-kernel": "^11.2"
"symplify\/symplify-kernel": "^11.1.7"
},
"time": "2022-09-01T15:48:20+00:00",
"default-branch": true,
"time": "2022-09-01T19:30:44+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3321,7 +3320,7 @@
],
"description": "Dependency Injection, Console and Kernel toolkit for Symplify packages.",
"support": {
"source": "https:\/\/github.com\/symplify\/package-builder\/tree\/main"
"source": "https:\/\/github.com\/symplify\/package-builder\/tree\/11.1.7"
},
"funding": [
{
@ -3337,17 +3336,17 @@
},
{
"name": "symplify\/rule-doc-generator-contracts",
"version": "11.1.6",
"version_normalized": "11.1.6.0",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts.git",
"reference": "9a770657a2f7be08d87286201cd6a79bb10cbea1"
"reference": "2b7bc99e8f90a7d1711877054602d0b29f23e0ae"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/rule-doc-generator-contracts\/zipball\/9a770657a2f7be08d87286201cd6a79bb10cbea1",
"reference": "9a770657a2f7be08d87286201cd6a79bb10cbea1",
"url": "https:\/\/api.github.com\/repos\/symplify\/rule-doc-generator-contracts\/zipball\/2b7bc99e8f90a7d1711877054602d0b29f23e0ae",
"reference": "2b7bc99e8f90a7d1711877054602d0b29f23e0ae",
"shasum": ""
},
"require": {
@ -3355,27 +3354,26 @@
"php": ">=8.0"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/package-builder": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6"
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/package-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"time": "2022-08-31T08:16:27+00:00",
"time": "2022-09-01T19:29:57+00:00",
"type": "library",
"extra": {
"branch-alias": {
@ -3394,7 +3392,7 @@
],
"description": "Contracts for production code of RuleDocGenerator",
"support": {
"source": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts\/tree\/11.1.6"
"source": "https:\/\/github.com\/symplify\/rule-doc-generator-contracts\/tree\/11.1.7"
},
"funding": [
{
@ -3408,6 +3406,151 @@
],
"install-path": "..\/symplify\/rule-doc-generator-contracts"
},
{
"name": "symplify\/smart-file-system",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/smart-file-system.git",
"reference": "27a558183ad321a8a42465cf28f51b94ef96ffae"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/smart-file-system\/zipball\/27a558183ad321a8a42465cf28f51b94ef96ffae",
"reference": "27a558183ad321a8a42465cf28f51b94ef96ffae",
"shasum": ""
},
"require": {
"nette\/utils": "^3.2",
"php": ">=8.0",
"symfony\/filesystem": "^6.0",
"symfony\/finder": "^6.0"
},
"conflict": {
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/package-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"require-dev": {
"nette\/finder": "^2.5.3",
"phpunit\/phpunit": "^9.5.23"
},
"time": "2022-09-01T19:30:01+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "11.2-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SmartFileSystem\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
"license": [
"MIT"
],
"description": "Sanitized FileInfo with safe getRealPath() and other handy methods",
"support": {
"source": "https:\/\/github.com\/symplify\/smart-file-system\/tree\/11.1.7"
},
"funding": [
{
"url": "https:\/\/www.paypal.me\/rectorphp",
"type": "custom"
},
{
"url": "https:\/\/github.com\/tomasvotruba",
"type": "github"
}
],
"install-path": "..\/symplify\/smart-file-system"
},
{
"name": "symplify\/symplify-kernel",
"version": "11.1.7",
"version_normalized": "11.1.7.0",
"source": {
"type": "git",
"url": "https:\/\/github.com\/symplify\/symplify-kernel.git",
"reference": "6273fb5d5b3cbaa2ddf1bab862e2328f1bd48873"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/symplify\/symplify-kernel\/zipball\/6273fb5d5b3cbaa2ddf1bab862e2328f1bd48873",
"reference": "6273fb5d5b3cbaa2ddf1bab862e2328f1bd48873",
"shasum": ""
},
"require": {
"php": ">=8.0",
"symfony\/console": "^6.0",
"symfony\/dependency-injection": "^6.0",
"symplify\/autowire-array-parameter": "^11.1.7",
"symplify\/package-builder": "^11.1.7",
"symplify\/smart-file-system": "^11.1.7",
"webmozart\/assert": "^1.10"
},
"conflict": {
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
},
"time": "2022-09-01T19:31:05+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "11.2-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SymplifyKernel\\": "src"
}
},
"notification-url": "https:\/\/packagist.org\/downloads\/",
"license": [
"MIT"
],
"description": "Internal Kernel for Symplify packages",
"support": {
"source": "https:\/\/github.com\/symplify\/symplify-kernel\/tree\/11.1.7"
},
"install-path": "..\/symplify\/symplify-kernel"
},
{
"name": "webmozart\/assert",
"version": "1.11.0",

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ namespace Rector\RectorInstaller;
*/
final class GeneratedConfig
{
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main bfaf952'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 3ef7085'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main f2439d5'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main b5d0ad8'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main e5a1d4c'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 087730e'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 1a89172'));
public const EXTENSIONS = array('rector/rector-cakephp' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-cakephp', 'relative_install_path' => '../../rector-cakephp', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main bfaf952'), 'rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 3ef7085'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main f2439d5'), 'rector/rector-laravel' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-laravel', 'relative_install_path' => '../../rector-laravel', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main b5d0ad8'), 'rector/rector-phpoffice' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpoffice', 'relative_install_path' => '../../rector-phpoffice', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main e5a1d4c'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 087730e'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 4801624'));
private function __construct()
{
}

View File

@ -6,7 +6,7 @@ namespace Rector\Symfony\DataProvider;
use Rector\Core\Configuration\Option;
use Rector\Symfony\ValueObject\ServiceMap\ServiceMap;
use Rector\Symfony\ValueObjectFactory\ServiceMapFactory;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use Rector\Core\Configuration\Parameter\ParameterProvider;
/**
* Inspired by https://github.com/phpstan/phpstan-symfony/tree/master/src/Symfony
*/
@ -14,7 +14,7 @@ final class ServiceMapProvider
{
/**
* @readonly
* @var \Symplify\PackageBuilder\Parameter\ParameterProvider
* @var \Rector\Core\Configuration\Parameter\ParameterProvider
*/
private $parameterProvider;
/**

View File

@ -4,6 +4,12 @@
$loader = require_once __DIR__.'/autoload.php';
// Exposed classes. For more information see:
// https://github.com/humbug/php-scoper/blob/master/docs/configuration.md#exposing-classes
if (!class_exists('Symplify\SmartFileSystem\SmartFileInfo', false) && !interface_exists('Symplify\SmartFileSystem\SmartFileInfo', false) && !trait_exists('Symplify\SmartFileSystem\SmartFileInfo', false)) {
spl_autoload_call('RectorPrefix202209\Symplify\SmartFileSystem\SmartFileInfo');
}
// Exposed functions. For more information see:
// https://github.com/humbug/php-scoper/blob/master/docs/configuration.md#exposing-functions
if (!function_exists('trigger_deprecation')) {

View File

@ -6,10 +6,11 @@
"php": ">=8.0",
"nette\/utils": "^3.2",
"symfony\/dependency-injection": "^6.0",
"symplify\/package-builder": "^11.1.6"
"symplify\/package-builder": "^11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
"phpunit\/phpunit": "^9.5.23",
"symplify\/symplify-kernel": "^11.1.7"
},
"autoload": {
"psr-4": {
@ -27,24 +28,23 @@
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6"
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -9,7 +9,7 @@
"react\/event-loop": "^1.3",
"react\/socket": "^1.11",
"symfony\/console": "^6.0",
"symplify\/package-builder": "^11.1.6"
"symplify\/package-builder": "^11.1.7"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
@ -33,24 +33,23 @@
"platform-check": false
},
"conflict": {
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6"
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -12,7 +12,7 @@
"symfony\/finder": "^6.0"
},
"require-dev": {
"symplify\/symplify-kernel": "^11.2",
"symplify\/symplify-kernel": "^11.1.7",
"phpunit\/phpunit": "^9.5.23"
},
"autoload": {
@ -31,23 +31,24 @@
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/rule-doc-generator-contracts": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6",
"symplify\/easy-testing": "<11.1.6"
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -17,25 +17,24 @@
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.6",
"symplify\/easy-coding-standard": "<11.1.6",
"symplify\/phpstan-rules": "<11.1.6",
"symplify\/easy-testing": "<11.1.6",
"symplify\/php-config-printer": "<11.1.6",
"symplify\/autowire-array-parameter": "<11.1.6",
"symplify\/package-builder": "<11.1.6",
"symplify\/phpstan-extensions": "<11.1.6",
"symplify\/rule-doc-generator": "<11.1.6",
"symplify\/vendor-patches": "<11.1.6",
"symplify\/skipper": "<11.1.6",
"symplify\/smart-file-system": "<11.1.6",
"symplify\/symfony-static-dumper": "<11.1.6",
"symplify\/symplify-kernel": "<11.1.6",
"symplify\/monorepo-builder": "<11.1.6",
"symplify\/config-transformer": "<11.1.6",
"symplify\/easy-ci": "<11.1.6",
"symplify\/coding-standard": "<11.1.6",
"symplify\/easy-parallel": "<11.1.6"
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/package-builder": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/smart-file-system": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true

View File

@ -0,0 +1,25 @@
The MIT License
---------------
Copyright (c) 2019 Tomas Votruba (https://tomasvotruba.com)
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.

View File

@ -0,0 +1,52 @@
{
"name": "symplify\/smart-file-system",
"description": "Sanitized FileInfo with safe getRealPath() and other handy methods",
"license": "MIT",
"require": {
"php": ">=8.0",
"nette\/utils": "^3.2",
"symfony\/finder": "^6.0",
"symfony\/filesystem": "^6.0"
},
"require-dev": {
"nette\/finder": "^2.5.3",
"phpunit\/phpunit": "^9.5.23"
},
"autoload": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SmartFileSystem\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SmartFileSystem\\Tests\\": "tests"
}
},
"extra": {
"branch-alias": {
"dev-main": "11.2-dev"
}
},
"conflict": {
"symplify\/composer-json-manipulator": "<11.1.7",
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/autowire-array-parameter": "<11.1.7",
"symplify\/package-builder": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/symplify-kernel": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Exception;
use Exception;
final class DirectoryNotFoundException extends Exception
{
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Exception;
use Exception;
final class FileNotFoundException extends Exception
{
}

View File

@ -0,0 +1,33 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem;
/**
* @see \Symplify\SmartFileSystem\Tests\FileSystemFilter\FileSystemFilterTest
*/
final class FileSystemFilter
{
/**
* @param string[] $filesAndDirectories
* @return string[]
*/
public function filterDirectories(array $filesAndDirectories) : array
{
$directories = \array_filter($filesAndDirectories, static function (string $path) : bool {
return !\is_file($path);
});
return \array_values($directories);
}
/**
* @param string[] $filesAndDirectories
* @return string[]
*/
public function filterFiles(array $filesAndDirectories) : array
{
$files = \array_filter($filesAndDirectories, static function (string $path) : bool {
return \is_file($path);
});
return \array_values($files);
}
}

View File

@ -0,0 +1,28 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem;
use RectorPrefix202209\Symplify\SmartFileSystem\Exception\DirectoryNotFoundException;
use RectorPrefix202209\Symplify\SmartFileSystem\Exception\FileNotFoundException;
final class FileSystemGuard
{
public function ensureFileExists(string $file, string $location) : void
{
if (\file_exists($file)) {
return;
}
throw new FileNotFoundException(\sprintf('File "%s" not found in "%s".', $file, $location));
}
public function ensureDirectoryExists(string $directory, string $extraMessage) : void
{
if (\is_dir($directory) && \file_exists($directory)) {
return;
}
$message = \sprintf('Directory "%s" was not found.', $directory);
if ($extraMessage !== '') {
$message .= ' ' . $extraMessage;
}
throw new DirectoryNotFoundException($message);
}
}

View File

@ -0,0 +1,38 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Finder;
use RectorPrefix202209\Nette\Utils\Finder as NetteFinder;
use SplFileInfo;
use RectorPrefix202209\Symfony\Component\Finder\Finder as SymfonyFinder;
use RectorPrefix202209\Symfony\Component\Finder\SplFileInfo as SymfonySplFileInfo;
use Symplify\SmartFileSystem\SmartFileInfo;
/**
* @see \Symplify\SmartFileSystem\Tests\Finder\FinderSanitizer\FinderSanitizerTest
*/
final class FinderSanitizer
{
/**
* @param NetteFinder|SymfonyFinder|mixed[] $files
* @return SmartFileInfo[]
*/
public function sanitize($files) : array
{
$smartFileInfos = [];
foreach ($files as $file) {
$fileInfo = \is_string($file) ? new SplFileInfo($file) : $file;
if (!$this->isFileInfoValid($fileInfo)) {
continue;
}
/** @var string $realPath */
$realPath = $fileInfo->getRealPath();
$smartFileInfos[] = new SmartFileInfo($realPath);
}
return $smartFileInfos;
}
private function isFileInfoValid(SplFileInfo $fileInfo) : bool
{
return (bool) $fileInfo->getRealPath();
}
}

View File

@ -0,0 +1,66 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Finder;
use RectorPrefix202209\Symfony\Component\Finder\Finder;
use RectorPrefix202209\Symplify\SmartFileSystem\FileSystemFilter;
use Symplify\SmartFileSystem\SmartFileInfo;
/**
* @api
* @see \Symplify\SmartFileSystem\Tests\Finder\SmartFinder\SmartFinderTest
*/
final class SmartFinder
{
/**
* @var \Symplify\SmartFileSystem\Finder\FinderSanitizer
*/
private $finderSanitizer;
/**
* @var \Symplify\SmartFileSystem\FileSystemFilter
*/
private $fileSystemFilter;
public function __construct(FinderSanitizer $finderSanitizer, FileSystemFilter $fileSystemFilter)
{
$this->finderSanitizer = $finderSanitizer;
$this->fileSystemFilter = $fileSystemFilter;
}
/**
* @param string[] $directoriesOrFiles
* @return SmartFileInfo[]
*/
public function findPaths(array $directoriesOrFiles, string $path) : array
{
$directories = $this->fileSystemFilter->filterDirectories($directoriesOrFiles);
$fileInfos = [];
if ($directories !== []) {
$finder = new Finder();
$finder->name('*')->in($directories)->path($path)->files()->sortByName();
$fileInfos = $this->finderSanitizer->sanitize($finder);
}
return $fileInfos;
}
/**
* @param string[] $directoriesOrFiles
* @param string[] $excludedDirectories
* @return SmartFileInfo[]
*/
public function find(array $directoriesOrFiles, string $name, array $excludedDirectories = []) : array
{
$directories = $this->fileSystemFilter->filterDirectories($directoriesOrFiles);
$fileInfos = [];
if ($directories !== []) {
$finder = new Finder();
$finder->name($name)->in($directories)->files()->sortByName();
if ($excludedDirectories !== []) {
$finder->exclude($excludedDirectories);
}
$fileInfos = $this->finderSanitizer->sanitize($finder);
}
$files = $this->fileSystemFilter->filterFiles($directoriesOrFiles);
foreach ($files as $file) {
$fileInfos[] = new SmartFileInfo($file);
}
return $fileInfos;
}
}

View File

@ -0,0 +1,55 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Json;
use RectorPrefix202209\Nette\Utils\Arrays;
use RectorPrefix202209\Nette\Utils\Json;
use RectorPrefix202209\Symplify\SmartFileSystem\FileSystemGuard;
use RectorPrefix202209\Symplify\SmartFileSystem\SmartFileSystem;
/**
* @api
* @see \Symplify\SmartFileSystem\Tests\Json\JsonFileSystem\JsonFileSystemTest
*/
final class JsonFileSystem
{
/**
* @var \Symplify\SmartFileSystem\FileSystemGuard
*/
private $fileSystemGuard;
/**
* @var \Symplify\SmartFileSystem\SmartFileSystem
*/
private $smartFileSystem;
public function __construct(FileSystemGuard $fileSystemGuard, SmartFileSystem $smartFileSystem)
{
$this->fileSystemGuard = $fileSystemGuard;
$this->smartFileSystem = $smartFileSystem;
}
/**
* @return mixed[]
*/
public function loadFilePathToJson(string $filePath) : array
{
$this->fileSystemGuard->ensureFileExists($filePath, __METHOD__);
$fileContent = $this->smartFileSystem->readFile($filePath);
return Json::decode($fileContent, Json::FORCE_ARRAY);
}
/**
* @param array<string, mixed> $jsonArray
*/
public function writeJsonToFilePath(array $jsonArray, string $filePath) : void
{
$jsonContent = Json::encode($jsonArray, Json::PRETTY) . \PHP_EOL;
$this->smartFileSystem->dumpFile($filePath, $jsonContent);
}
/**
* @param array<string, mixed> $newJsonArray
*/
public function mergeArrayToJsonFile(string $filePath, array $newJsonArray) : void
{
$jsonArray = $this->loadFilePathToJson($filePath);
$newComposerJsonArray = Arrays::mergeTree($jsonArray, $newJsonArray);
$this->writeJsonToFilePath($newComposerJsonArray, $filePath);
}
}

View File

@ -0,0 +1,77 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem\Normalizer;
use RectorPrefix202209\Nette\Utils\Strings;
/**
* @api
*
* Used from
* https://github.com/phpstan/phpstan-src/blob/02425e61aa48f0668b4efb3e73d52ad544048f65/src/File/FileHelper.php#L40,
* with custom modifications
*
* @see \Symplify\SmartFileSystem\Tests\Normalizer\PathNormalizerTest
*/
final class PathNormalizer
{
/**
* @see https://regex101.com/r/d4F5Fm/1
* @var string
*/
private const SCHEME_PATH_REGEX = '#^([a-z]+)\\:\\/\\/(.+)#';
/**
* @see https://regex101.com/r/no28vw/1
* @var string
*/
private const TWO_AND_MORE_SLASHES_REGEX = '#/{2,}#';
/**
* @var string
*/
private const SCHEME_UNDEFINED = 'undefined';
public function normalizePath(string $originalPath) : string
{
$directorySeparator = \DIRECTORY_SEPARATOR;
$matches = Strings::match($originalPath, self::SCHEME_PATH_REGEX);
if ($matches !== null) {
[, $scheme, $path] = $matches;
} else {
$scheme = self::SCHEME_UNDEFINED;
$path = $originalPath;
}
$normalizedPath = \str_replace('\\', '/', $path);
$path = Strings::replace($normalizedPath, self::TWO_AND_MORE_SLASHES_REGEX, '/');
$pathRoot = \strncmp($path, '/', \strlen('/')) === 0 ? $directorySeparator : '';
$pathParts = \explode('/', \trim($path, '/'));
$normalizedPathParts = $this->normalizePathParts($pathParts, $scheme);
$pathStart = $scheme !== self::SCHEME_UNDEFINED ? $scheme . '://' : '';
return $pathStart . $pathRoot . \implode($directorySeparator, $normalizedPathParts);
}
/**
* @param string[] $pathParts
* @return string[]
*/
private function normalizePathParts(array $pathParts, string $scheme) : array
{
$normalizedPathParts = [];
foreach ($pathParts as $pathPart) {
if ($pathPart === '.') {
continue;
}
if ($pathPart !== '..') {
$normalizedPathParts[] = $pathPart;
continue;
}
/** @var string $removedPart */
$removedPart = \array_pop($normalizedPathParts);
if ($scheme !== 'phar') {
continue;
}
if (\substr_compare($removedPart, '.phar', -\strlen('.phar')) !== 0) {
continue;
}
$scheme = self::SCHEME_UNDEFINED;
}
return $normalizedPathParts;
}
}

View File

@ -0,0 +1,131 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem;
use RectorPrefix202209\Nette\Utils\Strings;
use RectorPrefix202209\Symfony\Component\Finder\SplFileInfo;
use RectorPrefix202209\Symplify\EasyTesting\PHPUnit\StaticPHPUnitEnvironment;
use RectorPrefix202209\Symplify\EasyTesting\StaticFixtureSplitter;
use RectorPrefix202209\Symplify\SmartFileSystem\Exception\DirectoryNotFoundException;
use RectorPrefix202209\Symplify\SmartFileSystem\Exception\FileNotFoundException;
/**
* @api
* @see \Symplify\SmartFileSystem\Tests\SmartFileInfo\SmartFileInfoTest
*/
final class SmartFileInfo extends SplFileInfo
{
/**
* @var string
* @see https://regex101.com/r/SYP00O/1
*/
private const LAST_SUFFIX_REGEX = '#\\.[^.]+$#';
/**
* @var \Symplify\SmartFileSystem\SmartFileSystem
*/
private $smartFileSystem;
public function __construct(string $filePath)
{
$this->smartFileSystem = new SmartFileSystem();
// accepts also dirs
if (!\file_exists($filePath)) {
throw new FileNotFoundException(\sprintf('File path "%s" was not found while creating "%s" object.', $filePath, self::class));
}
// real path doesn't work in PHAR: https://www.php.net/manual/en/function.realpath.php
if (\strncmp($filePath, 'phar://', \strlen('phar://')) === 0) {
$relativeFilePath = $filePath;
$relativeDirectoryPath = \dirname($filePath);
} else {
$realPath = \realpath($filePath);
$relativeFilePath = \rtrim($this->smartFileSystem->makePathRelative($realPath, \getcwd()), '/');
$relativeDirectoryPath = \dirname($relativeFilePath);
}
parent::__construct($filePath, $relativeDirectoryPath, $relativeFilePath);
}
public function getBasenameWithoutSuffix() : string
{
return \pathinfo($this->getFilename())['filename'];
}
public function getSuffix() : string
{
return \pathinfo($this->getFilename(), \PATHINFO_EXTENSION);
}
/**
* @param string[] $suffixes
*/
public function hasSuffixes(array $suffixes) : bool
{
return \in_array($this->getSuffix(), $suffixes, \true);
}
public function getRealPathWithoutSuffix() : string
{
return Strings::replace($this->getRealPath(), self::LAST_SUFFIX_REGEX, '');
}
public function getRelativeFilePath() : string
{
return $this->getRelativePathname();
}
public function getRelativeDirectoryPath() : string
{
return $this->getRelativePath();
}
public function getRelativeFilePathFromDirectory(string $directory) : string
{
if (!\file_exists($directory)) {
throw new DirectoryNotFoundException(\sprintf('Directory "%s" was not found in %s.', $directory, self::class));
}
$relativeFilePath = $this->smartFileSystem->makePathRelative($this->getNormalizedRealPath(), (string) \realpath($directory));
return \rtrim($relativeFilePath, '/');
}
public function getRelativeFilePathFromCwdInTests() : string
{
// special case for tests
if (StaticPHPUnitEnvironment::isPHPUnitRun()) {
return $this->getRelativeFilePathFromDirectory(StaticFixtureSplitter::getTemporaryPath());
}
return $this->getRelativeFilePathFromDirectory(\getcwd());
}
public function getRelativeFilePathFromCwd() : string
{
return $this->getRelativeFilePathFromDirectory(\getcwd());
}
public function endsWith(string $string) : bool
{
return \substr_compare($this->getNormalizedRealPath(), $string, -\strlen($string)) === 0;
}
public function doesFnmatch(string $string) : bool
{
$normalizedPath = $this->normalizePath($string);
if (\fnmatch($normalizedPath, $this->getNormalizedRealPath())) {
return \true;
}
// in case of relative compare
return \fnmatch('*/' . $normalizedPath, $this->getNormalizedRealPath());
}
public function getRealPath() : string
{
// for phar compatibility @see https://github.com/rectorphp/rector/commit/e5d7cee69558f7e6b35d995a5ca03fa481b0407c
return parent::getRealPath() ?: $this->getPathname();
}
public function getRealPathDirectory() : string
{
return \dirname($this->getRealPath());
}
public function startsWith(string $partialPath) : bool
{
return \strncmp($this->getNormalizedRealPath(), $partialPath, \strlen($partialPath)) === 0;
}
private function getNormalizedRealPath() : string
{
return $this->normalizePath($this->getRealPath());
}
private function normalizePath(string $path) : string
{
return \str_replace('\\', '/', $path);
}
}
/**
* @api
* @see \Symplify\SmartFileSystem\Tests\SmartFileInfo\SmartFileInfoTest
*/
\class_alias('RectorPrefix202209\\Symplify\\SmartFileSystem\\SmartFileInfo', 'Symplify\\SmartFileSystem\\SmartFileInfo', \false);

View File

@ -0,0 +1,56 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SmartFileSystem;
use RectorPrefix202209\Nette\Utils\Strings;
use RectorPrefix202209\Symfony\Component\Filesystem\Exception\IOException;
use RectorPrefix202209\Symfony\Component\Filesystem\Filesystem;
/**
* @see \Symplify\SmartFileSystem\Tests\SmartFileSystem\SmartFileSystemTest
*/
final class SmartFileSystem extends Filesystem
{
/**
* @var string
* @see https://regex101.com/r/tx6eyw/1
*/
private const BEFORE_COLLON_REGEX = '#^\\w+\\(.*?\\): #';
/**
* @see https://github.com/symfony/filesystem/pull/4/files
*/
public function readFile(string $fileName) : string
{
$source = @\file_get_contents($fileName);
if (!$source) {
$message = \sprintf('Failed to read "%s" file: "%s"', $fileName, $this->getLastError());
throw new IOException($message, 0, null, $fileName);
}
return $source;
}
public function readFileToSmartFileInfo(string $fileName) : SmartFileInfo
{
return new SmartFileInfo($fileName);
}
/**
* Converts given HTML code to plain text
*
* @source https://github.com/nette/utils/blob/e7bd59f1dd860d25dbbb1ac720dddd0fa1388f4c/src/Utils/Html.php#L325-L331
*/
private function htmlToText(string $html) : string
{
$content = \strip_tags($html);
return \html_entity_decode($content, \ENT_QUOTES | \ENT_HTML5, 'UTF-8');
}
/**
* Returns the last PHP error as plain string.
*
* @source https://github.com/nette/utils/blob/ab8eea12b8aacc7ea5bdafa49b711c2988447994/src/Utils/Helpers.php#L31-L40
*/
private function getLastError() : string
{
$message = \error_get_last()['message'] ?? '';
$htmlMessage = \ini_get('html_errors') ? $this->htmlToText($message) : $message;
return Strings::replace($htmlMessage, self::BEFORE_COLLON_REGEX, '');
}
}

View File

@ -0,0 +1,71 @@
# Symplify Kernel
[![Downloads total](https://img.shields.io/packagist/dt/symplify/symplify-kernel.svg?style=flat-square)](https://packagist.org/packages/symplify/symplify-kernel/stats)
Do you use Symfony Kernel, but not for PHP projects?
Use Symfony Kernel for:
* light [Symfony Console Apps](https://tomasvotruba.com/blog/introducing-light-kernel-for-symfony-console-apps/) without Http
* faster and easy-to-setup tests
* merging of array parameters in 2 configs
## Install
```bash
composer require symplify/symplify-kernel --dev
```
## Usage
### 1. Light Kernel for Symfony CLI Apps
```php
use Psr\Container\ContainerInterface;
use Symplify\SymplifyKernel\ContainerBuilderFactory;
final class MonorepoBuilderKernel
{
/**
* @param string[] $configFiles
*/
public function createFromConfigs(array $configFiles): ContainerInterface
{
// local config here
$configFiles[] = __DIR__ . '/../../config/config.php';
$containerBuilderFactory = new ContainerBuilderFactory();
$containerBuilder = $containerBuilderFactory->create($configFiles, [], []);
// build the container
$containerBuilder->compile();
return $containerBuilder;
}
}
```
Then use in your `bin/app.php` file:
```php
$easyCIKernel = new MonorepoBuilderKernel();
$easyCIKernel->createFromConfigs([__DIR__ . '/config/config.php']);
$container = $easyCIKernel->getContainer();
/** @var Application $application */
$application = $container->get(Application::class);
exit($application->run());
```
That's it!
<br>
## Report Issues
In case you are experiencing a bug or want to request a new feature head over to the [Symplify monorepo issue tracker](https://github.com/symplify/symplify/issues)
## Contribute
The sources of this package are contained in the Symplify monorepo. We welcome contributions for this package on [symplify/symplify](https://github.com/symplify/symplify).

View File

@ -0,0 +1,51 @@
{
"name": "symplify\/symplify-kernel",
"description": "Internal Kernel for Symplify packages",
"license": "MIT",
"require": {
"php": ">=8.0",
"symfony\/console": "^6.0",
"symfony\/dependency-injection": "^6.0",
"symplify\/smart-file-system": "^11.1.7",
"symplify\/autowire-array-parameter": "^11.1.7",
"symplify\/package-builder": "^11.1.7",
"webmozart\/assert": "^1.10"
},
"require-dev": {
"phpunit\/phpunit": "^9.5.23"
},
"autoload": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SymplifyKernel\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"RectorPrefix202209\\Symplify\\SymplifyKernel\\Tests\\": "tests"
}
},
"extra": {
"branch-alias": {
"dev-main": "11.2-dev"
}
},
"conflict": {
"symplify\/easy-coding-standard": "<11.1.7",
"symplify\/phpstan-rules": "<11.1.7",
"symplify\/easy-testing": "<11.1.7",
"symplify\/rule-doc-generator-contracts": "<11.1.7",
"symplify\/php-config-printer": "<11.1.7",
"symplify\/phpstan-extensions": "<11.1.7",
"symplify\/rule-doc-generator": "<11.1.7",
"symplify\/vendor-patches": "<11.1.7",
"symplify\/symfony-static-dumper": "<11.1.7",
"symplify\/monorepo-builder": "<11.1.7",
"symplify\/config-transformer": "<11.1.7",
"symplify\/easy-ci": "<11.1.7",
"symplify\/coding-standard": "<11.1.7",
"symplify\/easy-parallel": "<11.1.7",
"symplify\/composer-json-manipulator": "<11.1.7"
},
"minimum-stability": "dev",
"prefer-stable": true
}

View File

@ -0,0 +1,31 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209;
use RectorPrefix202209\Symfony\Component\Console\Style\SymfonyStyle;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use RectorPrefix202209\Symplify\PackageBuilder\Console\Style\SymfonyStyleFactory;
use RectorPrefix202209\Symplify\PackageBuilder\Parameter\ParameterProvider;
use RectorPrefix202209\Symplify\PackageBuilder\Reflection\PrivatesAccessor;
use RectorPrefix202209\Symplify\SmartFileSystem\FileSystemFilter;
use RectorPrefix202209\Symplify\SmartFileSystem\FileSystemGuard;
use RectorPrefix202209\Symplify\SmartFileSystem\Finder\FinderSanitizer;
use RectorPrefix202209\Symplify\SmartFileSystem\Finder\SmartFinder;
use RectorPrefix202209\Symplify\SmartFileSystem\SmartFileSystem;
use function RectorPrefix202209\Symfony\Component\DependencyInjection\Loader\Configurator\service;
return static function (ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->defaults()->public()->autowire();
// symfony style
$services->set(SymfonyStyleFactory::class);
$services->set(SymfonyStyle::class)->factory([service(SymfonyStyleFactory::class), 'create']);
// filesystem
$services->set(FinderSanitizer::class);
$services->set(SmartFileSystem::class);
$services->set(SmartFinder::class);
$services->set(FileSystemGuard::class);
$services->set(FileSystemFilter::class);
$services->set(ParameterProvider::class)->args([service('service_container')]);
$services->set(PrivatesAccessor::class);
};

View File

@ -0,0 +1,9 @@
<phpunit
bootstrap="vendor/autoload.php"
colors="true"
verbose="true"
>
<testsuite name="all">
<directory>tests</directory>
</testsuite>
</phpunit>

View File

@ -0,0 +1,22 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Config\Loader;
use RectorPrefix202209\Symfony\Component\Config\FileLocator;
use RectorPrefix202209\Symfony\Component\Config\Loader\DelegatingLoader;
use RectorPrefix202209\Symfony\Component\Config\Loader\GlobFileLoader;
use RectorPrefix202209\Symfony\Component\Config\Loader\LoaderResolver;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
use RectorPrefix202209\Symplify\PackageBuilder\DependencyInjection\FileLoader\ParameterMergingPhpFileLoader;
use RectorPrefix202209\Symplify\SymplifyKernel\Contract\Config\LoaderFactoryInterface;
final class ParameterMergingLoaderFactory implements LoaderFactoryInterface
{
public function create(ContainerBuilder $containerBuilder, string $currentWorkingDirectory) : \RectorPrefix202209\Symfony\Component\Config\Loader\LoaderInterface
{
$fileLocator = new FileLocator([$currentWorkingDirectory]);
$loaders = [new GlobFileLoader($fileLocator), new ParameterMergingPhpFileLoader($containerBuilder, $fileLocator)];
$loaderResolver = new LoaderResolver($loaders);
return new DelegatingLoader($loaderResolver);
}
}

View File

@ -0,0 +1,74 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
use RectorPrefix202209\Symplify\SymplifyKernel\Contract\Config\LoaderFactoryInterface;
use RectorPrefix202209\Symplify\SymplifyKernel\DependencyInjection\LoadExtensionConfigsCompilerPass;
use RectorPrefix202209\Webmozart\Assert\Assert;
/**
* @see \Symplify\SymplifyKernel\Tests\ContainerBuilderFactory\ContainerBuilderFactoryTest
*/
final class ContainerBuilderFactory
{
/**
* @var \Symplify\SymplifyKernel\Contract\Config\LoaderFactoryInterface
*/
private $loaderFactory;
public function __construct(LoaderFactoryInterface $loaderFactory)
{
$this->loaderFactory = $loaderFactory;
}
/**
* @param string[] $configFiles
* @param CompilerPassInterface[] $compilerPasses
* @param ExtensionInterface[] $extensions
*/
public function create(array $configFiles, array $compilerPasses, array $extensions) : ContainerBuilder
{
Assert::allIsAOf($extensions, ExtensionInterface::class);
Assert::allIsAOf($compilerPasses, CompilerPassInterface::class);
Assert::allString($configFiles);
Assert::allFile($configFiles);
$containerBuilder = new ContainerBuilder();
$this->registerExtensions($containerBuilder, $extensions);
$this->registerConfigFiles($containerBuilder, $configFiles);
$this->registerCompilerPasses($containerBuilder, $compilerPasses);
// this calls load() method in every extensions
// ensure these extensions are implicitly loaded
$compilerPassConfig = $containerBuilder->getCompilerPassConfig();
$compilerPassConfig->setMergePass(new LoadExtensionConfigsCompilerPass());
return $containerBuilder;
}
/**
* @param ExtensionInterface[] $extensions
*/
private function registerExtensions(ContainerBuilder $containerBuilder, array $extensions) : void
{
foreach ($extensions as $extension) {
$containerBuilder->registerExtension($extension);
}
}
/**
* @param CompilerPassInterface[] $compilerPasses
*/
private function registerCompilerPasses(ContainerBuilder $containerBuilder, array $compilerPasses) : void
{
foreach ($compilerPasses as $compilerPass) {
$containerBuilder->addCompilerPass($compilerPass);
}
}
/**
* @param string[] $configFiles
*/
private function registerConfigFiles(ContainerBuilder $containerBuilder, array $configFiles) : void
{
$delegatingLoader = $this->loaderFactory->create($containerBuilder, \getcwd());
foreach ($configFiles as $configFile) {
$delegatingLoader->load($configFile);
}
}
}

View File

@ -0,0 +1,11 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Contract\Config;
use RectorPrefix202209\Symfony\Component\Config\Loader\LoaderInterface;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
interface LoaderFactoryInterface
{
public function create(ContainerBuilder $containerBuilder, string $currentWorkingDirectory) : LoaderInterface;
}

View File

@ -0,0 +1,17 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Contract;
use RectorPrefix202209\Psr\Container\ContainerInterface;
/**
* @api
*/
interface LightKernelInterface
{
/**
* @param string[] $configFiles
*/
public function createFromConfigs(array $configFiles) : ContainerInterface;
public function getContainer() : ContainerInterface;
}

View File

@ -0,0 +1,22 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\DependencyInjection;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
/**
* Mimics @see \Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass without dependency on
* symfony/http-kernel
*/
final class LoadExtensionConfigsCompilerPass extends MergeExtensionConfigurationPass
{
public function process(ContainerBuilder $containerBuilder) : void
{
$extensionNames = \array_keys($containerBuilder->getExtensions());
foreach ($extensionNames as $extensionName) {
$containerBuilder->loadFromExtension($extensionName, []);
}
parent::process($containerBuilder);
}
}

View File

@ -0,0 +1,9 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Exception;
use Exception;
final class BootException extends Exception
{
}

View File

@ -0,0 +1,12 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Exception;
use Exception;
/**
* @api
*/
final class ShouldNotHappenException extends Exception
{
}

View File

@ -0,0 +1,47 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\HttpKernel;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Container;
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerInterface;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
use RectorPrefix202209\Symplify\AutowireArrayParameter\DependencyInjection\CompilerPass\AutowireArrayParameterCompilerPass;
use RectorPrefix202209\Symplify\SymplifyKernel\Config\Loader\ParameterMergingLoaderFactory;
use RectorPrefix202209\Symplify\SymplifyKernel\ContainerBuilderFactory;
use RectorPrefix202209\Symplify\SymplifyKernel\Contract\LightKernelInterface;
use RectorPrefix202209\Symplify\SymplifyKernel\Exception\ShouldNotHappenException;
use RectorPrefix202209\Symplify\SymplifyKernel\ValueObject\SymplifyKernelConfig;
/**
* @api
*/
abstract class AbstractSymplifyKernel implements LightKernelInterface
{
/**
* @var \Symfony\Component\DependencyInjection\Container|null
*/
private $container = null;
/**
* @param string[] $configFiles
* @param CompilerPassInterface[] $compilerPasses
* @param ExtensionInterface[] $extensions
*/
public function create(array $configFiles, array $compilerPasses = [], array $extensions = []) : ContainerInterface
{
$containerBuilderFactory = new ContainerBuilderFactory(new ParameterMergingLoaderFactory());
$compilerPasses[] = new AutowireArrayParameterCompilerPass();
$configFiles[] = SymplifyKernelConfig::FILE_PATH;
$containerBuilder = $containerBuilderFactory->create($configFiles, $compilerPasses, $extensions);
$containerBuilder->compile();
$this->container = $containerBuilder;
return $containerBuilder;
}
public function getContainer() : \RectorPrefix202209\Psr\Container\ContainerInterface
{
if (!$this->container instanceof Container) {
throw new ShouldNotHappenException();
}
return $this->container;
}
}

View File

@ -0,0 +1,98 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\ValueObject;
use RectorPrefix202209\Symfony\Component\Console\Application;
use RectorPrefix202209\Symfony\Component\Console\Command\Command;
use RectorPrefix202209\Symfony\Component\HttpKernel\KernelInterface;
use RectorPrefix202209\Symplify\PackageBuilder\Console\Input\StaticInputDetector;
use RectorPrefix202209\Symplify\PackageBuilder\Console\Style\SymfonyStyleFactory;
use RectorPrefix202209\Symplify\SymplifyKernel\Contract\LightKernelInterface;
use RectorPrefix202209\Symplify\SymplifyKernel\Exception\BootException;
use Throwable;
/**
* @api
*/
final class KernelBootAndApplicationRun
{
/**
* @var class-string<(KernelInterface | LightKernelInterface)>
*/
private $kernelClass;
/**
* @var string[]
*/
private $extraConfigs = [];
/**
* @param class-string<KernelInterface|LightKernelInterface> $kernelClass
* @param string[] $extraConfigs
*/
public function __construct(string $kernelClass, array $extraConfigs = [])
{
$this->kernelClass = $kernelClass;
$this->extraConfigs = $extraConfigs;
$this->validateKernelClass($this->kernelClass);
}
public function run() : void
{
try {
$this->booKernelAndRunApplication();
} catch (Throwable $throwable) {
$symfonyStyleFactory = new SymfonyStyleFactory();
$symfonyStyle = $symfonyStyleFactory->create();
$symfonyStyle->error($throwable->getMessage());
exit(Command::FAILURE);
}
}
/**
* @return \Symfony\Component\HttpKernel\KernelInterface|\Symplify\SymplifyKernel\Contract\LightKernelInterface
*/
private function createKernel()
{
// random has is needed, so cache is invalidated and changes from config are loaded
$kernelClass = $this->kernelClass;
if (\is_a($kernelClass, LightKernelInterface::class, \true)) {
return new $kernelClass();
}
$environment = 'prod' . \random_int(1, 100000);
return new $kernelClass($environment, StaticInputDetector::isDebug());
}
private function booKernelAndRunApplication() : void
{
$kernel = $this->createKernel();
if ($kernel instanceof LightKernelInterface) {
$container = $kernel->createFromConfigs($this->extraConfigs);
} else {
$kernel->boot();
$container = $kernel->getContainer();
}
/** @var Application $application */
$application = $container->get(Application::class);
// remove --no-interaction (with -n shortcut) option from Application
// because we need to create option with -n shortcuts too
// for example: --dry-run with shortcut -n
$inputDefinition = $application->getDefinition();
$options = $inputDefinition->getOptions();
$options = \array_filter($options, static function ($option) {
return $option->getName() !== 'no-interaction';
});
$inputDefinition->setOptions($options);
exit($application->run());
}
/**
* @param class-string $kernelClass
*/
private function validateKernelClass(string $kernelClass) : void
{
if (\is_a($kernelClass, KernelInterface::class, \true)) {
return;
}
if (\is_a($kernelClass, LightKernelInterface::class, \true)) {
return;
}
$currentValueType = \get_debug_type($kernelClass);
$errorMessage = \sprintf('Class "%s" must by type of "%s" or "%s". "%s" given', $kernelClass, KernelInterface::class, LightKernelInterface::class, $currentValueType);
throw new BootException($errorMessage);
}
}

View File

@ -0,0 +1,15 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\ValueObject;
/**
* @api
*/
final class SymplifyKernelConfig
{
/**
* @var string
*/
public const FILE_PATH = __DIR__ . '/../../config/common-config.php';
}

View File

@ -0,0 +1,19 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209\Symplify\SymplifyKernel\Tests\ContainerBuilderFactory;
use PHPUnit\Framework\TestCase;
use RectorPrefix202209\Symplify\SmartFileSystem\SmartFileSystem;
use RectorPrefix202209\Symplify\SymplifyKernel\Config\Loader\ParameterMergingLoaderFactory;
use RectorPrefix202209\Symplify\SymplifyKernel\ContainerBuilderFactory;
final class ContainerBuilderFactoryTest extends TestCase
{
public function test() : void
{
$containerBuilderFactory = new ContainerBuilderFactory(new ParameterMergingLoaderFactory());
$containerBuilder = $containerBuilderFactory->create([__DIR__ . '/config/some_services.php'], [], []);
$hasSmartFileSystemService = $containerBuilder->has(SmartFileSystem::class);
$this->assertTrue($hasSmartFileSystemService);
}
}

View File

@ -0,0 +1,11 @@
<?php
declare (strict_types=1);
namespace RectorPrefix202209;
use RectorPrefix202209\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use RectorPrefix202209\Symplify\SmartFileSystem\SmartFileSystem;
return static function (ContainerConfigurator $containerConfigurator) : void {
$services = $containerConfigurator->services();
$services->set(SmartFileSystem::class);
};