Skip to content

Commit 33d810c

Browse files
committed
Initial commit
0 parents  commit 33d810c

File tree

14 files changed

+595
-0
lines changed

14 files changed

+595
-0
lines changed

.ecs/.header

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
This file is part of Chevere.
2+
3+
(c) Rodolfo Berrios <[email protected]>
4+
5+
For the full copyright and license information, please view the LICENSE
6+
file that was distributed with this source code.

.ecs/ecs-chevere.php

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
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+
};

.ecs/ecs.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
15+
use Symplify\EasyCodingStandard\ValueObject\Option;
16+
17+
return static function (ContainerConfigurator $containerConfigurator): void {
18+
$containerConfigurator->import(__DIR__ . '/ecs-chevere.php');
19+
$parameters = $containerConfigurator->parameters();
20+
$parameters->set(Option::SKIP, [
21+
__DIR__ . '/vendor/*'
22+
]);
23+
};

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_Store
2+
/.idea
3+
/.phpunit.cache
4+
/.scannerwork
5+
/vendor
6+
/composer.lock
7+
/build

.vscode/settings.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"runOnSave.commands": [
3+
{
4+
"match": "\\.php$",
5+
"runIn": "backend",
6+
"command": "cd ${workspaceFolder} && vendor/bin/ecs --config='.ecs/ecs.php' check ${file} --fix",
7+
"workingDirectoryAsCWD": true,
8+
"runningStatusMessage": "ECS ${fileBasename}",
9+
"finishStatusMessage": "${fileBasename} OK"
10+
},
11+
]
12+
}

0 commit comments

Comments
 (0)