Updated Rector to commit 32b06bcf14

32b06bcf14 [Scoped] Ensure remove bin/generate-changelog.php before commit (#1492)
This commit is contained in:
Tomas Votruba 2021-12-14 13:01:38 +00:00
parent 8007b9f521
commit a883a63e56
16 changed files with 95 additions and 176 deletions

View File

@ -1,151 +0,0 @@
<?php
declare (strict_types=1);
namespace RectorPrefix20211214;
use RectorPrefix20211214\Httpful\Request;
use RectorPrefix20211214\Nette\Utils\Strings;
use RectorPrefix20211214\Symfony\Component\Console\Application;
use RectorPrefix20211214\Symfony\Component\Console\Command\Command;
use RectorPrefix20211214\Symfony\Component\Console\Input\InputArgument;
use RectorPrefix20211214\Symfony\Component\Console\Input\InputInterface;
use RectorPrefix20211214\Symfony\Component\Console\Output\OutputInterface;
use RectorPrefix20211214\Symfony\Component\Process\Process;
use RectorPrefix20211214\Symplify\PackageBuilder\Console\Command\CommandNaming;
require __DIR__ . '/../vendor/autoload.php';
/**
* Inspired from @see https://github.com/phpstan/phpstan-src/blob/master/bin/generate-changelog.php
*
* Usage:
* GITHUB_TOKEN=<github_token> php bin/generate-changelog.php <from-commit> <to-commit> >> <file_to_dump.md>
* GITHUB_TOKEN=ghp_... php bin/generate-changelog.php 07736c1 cb74bb6 >> CHANGELOG_dumped.md
*/
final class GenerateChangelogCommand extends \RectorPrefix20211214\Symfony\Component\Console\Command\Command
{
/**
* @var string
*/
private const DEPLOY_REPOSITORY_NAME = 'rectorphp/rector';
/**
* @var string
*/
private const DEVELOPMENT_REPOSITORY_NAME = 'rectorphp/rector-src';
/**
* @var string[]
*/
private const EXCLUDED_THANKS_NAMES = ['TomasVotruba'];
/**
* @var string
*/
private const OPTION_FROM_COMMIT = 'from-commit';
/**
* @var string
*/
private const OPTION_TO_COMMIT = 'to-commit';
/**
* @var string
*/
private const HASH = 'hash';
protected function configure() : void
{
$this->setName(\RectorPrefix20211214\Symplify\PackageBuilder\Console\Command\CommandNaming::classToName(self::class));
$this->addArgument(self::OPTION_FROM_COMMIT, \RectorPrefix20211214\Symfony\Component\Console\Input\InputArgument::REQUIRED);
$this->addArgument(self::OPTION_TO_COMMIT, \RectorPrefix20211214\Symfony\Component\Console\Input\InputArgument::REQUIRED);
}
protected function execute(\RectorPrefix20211214\Symfony\Component\Console\Input\InputInterface $input, \RectorPrefix20211214\Symfony\Component\Console\Output\OutputInterface $output) : int
{
$fromCommit = (string) $input->getArgument(self::OPTION_FROM_COMMIT);
$toCommit = (string) $input->getArgument(self::OPTION_TO_COMMIT);
$commitLines = $this->resolveCommitLinesFromToHashes($fromCommit, $toCommit);
$commits = \array_map(function (string $line) : array {
[$hash, $message] = \explode(' ', $line, 2);
return [self::HASH => $hash, 'message' => $message];
}, $commitLines);
$i = 0;
foreach ($commits as $commit) {
$searchPullRequestsUri = \sprintf('https://api.github.com/search/issues?q=repo:' . self::DEVELOPMENT_REPOSITORY_NAME . '+%s', $commit[self::HASH]);
$searchPullRequestsResponse = \RectorPrefix20211214\Httpful\Request::get($searchPullRequestsUri)->sendsAndExpectsType('application/json')->basicAuth('tomasvotruba', \getenv('GITHUB_TOKEN'))->send();
if ($searchPullRequestsResponse->code !== 200) {
$output->writeln(\var_export($searchPullRequestsResponse->body, \true));
throw new \InvalidArgumentException((string) $searchPullRequestsResponse->code);
}
$searchPullRequestsResponse = $searchPullRequestsResponse->body;
$searchIssuesUri = \sprintf('https://api.github.com/search/issues?q=repo:' . self::DEPLOY_REPOSITORY_NAME . '+%s', $commit[self::HASH]);
$searchIssuesResponse = \RectorPrefix20211214\Httpful\Request::get($searchIssuesUri)->sendsAndExpectsType('application/json')->basicAuth('tomasvotruba', \getenv('GITHUB_TOKEN'))->send();
if ($searchIssuesResponse->code !== 200) {
$output->writeln(\var_export($searchIssuesResponse->body, \true));
throw new \InvalidArgumentException((string) $searchIssuesResponse->code);
}
$searchIssuesResponse = $searchIssuesResponse->body;
$items = \array_merge($searchPullRequestsResponse->items, $searchIssuesResponse->items);
$parenthesis = 'https://github.com/' . self::DEVELOPMENT_REPOSITORY_NAME . '/commit/' . $commit[self::HASH];
$thanks = null;
$issuesToReference = [];
foreach ($items as $item) {
if (\property_exists($item, 'pull_request') && $item->pull_request !== null) {
$parenthesis = \sprintf('[#%d](%s)', $item->number, 'https://github.com/' . self::DEVELOPMENT_REPOSITORY_NAME . '/pull/' . $item->number);
$thanks = $item->user->login;
} else {
$issuesToReference[] = \sprintf('#%d', $item->number);
}
}
// clean commit from duplicating issue number
$commitMatch = \RectorPrefix20211214\Nette\Utils\Strings::match($commit['message'], '#(.*?)( \\(\\#\\d+\\))?$#ms');
$commit = $commitMatch[1] ?? $commit['message'];
$changelogLine = \sprintf('* %s (%s)%s%s', $commit, $parenthesis, $issuesToReference !== [] ? ', ' . \implode(', ', $issuesToReference) : '', $this->createThanks($thanks));
$output->writeln($changelogLine);
// not to throttle the GitHub API
if ($i > 0 && $i % 8 === 0) {
\sleep(60);
}
++$i;
}
return self::SUCCESS;
}
/**
* @param string|null $thanks
*/
protected function createThanks($thanks) : string
{
if ($thanks === null) {
return '';
}
if (\in_array($thanks, self::EXCLUDED_THANKS_NAMES, \true)) {
return '';
}
return \sprintf(', Thanks @%s!', $thanks);
}
/**
* @param string[] $commandParts
*/
private function exec(array $commandParts) : string
{
$process = new \RectorPrefix20211214\Symfony\Component\Process\Process($commandParts);
$process->run();
return $process->getOutput();
}
/**
* @return string[]
*/
private function resolveCommitLinesFromToHashes(string $fromCommit, string $toCommit) : array
{
$commitHashRange = \sprintf('%s..%s', $fromCommit, $toCommit);
$output = $this->exec(['git', 'log', $commitHashRange, '--reverse', '--pretty=%H %s']);
$commitLines = \explode("\n", $output);
// remove empty values
return \array_filter($commitLines);
}
}
/**
* Inspired from @see https://github.com/phpstan/phpstan-src/blob/master/bin/generate-changelog.php
*
* Usage:
* GITHUB_TOKEN=<github_token> php bin/generate-changelog.php <from-commit> <to-commit> >> <file_to_dump.md>
* GITHUB_TOKEN=ghp_... php bin/generate-changelog.php 07736c1 cb74bb6 >> CHANGELOG_dumped.md
*/
\class_alias('GenerateChangelogCommand', 'GenerateChangelogCommand', \false);
$generateChangelogCommand = new \RectorPrefix20211214\GenerateChangelogCommand();
$application = new \RectorPrefix20211214\Symfony\Component\Console\Application();
$application->add($generateChangelogCommand);
$application->setDefaultCommand(\RectorPrefix20211214\Symplify\PackageBuilder\Console\Command\CommandNaming::classToName(\get_class($generateChangelogCommand)), \true);
$application->run();

View File

@ -16,11 +16,11 @@ final class VersionResolver
/**
* @var string
*/
public const PACKAGE_VERSION = 'c7638288f7461f46c57307a22b9454c46cfa3cbc';
public const PACKAGE_VERSION = '32b06bcf14336cfc155ef5792d4693c58599b9ae';
/**
* @var string
*/
public const RELEASE_DATE = '2021-12-14 13:06:50';
public const RELEASE_DATE = '2021-12-14 12:45:09';
public static function resolvePackageVersion() : string
{
$process = new \RectorPrefix20211214\Symfony\Component\Process\Process(['git', 'log', '--pretty="%H"', '-n1', 'HEAD'], __DIR__);

2
vendor/autoload.php vendored
View File

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e::getLoader();
return ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb::getLoader();

View File

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e
class ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb
{
private static $loader;
@ -22,15 +22,15 @@ class ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
spl_autoload_unregister(array('ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit446522ae7b939906e33d111e26d4d4cb::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
@ -42,19 +42,19 @@ class ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e
$loader->register(true);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e::$files;
$includeFiles = Composer\Autoload\ComposerStaticInit446522ae7b939906e33d111e26d4d4cb::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequiree57b7a3fa5f1fe9172e2347d7727ae3e($fileIdentifier, $file);
composerRequire446522ae7b939906e33d111e26d4d4cb($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequiree57b7a3fa5f1fe9172e2347d7727ae3e($fileIdentifier, $file)
function composerRequire446522ae7b939906e33d111e26d4d4cb($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;

View File

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e
class ComposerStaticInit446522ae7b939906e33d111e26d4d4cb
{
public static $files = array (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@ -3823,9 +3823,9 @@ class ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInite57b7a3fa5f1fe9172e2347d7727ae3e::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit446522ae7b939906e33d111e26d4d4cb::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit446522ae7b939906e33d111e26d4d4cb::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit446522ae7b939906e33d111e26d4d4cb::$classMap;
}, null, ClassLoader::class);
}

View File

@ -2737,12 +2737,12 @@
"source": {
"type": "git",
"url": "https:\/\/github.com\/sabbelasichon\/typo3-rector.git",
"reference": "940411640abddb4f5465266c4db130299e304793"
"reference": "b35b92829ac0e40c9b4be90aee24b94f450a0f21"
},
"dist": {
"type": "zip",
"url": "https:\/\/api.github.com\/repos\/sabbelasichon\/typo3-rector\/zipball\/940411640abddb4f5465266c4db130299e304793",
"reference": "940411640abddb4f5465266c4db130299e304793",
"url": "https:\/\/api.github.com\/repos\/sabbelasichon\/typo3-rector\/zipball\/b35b92829ac0e40c9b4be90aee24b94f450a0f21",
"reference": "b35b92829ac0e40c9b4be90aee24b94f450a0f21",
"shasum": ""
},
"require": {
@ -2773,7 +2773,7 @@
"symplify\/vendor-patches": "^10.0",
"tracy\/tracy": "^2.8"
},
"time": "2021-12-13T20:33:55+00:00",
"time": "2021-12-14T12:31:47+00:00",
"default-branch": true,
"type": "rector-extension",
"extra": {

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 584d84b'), '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 567cdd2'), 'rector/rector-generator' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-generator', 'relative_install_path' => '../../rector-generator', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 36d651e'), '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 4fb1137'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 1e3b3ab'), '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 47298f7'), '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 1de3f30'), '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 0a50dc4'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 9404116'));
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 584d84b'), '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 567cdd2'), 'rector/rector-generator' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-generator', 'relative_install_path' => '../../rector-generator', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 36d651e'), '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 4fb1137'), 'rector/rector-nette' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-nette', 'relative_install_path' => '../../rector-nette', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 1e3b3ab'), '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 47298f7'), '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 1de3f30'), '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 0a50dc4'), 'ssch/typo3-rector' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/ssch/typo3-rector', 'relative_install_path' => '../../../ssch/typo3-rector', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main b35b928'));
private function __construct()
{
}

View File

@ -9,8 +9,8 @@ $loader = require_once __DIR__.'/autoload.php';
if (!class_exists('AutoloadIncluder', false) && !interface_exists('AutoloadIncluder', false) && !trait_exists('AutoloadIncluder', false)) {
spl_autoload_call('RectorPrefix20211214\AutoloadIncluder');
}
if (!class_exists('ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e', false) && !interface_exists('ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e', false) && !trait_exists('ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e', false)) {
spl_autoload_call('RectorPrefix20211214\ComposerAutoloaderInite57b7a3fa5f1fe9172e2347d7727ae3e');
if (!class_exists('ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb', false) && !interface_exists('ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb', false) && !trait_exists('ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb', false)) {
spl_autoload_call('RectorPrefix20211214\ComposerAutoloaderInit446522ae7b939906e33d111e26d4d4cb');
}
if (!class_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !interface_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false) && !trait_exists('Helmich\TypoScriptParser\Parser\AST\Statement', false)) {
spl_autoload_call('RectorPrefix20211214\Helmich\TypoScriptParser\Parser\AST\Statement');
@ -78,9 +78,9 @@ if (!function_exists('print_node')) {
return \RectorPrefix20211214\print_node(...func_get_args());
}
}
if (!function_exists('composerRequiree57b7a3fa5f1fe9172e2347d7727ae3e')) {
function composerRequiree57b7a3fa5f1fe9172e2347d7727ae3e() {
return \RectorPrefix20211214\composerRequiree57b7a3fa5f1fe9172e2347d7727ae3e(...func_get_args());
if (!function_exists('composerRequire446522ae7b939906e33d111e26d4d4cb')) {
function composerRequire446522ae7b939906e33d111e26d4d4cb() {
return \RectorPrefix20211214\composerRequire446522ae7b939906e33d111e26d4d4cb(...func_get_args());
}
}
if (!function_exists('scanPath')) {

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Best practice guide
## What to use for

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Beyond PHP Code - Entering the realm of FileProcessors
TYPO3 Rector and RectorPHP is all about PHP-Code. Well, yes and no.

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Configuration and Processing
This library ships already with a bunch of configuration files organized by TYPO3 version.

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Contributing
Want to help? Great!

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Examples in action
Let´s say you have a Fluid ViewHelper looking like this:

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# Installation
This repository (`ssch/typo3-rector`) is for development TYPO3 Rector only.

View File

@ -1,3 +1,13 @@
## Table of Contents
1. [Examples in action](./examples_in_action.md)
1. [Overview of all rules](./all_rectors_overview.md)
1. [Installation](./installation.md)
1. [Configuration and Processing](./configuration_and_processing.md)
1. [Best practice guide](./best_practice_guide.md)
1. [Beyond PHP - Entering the realm of FileProcessors](./beyond_php_file_processors.md)
1. [Limitations](./limitations.md)
1. [Contribution](./contribution.md)
# What Rector cannot do for you
Some people expecting simply too much of typo3-rector.