212 lines
10 KiB
PHP
212 lines
10 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Chevere.
|
|
*
|
|
* (c) Rodolfo Berrios <rodolfo@chevere.org>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
|
|
use PhpCsFixer\Fixer\ArrayNotation\NoWhitespaceBeforeCommaInArrayFixer;
|
|
use PhpCsFixer\Fixer\ArrayNotation\WhitespaceAfterCommaInArrayFixer;
|
|
use PhpCsFixer\Fixer\Basic\BracesFixer;
|
|
use PhpCsFixer\Fixer\Basic\EncodingFixer;
|
|
use PhpCsFixer\Fixer\Casing\ConstantCaseFixer;
|
|
use PhpCsFixer\Fixer\Casing\LowercaseKeywordsFixer;
|
|
use PhpCsFixer\Fixer\CastNotation\LowercaseCastFixer;
|
|
use PhpCsFixer\Fixer\CastNotation\ShortScalarCastFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\ClassAttributesSeparationFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\ClassDefinitionFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\NoBlankLinesAfterClassOpeningFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\SingleClassElementPerStatementFixer;
|
|
use PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer;
|
|
use PhpCsFixer\Fixer\Comment\HeaderCommentFixer;
|
|
use PhpCsFixer\Fixer\Comment\NoTrailingWhitespaceInCommentFixer;
|
|
use PhpCsFixer\Fixer\Comment\SingleLineCommentStyleFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\ElseifFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\IncludeFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\NoBreakCommentFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\NoUnneededCurlyBracesFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSemicolonToColonFixer;
|
|
use PhpCsFixer\Fixer\ControlStructure\SwitchCaseSpaceFixer;
|
|
use PhpCsFixer\Fixer\FunctionNotation\FunctionDeclarationFixer;
|
|
use PhpCsFixer\Fixer\FunctionNotation\MethodArgumentSpaceFixer;
|
|
use PhpCsFixer\Fixer\FunctionNotation\NoSpacesAfterFunctionNameFixer;
|
|
use PhpCsFixer\Fixer\FunctionNotation\ReturnTypeDeclarationFixer;
|
|
use PhpCsFixer\Fixer\Import\NoLeadingImportSlashFixer;
|
|
use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
|
|
use PhpCsFixer\Fixer\Import\OrderedImportsFixer;
|
|
use PhpCsFixer\Fixer\Import\SingleImportPerStatementFixer;
|
|
use PhpCsFixer\Fixer\Import\SingleLineAfterImportsFixer;
|
|
use PhpCsFixer\Fixer\LanguageConstruct\CombineConsecutiveUnsetsFixer;
|
|
use PhpCsFixer\Fixer\LanguageConstruct\DeclareEqualNormalizeFixer;
|
|
use PhpCsFixer\Fixer\NamespaceNotation\BlankLineAfterNamespaceFixer;
|
|
use PhpCsFixer\Fixer\Operator\BinaryOperatorSpacesFixer;
|
|
use PhpCsFixer\Fixer\Operator\ConcatSpaceFixer;
|
|
use PhpCsFixer\Fixer\Operator\NewWithBracesFixer;
|
|
use PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer;
|
|
use PhpCsFixer\Fixer\Operator\TernaryOperatorSpacesFixer;
|
|
use PhpCsFixer\Fixer\Operator\UnaryOperatorSpacesFixer;
|
|
use PhpCsFixer\Fixer\PhpTag\BlankLineAfterOpeningTagFixer;
|
|
use PhpCsFixer\Fixer\PhpTag\FullOpeningTagFixer;
|
|
use PhpCsFixer\Fixer\PhpTag\NoClosingTagFixer;
|
|
use PhpCsFixer\Fixer\ReturnNotation\ReturnAssignmentFixer;
|
|
use PhpCsFixer\Fixer\Semicolon\MultilineWhitespaceBeforeSemicolonsFixer;
|
|
use PhpCsFixer\Fixer\Semicolon\NoEmptyStatementFixer;
|
|
use PhpCsFixer\Fixer\Semicolon\NoSinglelineWhitespaceBeforeSemicolonsFixer;
|
|
use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\BlankLineBeforeStatementFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\CompactNullableTypehintFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\IndentationTypeFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\LineEndingFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\NoExtraBlankLinesFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\NoSpacesInsideParenthesisFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\NoTrailingWhitespaceFixer;
|
|
use PhpCsFixer\Fixer\Whitespace\SingleBlankLineAtEofFixer;
|
|
use SlevomatCodingStandard\Sniffs\ControlStructures\RequireShortTernaryOperatorSniff;
|
|
use SlevomatCodingStandard\Sniffs\Functions\UnusedInheritedVariablePassedToClosureSniff;
|
|
use SlevomatCodingStandard\Sniffs\Operators\RequireCombinedAssignmentOperatorSniff;
|
|
use SlevomatCodingStandard\Sniffs\PHP\DisallowDirectMagicInvokeCallSniff;
|
|
use SlevomatCodingStandard\Sniffs\PHP\UselessParenthesesSniff;
|
|
use SlevomatCodingStandard\Sniffs\PHP\UselessSemicolonSniff;
|
|
use SlevomatCodingStandard\Sniffs\Variables\UnusedVariableSniff;
|
|
use SlevomatCodingStandard\Sniffs\Variables\UselessVariableSniff;
|
|
use Symplify\CodingStandard\Fixer\Commenting\ParamReturnAndVarTagMalformsFixer;
|
|
use Symplify\EasyCodingStandard\Config\ECSConfig;
|
|
use Symplify\EasyCodingStandard\ValueObject\Option;
|
|
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
|
|
|
|
return static function (ECSConfig $containerConfigurator): void {
|
|
$headerFile = __DIR__ . '/.header';
|
|
$parameters = $containerConfigurator->parameters();
|
|
$parameters->set(Option::SETS, [
|
|
SetList::COMMON,
|
|
]);
|
|
$services = $containerConfigurator->services();
|
|
if (file_exists($headerFile)) {
|
|
$services->set(HeaderCommentFixer::class)
|
|
->call('configure', [[
|
|
'header' => file_get_contents($headerFile),
|
|
'location' => 'after_open',
|
|
]]);
|
|
}
|
|
$services->set(EncodingFixer::class);
|
|
$services->set(FullOpeningTagFixer::class);
|
|
$services->set(BlankLineAfterNamespaceFixer::class);
|
|
$services->set(BracesFixer::class);
|
|
$services->set(ClassDefinitionFixer::class);
|
|
$services->set(ConstantCaseFixer::class);
|
|
$services->set(ElseifFixer::class);
|
|
$services->set(FunctionDeclarationFixer::class);
|
|
$services->set(IndentationTypeFixer::class);
|
|
$services->set(LineEndingFixer::class);
|
|
$services->set(LowercaseKeywordsFixer::class);
|
|
$services->set(MethodArgumentSpaceFixer::class)
|
|
->call('configure', [[
|
|
'on_multiline' => 'ensure_fully_multiline',
|
|
]]);
|
|
$services->set(NoBreakCommentFixer::class);
|
|
$services->set(NoClosingTagFixer::class);
|
|
$services->set(NoSpacesAfterFunctionNameFixer::class);
|
|
$services->set(NoSpacesInsideParenthesisFixer::class);
|
|
$services->set(NoTrailingWhitespaceFixer::class);
|
|
$services->set(NoTrailingWhitespaceInCommentFixer::class);
|
|
$services->set(SingleBlankLineAtEofFixer::class);
|
|
$services->set(SingleClassElementPerStatementFixer::class)
|
|
->call('configure', [[
|
|
'elements' => ['property'],
|
|
]]);
|
|
$services->set(SingleImportPerStatementFixer::class);
|
|
$services->set(SingleLineAfterImportsFixer::class);
|
|
// $services->set(SwitchCaseSemicolonToColonFixer::class); broken for php 8.0
|
|
$services->set(SwitchCaseSpaceFixer::class);
|
|
$services->set(VisibilityRequiredFixer::class);
|
|
$services->set(LowercaseCastFixer::class);
|
|
$services->set(ShortScalarCastFixer::class);
|
|
$services->set(BlankLineAfterOpeningTagFixer::class);
|
|
$services->set(NoLeadingImportSlashFixer::class);
|
|
$services->set(OrderedImportsFixer::class)
|
|
->call('configure', [[
|
|
'importsOrder' => ['class', 'function', 'const'],
|
|
]]);
|
|
$services->set(DeclareEqualNormalizeFixer::class)
|
|
->call('configure', [[
|
|
'space' => 'none',
|
|
]]);
|
|
$services->set(NewWithBracesFixer::class);
|
|
$services->set(BracesFixer::class)
|
|
->call('configure', [[
|
|
'allow_single_line_closure' => false,
|
|
'position_after_functions_and_oop_constructs' => 'next',
|
|
'position_after_control_structures' => 'same',
|
|
'position_after_anonymous_constructs' => 'same',
|
|
]]);
|
|
$services->set(NoBlankLinesAfterClassOpeningFixer::class);
|
|
$services->set(VisibilityRequiredFixer::class)
|
|
->call('configure', [[
|
|
'elements' => ['const', 'method', 'property'],
|
|
]]);
|
|
$services->set(BinaryOperatorSpacesFixer::class);
|
|
$services->set(TernaryOperatorSpacesFixer::class);
|
|
$services->set(UnaryOperatorSpacesFixer::class);
|
|
$services->set(ReturnTypeDeclarationFixer::class);
|
|
$services->set(NoTrailingWhitespaceFixer::class);
|
|
$services->set(ConcatSpaceFixer::class)
|
|
->call('configure', [[
|
|
'spacing' => 'one',
|
|
]]);
|
|
$services->set(NoSinglelineWhitespaceBeforeSemicolonsFixer::class);
|
|
$services->set(NoWhitespaceBeforeCommaInArrayFixer::class);
|
|
$services->set(WhitespaceAfterCommaInArrayFixer::class);
|
|
$services->set(DeclareStrictTypesFixer::class);
|
|
$services->set(CompactNullableTypehintFixer::class);
|
|
$services->set(BlankLineBeforeStatementFixer::class);
|
|
$services->set(CombineConsecutiveUnsetsFixer::class);
|
|
$services->set(ClassAttributesSeparationFixer::class);
|
|
$services->set(MultilineWhitespaceBeforeSemicolonsFixer::class);
|
|
$services->set(SingleLineCommentStyleFixer::class);
|
|
$services->set(IncludeFixer::class);
|
|
$services->set(ObjectOperatorWithoutWhitespaceFixer::class);
|
|
$services->set(DisallowDirectMagicInvokeCallSniff::class);
|
|
$services->set(ParamReturnAndVarTagMalformsFixer::class);
|
|
$services->set(UnusedVariableSniff::class);
|
|
$services->set(UselessVariableSniff::class);
|
|
$services->set(UnusedInheritedVariablePassedToClosureSniff::class);
|
|
$services->set(UselessSemicolonSniff::class);
|
|
// $services->set(UselessParenthesesSniff::class); // broken for php 8.0
|
|
$services->set(ArraySyntaxFixer::class)
|
|
->call('configure', [[
|
|
'syntax' => 'short',
|
|
]]);
|
|
$services->set(NoUnusedImportsFixer::class);
|
|
$services->set(OrderedImportsFixer::class);
|
|
$services->set(NoEmptyStatementFixer::class);
|
|
$services->set(ProtectedToPrivateFixer::class);
|
|
$services->set(NoUnneededControlParenthesesFixer::class);
|
|
$services->set(NoUnneededCurlyBracesFixer::class);
|
|
$services->set(ReturnAssignmentFixer::class);
|
|
$services->set(RequireShortTernaryOperatorSniff::class);
|
|
$services->set(RequireCombinedAssignmentOperatorSniff::class);
|
|
$services->set(NoExtraBlankLinesFixer::class)
|
|
->call('configure', [[
|
|
'tokens' => [
|
|
'curly_brace_block',
|
|
'extra',
|
|
'parenthesis_brace_block',
|
|
'square_brace_block',
|
|
'throw',
|
|
'use',
|
|
]
|
|
]]);
|
|
$parameters = $containerConfigurator->parameters();
|
|
$parameters->set(Option::SKIP, [
|
|
SingleImportPerStatementFixer::class => null,
|
|
]);
|
|
};
|