Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/clean_trailing_spaces.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/usr/bin/env bash
# trailing whitespaces
sed -i -E 's#\s+$##g' config/level/*/*.yml docs/*.md packages/*/README.md README.md
sed -i -E 's#\s+$##g' config/level/*/*.yml docs/*.md README.md
16 changes: 9 additions & 7 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
"symfony/dependency-injection": "^3.4|^4.1",
"symfony/finder": "^3.4|^4.1",
"symfony/process": "^3.4|^4.1",
"symplify/better-phpdoc-parser": "^5.1",
"symplify/easy-coding-standard": "^5.1",
"symplify/package-builder": "^5.1",
"symplify/better-phpdoc-parser": "^5.2",
"symplify/easy-coding-standard": "^5.2",
"symplify/package-builder": "^5.2",
"thecodingmachine/safe": "^0.1.4"
},
"require-dev": {
"humbug/php-scoper": "^0.9.2",
"phpunit/phpunit": "^7.3",
"symplify/changelog-linker": "^5.1",
"symplify/monorepo-builder": "^5.1",
"symplify/phpstan-extensions": "^5.1",
"symplify/changelog-linker": "^5.2",
"symplify/monorepo-builder": "^5.2",
"symplify/phpstan-extensions": "^5.2",
"thecodingmachine/phpstan-safe-rule": "^0.1.0",
"thecodingmachine/phpstan-strict-rules": "^0.10.3",
"tracy/tracy": "^2.5"
Expand Down Expand Up @@ -216,5 +216,7 @@
"bin": ["bin/rector"],
"config": {
"sort-packages": true
}
},
"minimum-stability": "dev",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really don't like this adding and removing just to test Symplify.

If we try to use Rector with a repo that does not support dev versions, Rector won't install.

(Btw, remember me about this for us to discuss in Prague)

Copy link
Member Author

@TomasVotruba TomasVotruba Oct 6, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This only temporary. Tagged version should be installed prefferable. I'm tagging quite often recently.

I'll update README.md to reflect that

"prefer-stable": true
}
7 changes: 0 additions & 7 deletions packages/FileSystemRector/config/config.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,2 @@
imports:
- { resource: 'services.yml' }

parameters:
collectors:
-
main_type: 'Rector\FileSystemRector\FileSystemFileProcessor'
collected_type: 'Rector\FileSystemRector\Contract\FileSystemRectorInterface'
add_method: 'addFileSystemRector'
7 changes: 5 additions & 2 deletions packages/FileSystemRector/src/FileSystemFileProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ final class FileSystemFileProcessor
*/
private $fileSystemRectors = [];

public function addFileSystemRector(FileSystemRectorInterface $fileSystemRector): void
/**
* @param FileSystemRectorInterface[] $fileSystemRectors
*/
public function __construct(array $fileSystemRectors = [])
{
$this->fileSystemRectors[] = $fileSystemRector;
$this->fileSystemRectors = $fileSystemRectors;
}

/**
Expand Down
30 changes: 19 additions & 11 deletions packages/NodeTypeResolver/src/NodeTypeResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,21 @@ final class NodeTypeResolver
*/
private $classReflectionTypesResolver;

/**
* @param PerNodeTypeResolverInterface[] $perNodeTypeResolvers
*/
public function __construct(
TypeToStringResolver $typeToStringResolver,
Broker $broker,
ClassReflectionTypesResolver $classReflectionTypesResolver
ClassReflectionTypesResolver $classReflectionTypesResolver,
array $perNodeTypeResolvers = []
) {
$this->typeToStringResolver = $typeToStringResolver;
$this->broker = $broker;
$this->classReflectionTypesResolver = $classReflectionTypesResolver;
}

public function addPerNodeTypeResolver(PerNodeTypeResolverInterface $perNodeTypeResolver): void
{
foreach ($perNodeTypeResolver->getNodeClasses() as $nodeClass) {
$this->perNodeTypeResolvers[$nodeClass] = $perNodeTypeResolver;
}

// in-code setter injection to drop CompilerPass requirement for 3rd party package install
if ($perNodeTypeResolver instanceof NodeTypeResolverAwareInterface) {
$perNodeTypeResolver->setNodeTypeResolver($this);
foreach ($perNodeTypeResolvers as $perNodeTypeResolver) {
$this->addPerNodeTypeResolver($perNodeTypeResolver);
}
}

Expand Down Expand Up @@ -80,6 +76,18 @@ public function resolve(Node $node): array
return $types;
}

private function addPerNodeTypeResolver(PerNodeTypeResolverInterface $perNodeTypeResolver): void
{
foreach ($perNodeTypeResolver->getNodeClasses() as $nodeClass) {
$this->perNodeTypeResolvers[$nodeClass] = $perNodeTypeResolver;
}

// in-code setter injection to drop CompilerPass requirement for 3rd party package install
if ($perNodeTypeResolver instanceof NodeTypeResolverAwareInterface) {
$perNodeTypeResolver->setNodeTypeResolver($this);
}
}

/**
* @return string[]
*/
Expand Down
9 changes: 0 additions & 9 deletions packages/NodeTypeResolver/src/config/config.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
imports:
- { resource: 'services.yml' }
- { resource: '%vendor%/symplify/better-phpdoc-parser/src/config/config.yml' }

parameters:
collectors:
-
main_type: 'Rector\NodeTypeResolver\NodeTypeResolver'
collected_type: 'Rector\NodeTypeResolver\Contract\PerNodeTypeResolver\PerNodeTypeResolverInterface'
add_method: 'addPerNodeTypeResolver'


7 changes: 5 additions & 2 deletions packages/YamlRector/src/YamlFileProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ final class YamlFileProcessor
*/
private $yamlRectors = [];

public function addYamlRector(YamlRectorInterface $yamlRector): void
/**
* @param YamlRectorInterface[] $yamlRectors
*/
public function __construct(array $yamlRectors = [])
{
$this->yamlRectors[] = $yamlRector;
$this->yamlRectors = $yamlRectors;
}

/**
Expand Down
7 changes: 0 additions & 7 deletions packages/YamlRector/src/config/config.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,2 @@
imports:
- { resource: 'services.yml' }

parameters:
collectors:
-
main_type: 'Rector\YamlRector\YamlFileProcessor'
collected_type: 'Rector\YamlRector\Contract\YamlRectorInterface'
add_method: 'addYamlRector'
5 changes: 3 additions & 2 deletions phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ parameters:
- '#Cannot call method getAttribute\(\) on PhpParser\\Node\\Name\|null#'
- '#Cannot call method getText\(\) on PhpParser\\Comment\\Doc\|null#'



# Error php-parser token
- '#Access to an undefined property PhpParser\\Node\\Expr\\Error\|PhpParser\\Node\\Expr\\Variable::\$name#'

Expand Down Expand Up @@ -90,6 +88,9 @@ parameters:
- '#In method "Rector\\Node\\NodeFactory::createArray", parameter \$items can be type-hinted to "array"#'
- '#In method "Rector\\Builder\\StatementGlue::addStatementToClassBeforeTypes", parameter \$types type is "array". Please provide a \@param annotation to further specify the type of the array. For instance: \@param int\[\] \$types#'

# not really needed, empty
- '#Rector\\NodeTraverser\\RectorNodeTraverser::__construct\(\) does not call parent constructor from PhpParser\\NodeTraverser#'

services:
-
class: Symplify\PHPStanExtensions\Type\SplFileInfoTolerantDynamicMethodReturnTypeExtension
Expand Down
8 changes: 7 additions & 1 deletion src/Console/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Jean85\PrettyVersions;
use Symfony\Component\Console\Application as SymfonyApplication;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputDefinition;
use Symfony\Component\Console\Input\InputOption;
use function Safe\getcwd;
Expand All @@ -15,9 +16,14 @@ final class Application extends SymfonyApplication
*/
private const NAME = 'Rector';

public function __construct()
/**
* @param Command[] $commands
*/
public function __construct(array $commands = [])
{
parent::__construct(self::NAME, PrettyVersions::getVersion('rector/rector')->getPrettyVersion());

$this->addCommands($commands);
}

protected function getDefaultInputDefinition(): InputDefinition
Expand Down

This file was deleted.

4 changes: 3 additions & 1 deletion src/DependencyInjection/RectorKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace Rector\DependencyInjection;

use Rector\Contract\Rector\PhpRectorInterface;
use Rector\DependencyInjection\CompilerPass\AutowireInterfacesCompilerPass;
use Rector\DependencyInjection\Loader\TolerantRectorYamlFileLoader;
use Rector\FileSystemRector\Contract\FileSystemRectorInterface;
use Rector\YamlRector\Contract\YamlRectorInterface;
Expand All @@ -16,6 +15,8 @@
use Symfony\Component\HttpKernel\Config\FileLocator;
use Symfony\Component\HttpKernel\Kernel;
use Symplify\PackageBuilder\DependencyInjection\CompilerPass\AutoBindParametersCompilerPass;
use Symplify\PackageBuilder\DependencyInjection\CompilerPass\AutowireArrayParameterCompilerPass;
use Symplify\PackageBuilder\DependencyInjection\CompilerPass\AutowireInterfacesCompilerPass;
use Symplify\PackageBuilder\DependencyInjection\CompilerPass\AutowireSinglyImplementedCompilerPass;
use Symplify\PackageBuilder\DependencyInjection\CompilerPass\ConfigurableCollectorCompilerPass;
use Symplify\PackageBuilder\HttpKernel\SimpleKernelTrait;
Expand Down Expand Up @@ -58,6 +59,7 @@ protected function build(ContainerBuilder $containerBuilder): void

// for defaults
$containerBuilder->addCompilerPass(new AutowireSinglyImplementedCompilerPass());
$containerBuilder->addCompilerPass(new AutowireArrayParameterCompilerPass());

// autowire Rectors by default (mainly for 3rd party code)
$containerBuilder->addCompilerPass(new AutowireInterfacesCompilerPass([
Expand Down
9 changes: 7 additions & 2 deletions src/NodeTraverser/RectorNodeTraverser.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,14 @@

final class RectorNodeTraverser extends NodeTraverser
{
public function addRector(PhpRectorInterface $phpRector): void
/**
* @param PhpRectorInterface[] $phpRectors
*/
public function __construct(array $phpRectors = [])
{
$this->addVisitor($phpRector);
foreach ($phpRectors as $phpRector) {
$this->addVisitor($phpRector);
}
}

public function getRectorCount(): int
Expand Down
17 changes: 5 additions & 12 deletions src/config/config.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,10 @@
imports:
- { resource: '../../packages/**/src/config/config.yml' }
# new config location
- { resource: '../../packages/**/config/config.yml' }
- { resource: 'services.yml' }
- { resource: 'external-services.yml' }
- { resource: '../../packages/**/src/config/config.yml' }
# new config location
- { resource: '../../packages/**/config/config.yml' }
- { resource: 'services.yml' }
- { resource: 'external-services.yml' }

parameters:
exclude_paths: []
autoload_paths: []

# see https://github.com/symplify/packagebuilder#collect-services-in-short-configs
collectors:
-
main_type: 'Rector\NodeTraverser\RectorNodeTraverser'
collected_type: 'Rector\Contract\Rector\PhpRectorInterface'
add_method: 'addRector'