1+ <?php
2+
3+ /*
4+ * This file is part of Chevere.
5+ *
6+ * (c) Rodolfo Berrios <[email protected] > 7+ *
8+ * For the full copyright and license information, please view the LICENSE
9+ * file that was distributed with this source code.
10+ */
11+
12+ declare (strict_types=1 );
13+
14+ use PhpCsFixer \Fixer \ArrayNotation \ArraySyntaxFixer ;
15+ use PhpCsFixer \Fixer \ArrayNotation \NoWhitespaceBeforeCommaInArrayFixer ;
16+ use PhpCsFixer \Fixer \ArrayNotation \WhitespaceAfterCommaInArrayFixer ;
17+ use PhpCsFixer \Fixer \Basic \BracesFixer ;
18+ use PhpCsFixer \Fixer \Basic \EncodingFixer ;
19+ use PhpCsFixer \Fixer \Casing \ConstantCaseFixer ;
20+ use PhpCsFixer \Fixer \Casing \LowercaseKeywordsFixer ;
21+ use PhpCsFixer \Fixer \CastNotation \LowercaseCastFixer ;
22+ use PhpCsFixer \Fixer \CastNotation \ShortScalarCastFixer ;
23+ use PhpCsFixer \Fixer \ClassNotation \ClassAttributesSeparationFixer ;
24+ use PhpCsFixer \Fixer \ClassNotation \ClassDefinitionFixer ;
25+ use PhpCsFixer \Fixer \ClassNotation \NoBlankLinesAfterClassOpeningFixer ;
26+ use PhpCsFixer \Fixer \ClassNotation \ProtectedToPrivateFixer ;
27+ use PhpCsFixer \Fixer \ClassNotation \SingleClassElementPerStatementFixer ;
28+ use PhpCsFixer \Fixer \ClassNotation \VisibilityRequiredFixer ;
29+ use PhpCsFixer \Fixer \Comment \HeaderCommentFixer ;
30+ use PhpCsFixer \Fixer \Comment \NoTrailingWhitespaceInCommentFixer ;
31+ use PhpCsFixer \Fixer \Comment \SingleLineCommentStyleFixer ;
32+ use PhpCsFixer \Fixer \ControlStructure \ElseifFixer ;
33+ use PhpCsFixer \Fixer \ControlStructure \IncludeFixer ;
34+ use PhpCsFixer \Fixer \ControlStructure \NoBreakCommentFixer ;
35+ use PhpCsFixer \Fixer \ControlStructure \NoUnneededControlParenthesesFixer ;
36+ use PhpCsFixer \Fixer \ControlStructure \NoUnneededCurlyBracesFixer ;
37+ use PhpCsFixer \Fixer \ControlStructure \SwitchCaseSemicolonToColonFixer ;
38+ use PhpCsFixer \Fixer \ControlStructure \SwitchCaseSpaceFixer ;
39+ use PhpCsFixer \Fixer \FunctionNotation \FunctionDeclarationFixer ;
40+ use PhpCsFixer \Fixer \FunctionNotation \MethodArgumentSpaceFixer ;
41+ use PhpCsFixer \Fixer \FunctionNotation \NoSpacesAfterFunctionNameFixer ;
42+ use PhpCsFixer \Fixer \FunctionNotation \ReturnTypeDeclarationFixer ;
43+ use PhpCsFixer \Fixer \Import \NoLeadingImportSlashFixer ;
44+ use PhpCsFixer \Fixer \Import \NoUnusedImportsFixer ;
45+ use PhpCsFixer \Fixer \Import \OrderedImportsFixer ;
46+ use PhpCsFixer \Fixer \Import \SingleImportPerStatementFixer ;
47+ use PhpCsFixer \Fixer \Import \SingleLineAfterImportsFixer ;
48+ use PhpCsFixer \Fixer \LanguageConstruct \CombineConsecutiveUnsetsFixer ;
49+ use PhpCsFixer \Fixer \LanguageConstruct \DeclareEqualNormalizeFixer ;
50+ use PhpCsFixer \Fixer \NamespaceNotation \BlankLineAfterNamespaceFixer ;
51+ use PhpCsFixer \Fixer \Operator \BinaryOperatorSpacesFixer ;
52+ use PhpCsFixer \Fixer \Operator \ConcatSpaceFixer ;
53+ use PhpCsFixer \Fixer \Operator \NewWithBracesFixer ;
54+ use PhpCsFixer \Fixer \Operator \ObjectOperatorWithoutWhitespaceFixer ;
55+ use PhpCsFixer \Fixer \Operator \TernaryOperatorSpacesFixer ;
56+ use PhpCsFixer \Fixer \Operator \UnaryOperatorSpacesFixer ;
57+ use PhpCsFixer \Fixer \PhpTag \BlankLineAfterOpeningTagFixer ;
58+ use PhpCsFixer \Fixer \PhpTag \FullOpeningTagFixer ;
59+ use PhpCsFixer \Fixer \PhpTag \NoClosingTagFixer ;
60+ use PhpCsFixer \Fixer \ReturnNotation \ReturnAssignmentFixer ;
61+ use PhpCsFixer \Fixer \Semicolon \MultilineWhitespaceBeforeSemicolonsFixer ;
62+ use PhpCsFixer \Fixer \Semicolon \NoEmptyStatementFixer ;
63+ use PhpCsFixer \Fixer \Semicolon \NoSinglelineWhitespaceBeforeSemicolonsFixer ;
64+ use PhpCsFixer \Fixer \Strict \DeclareStrictTypesFixer ;
65+ use PhpCsFixer \Fixer \Whitespace \BlankLineBeforeStatementFixer ;
66+ use PhpCsFixer \Fixer \Whitespace \CompactNullableTypehintFixer ;
67+ use PhpCsFixer \Fixer \Whitespace \IndentationTypeFixer ;
68+ use PhpCsFixer \Fixer \Whitespace \LineEndingFixer ;
69+ use PhpCsFixer \Fixer \Whitespace \NoExtraBlankLinesFixer ;
70+ use PhpCsFixer \Fixer \Whitespace \NoSpacesInsideParenthesisFixer ;
71+ use PhpCsFixer \Fixer \Whitespace \NoTrailingWhitespaceFixer ;
72+ use PhpCsFixer \Fixer \Whitespace \SingleBlankLineAtEofFixer ;
73+ use SlevomatCodingStandard \Sniffs \ControlStructures \RequireShortTernaryOperatorSniff ;
74+ use SlevomatCodingStandard \Sniffs \Functions \UnusedInheritedVariablePassedToClosureSniff ;
75+ use SlevomatCodingStandard \Sniffs \Operators \RequireCombinedAssignmentOperatorSniff ;
76+ use SlevomatCodingStandard \Sniffs \PHP \DisallowDirectMagicInvokeCallSniff ;
77+ use SlevomatCodingStandard \Sniffs \PHP \UselessParenthesesSniff ;
78+ use SlevomatCodingStandard \Sniffs \PHP \UselessSemicolonSniff ;
79+ use SlevomatCodingStandard \Sniffs \Variables \UnusedVariableSniff ;
80+ use SlevomatCodingStandard \Sniffs \Variables \UselessVariableSniff ;
81+ use Symfony \Component \DependencyInjection \Loader \Configurator \ContainerConfigurator ;
82+ use Symplify \CodingStandard \Fixer \Commenting \ParamReturnAndVarTagMalformsFixer ;
83+ use Symplify \EasyCodingStandard \ValueObject \Option ;
84+ use Symplify \EasyCodingStandard \ValueObject \Set \SetList ;
85+
86+ return static function (ContainerConfigurator $ containerConfigurator ): void {
87+ $ headerFile = __DIR__ . '/.header ' ;
88+ $ parameters = $ containerConfigurator ->parameters ();
89+ $ parameters ->set (Option::SETS , [
90+ SetList::COMMON ,
91+ ]);
92+ $ services = $ containerConfigurator ->services ();
93+ if (file_exists ($ headerFile )) {
94+ $ services ->set (HeaderCommentFixer::class)
95+ ->call ('configure ' , [[
96+ 'header ' => file_get_contents ($ headerFile ),
97+ 'location ' => 'after_open ' ,
98+ ]]);
99+ }
100+ $ services ->set (EncodingFixer::class);
101+ $ services ->set (FullOpeningTagFixer::class);
102+ $ services ->set (BlankLineAfterNamespaceFixer::class);
103+ $ services ->set (BracesFixer::class);
104+ $ services ->set (ClassDefinitionFixer::class);
105+ $ services ->set (ConstantCaseFixer::class);
106+ $ services ->set (ElseifFixer::class);
107+ $ services ->set (FunctionDeclarationFixer::class);
108+ $ services ->set (IndentationTypeFixer::class);
109+ $ services ->set (LineEndingFixer::class);
110+ $ services ->set (LowercaseKeywordsFixer::class);
111+ $ services ->set (MethodArgumentSpaceFixer::class)
112+ ->call ('configure ' , [[
113+ 'on_multiline ' => 'ensure_fully_multiline ' ,
114+ ]]);
115+ $ services ->set (NoBreakCommentFixer::class);
116+ $ services ->set (NoClosingTagFixer::class);
117+ $ services ->set (NoSpacesAfterFunctionNameFixer::class);
118+ $ services ->set (NoSpacesInsideParenthesisFixer::class);
119+ $ services ->set (NoTrailingWhitespaceFixer::class);
120+ $ services ->set (NoTrailingWhitespaceInCommentFixer::class);
121+ $ services ->set (SingleBlankLineAtEofFixer::class);
122+ $ services ->set (SingleClassElementPerStatementFixer::class)
123+ ->call ('configure ' , [[
124+ 'elements ' => ['property ' ],
125+ ]]);
126+ $ services ->set (SingleImportPerStatementFixer::class);
127+ $ services ->set (SingleLineAfterImportsFixer::class);
128+ // $services->set(SwitchCaseSemicolonToColonFixer::class); broken for php 8.0
129+ $ services ->set (SwitchCaseSpaceFixer::class);
130+ $ services ->set (VisibilityRequiredFixer::class);
131+ $ services ->set (LowercaseCastFixer::class);
132+ $ services ->set (ShortScalarCastFixer::class);
133+ $ services ->set (BlankLineAfterOpeningTagFixer::class);
134+ $ services ->set (NoLeadingImportSlashFixer::class);
135+ $ services ->set (OrderedImportsFixer::class)
136+ ->call ('configure ' , [[
137+ 'importsOrder ' => ['class ' , 'function ' , 'const ' ],
138+ ]]);
139+ $ services ->set (DeclareEqualNormalizeFixer::class)
140+ ->call ('configure ' , [[
141+ 'space ' => 'none ' ,
142+ ]]);
143+ $ services ->set (NewWithBracesFixer::class);
144+ $ services ->set (BracesFixer::class)
145+ ->call ('configure ' , [[
146+ 'allow_single_line_closure ' => false ,
147+ 'position_after_functions_and_oop_constructs ' => 'next ' ,
148+ 'position_after_control_structures ' => 'same ' ,
149+ 'position_after_anonymous_constructs ' => 'same ' ,
150+ ]]);
151+ $ services ->set (NoBlankLinesAfterClassOpeningFixer::class);
152+ $ services ->set (VisibilityRequiredFixer::class)
153+ ->call ('configure ' , [[
154+ 'elements ' => ['const ' , 'method ' , 'property ' ],
155+ ]]);
156+ $ services ->set (BinaryOperatorSpacesFixer::class);
157+ $ services ->set (TernaryOperatorSpacesFixer::class);
158+ $ services ->set (UnaryOperatorSpacesFixer::class);
159+ $ services ->set (ReturnTypeDeclarationFixer::class);
160+ $ services ->set (NoTrailingWhitespaceFixer::class);
161+ $ services ->set (ConcatSpaceFixer::class)
162+ ->call ('configure ' , [[
163+ 'spacing ' => 'one ' ,
164+ ]]);
165+ $ services ->set (NoSinglelineWhitespaceBeforeSemicolonsFixer::class);
166+ $ services ->set (NoWhitespaceBeforeCommaInArrayFixer::class);
167+ $ services ->set (WhitespaceAfterCommaInArrayFixer::class);
168+ $ services ->set (DeclareStrictTypesFixer::class);
169+ $ services ->set (CompactNullableTypehintFixer::class);
170+ $ services ->set (BlankLineBeforeStatementFixer::class);
171+ $ services ->set (CombineConsecutiveUnsetsFixer::class);
172+ $ services ->set (ClassAttributesSeparationFixer::class);
173+ $ services ->set (MultilineWhitespaceBeforeSemicolonsFixer::class);
174+ $ services ->set (SingleLineCommentStyleFixer::class);
175+ $ services ->set (IncludeFixer::class);
176+ $ services ->set (ObjectOperatorWithoutWhitespaceFixer::class);
177+ $ services ->set (DisallowDirectMagicInvokeCallSniff::class);
178+ $ services ->set (ParamReturnAndVarTagMalformsFixer::class);
179+ $ services ->set (UnusedVariableSniff::class);
180+ $ services ->set (UselessVariableSniff::class);
181+ $ services ->set (UnusedInheritedVariablePassedToClosureSniff::class);
182+ $ services ->set (UselessSemicolonSniff::class);
183+ // $services->set(UselessParenthesesSniff::class); // broken for php 8.0
184+ $ services ->set (ArraySyntaxFixer::class)
185+ ->call ('configure ' , [[
186+ 'syntax ' => 'short ' ,
187+ ]]);
188+ $ services ->set (NoUnusedImportsFixer::class);
189+ $ services ->set (OrderedImportsFixer::class);
190+ $ services ->set (NoEmptyStatementFixer::class);
191+ $ services ->set (ProtectedToPrivateFixer::class);
192+ $ services ->set (NoUnneededControlParenthesesFixer::class);
193+ $ services ->set (NoUnneededCurlyBracesFixer::class);
194+ $ services ->set (ReturnAssignmentFixer::class);
195+ $ services ->set (RequireShortTernaryOperatorSniff::class);
196+ $ services ->set (RequireCombinedAssignmentOperatorSniff::class);
197+ $ services ->set (NoExtraBlankLinesFixer::class)
198+ ->call ('configure ' , [[
199+ 'tokens ' => [
200+ 'curly_brace_block ' ,
201+ 'extra ' ,
202+ 'parenthesis_brace_block ' ,
203+ 'square_brace_block ' ,
204+ 'throw ' ,
205+ 'use ' ,
206+ ]
207+ ]]);
208+ $ parameters = $ containerConfigurator ->parameters ();
209+ $ parameters ->set (Option::SKIP , [
210+ SingleImportPerStatementFixer::class => null ,
211+ ]);
212+ };
0 commit comments