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
32 changes: 3 additions & 29 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ tests: &tests
bin/doc
PHP_CS_FIXER_IGNORE_ENV=1 composer run php-cs-fixer || (echo "Coding standards are not respected. Run 'composer run php-cs-fixer'" && exit 1)

tests_with_future_mode: &tests_with_future_mode
run: |
PHP_CS_FIXER_FUTURE_MODE=1 composer test -vvv
bin/doc
PHP_CS_FIXER_IGNORE_ENV=1 composer run php-cs-fixer || (echo "Coding standards are not respected. Run 'composer run php-cs-fixer'" && exit 1)

jobs:
tests:
parameters:
Expand All @@ -46,18 +40,6 @@ jobs:
- <<: *composer_update
- <<: *tests

tests-with-future-mode:
parameters:
php-version:
type: string
docker:
- image: "php:<< parameters.php-version >>"
steps:
- checkout
- <<: *install_composer
- <<: *composer_update
- <<: *tests_with_future_mode

tests-with-lowest-dependencies:
parameters:
php-version:
Expand Down Expand Up @@ -107,35 +89,27 @@ workflows:
matrix:
parameters:
php-version:
- "8.3"
- "8.4"
- tests:
matrix:
parameters:
php-version:
- "8.1"
- "8.2"
- "8.3"
- tests-with-future-mode:
matrix:
parameters:
php-version:
- "8.1"
- "8.2"
- "8.3"
- "8.4"
- tests-with-lowest-dependencies:
matrix:
parameters:
php-version:
- "8.1"
- "8.2"
- "8.3"
- "8.4"
- release-test
- release:
requires:
- release-test
- documentation
- tests
- tests-with-future-mode
- tests-with-lowest-dependencies
filters:
branches:
Expand Down
6 changes: 2 additions & 4 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
->setRiskyAllowed(true)
->setRules(
RuleSetFactory::create()
->per(2, true)
->phpCsFixer(true)
->php(8.1, true)
->php(8.2, true)
->pedrotroller(true)
->enable('align_multiline_comment')
->enable('array_indentation')
Expand All @@ -29,11 +28,10 @@
->enable('no_superfluous_phpdoc_tags')
->enable('ordered_imports')
->enable('ordered_interfaces')
->enable('simplified_null_return')
->disable('simplified_null_return')
->getRules()
)
->setUsingCache(false)
->setUnsupportedPhpVersionAllowed(true)
->registerCustomFixers(new Fixers())
->setFinder(
Finder::create()
Expand Down
18 changes: 8 additions & 10 deletions bin/doc
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,14 @@ $fixers = array_map(static function (AbstractFixer $fixer) {
'deprecated' => $fixer->isDeprecated(),
'replacement' => $fixer->getDeprecationReplacement(),
'options' => array_map(
static function (FixerOptionInterface $option) {
return [
'name' => $option->getName(),
'description' => $option->getDescription(),
'required' => false === $option->hasDefault(),
'allowedValues' => $option->getAllowedValues(),
'allowedTypes' => $option->getAllowedTypes(),
'defaultValue' => $option->getDefault(),
];
},
static fn (FixerOptionInterface $option) => [
'name' => $option->getName(),
'description' => $option->getDescription(),
'required' => false === $option->hasDefault(),
'allowedValues' => $option->getAllowedValues(),
'allowedTypes' => $option->getAllowedTypes(),
'defaultValue' => $option->getDefault(),
],
$fixer instanceof ConfigurableFixerInterface
? $fixer->getConfigurationDefinition()->getOptions()
: []
Expand Down
7 changes: 3 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
"description": "PHP-CS-FIXER : my custom fixers",
"license": "MIT",
"require": {
"php": "^8.1",
"friendsofphp/php-cs-fixer": ">=3.59.3"
"php": "^8.2",
"friendsofphp/php-cs-fixer": "^3.87"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.60",
"phpspec/phpspec": "^7.0",
"phpspec/phpspec": "^8.0",
"sebastian/diff": "^4.0",
"twig/twig": "^3.3",
"webmozart/assert": "^1.10"
Expand Down
171 changes: 103 additions & 68 deletions src/PedroTroller/CS/Fixer/RuleSetFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static function create(array $rules = []): self
);
}

public function per(null|float|int $version = null, bool $risky = false): self
public function per(float|int|null $version = null, bool $risky = false): self
{
$candidates = null !== $version
? ['@PER-CS'.number_format($version, 1, '.', '')]
Expand All @@ -73,45 +73,55 @@ public function per(null|float|int $version = null, bool $risky = false): self
continue;
}

return self::create(array_merge(
$this->rules,
[$candidate => true],
));
return self::create(
array_merge(
$this->rules,
[$candidate => true],
)
);
}

throw new Exception('RuleSet not found: '.implode(', ', $candidates));
}

public function psr0(): self
{
return self::create(array_merge(
$this->rules,
['@psr0' => true]
));
return self::create(
array_merge(
$this->rules,
['@psr0' => true]
)
);
}

public function psr1(): self
{
return self::create(array_merge(
$this->rules,
['@psr1' => true]
));
return self::create(
array_merge(
$this->rules,
['@psr1' => true]
)
);
}

public function psr2(): self
{
return self::create(array_merge(
$this->rules,
['@psr2' => true]
));
return self::create(
array_merge(
$this->rules,
['@psr2' => true]
)
);
}

public function psr4(): self
{
return self::create(array_merge(
$this->rules,
['@psr4' => true]
));
return self::create(
array_merge(
$this->rules,
['@psr4' => true]
)
);
}

public function symfony(bool $risky = false): self
Expand All @@ -122,10 +132,12 @@ public function symfony(bool $risky = false): self
$rules['@Symfony:risky'] = true;
}

return self::create(array_merge(
$this->rules,
$rules
));
return self::create(
array_merge(
$this->rules,
$rules
)
);
}

public function phpCsFixer(bool $risky = false): self
Expand All @@ -136,18 +148,22 @@ public function phpCsFixer(bool $risky = false): self
$rules['@PhpCsFixer:risky'] = true;
}

return self::create(array_merge(
$this->rules,
$rules
));
return self::create(
array_merge(
$this->rules,
$rules
)
);
}

public function doctrineAnnotation(): self
{
return self::create(array_merge(
$this->rules,
['@DoctrineAnnotation' => true]
));
return self::create(
array_merge(
$this->rules,
['@DoctrineAnnotation' => true]
)
);
}

public function php(float $version, bool $risky = false): self
Expand All @@ -165,10 +181,12 @@ public function php(float $version, bool $risky = false): self
$config['array_syntax'] = ['syntax' => 'short'];
}

return self::create(array_merge(
$this->rules,
$config
));
return self::create(
array_merge(
$this->rules,
$config
)
);
}

public function phpUnit(float $version, bool $risky = false): self
Expand All @@ -192,26 +210,32 @@ public function pedrotroller(bool $risky = false): self
$rules[$fixer->getName()] = true;
}

return self::create(array_merge(
$this->rules,
$rules
));
return self::create(
array_merge(
$this->rules,
$rules
)
);
}

public function enable(string $name, ?array $config = null): self
{
return self::create(array_merge(
$this->rules,
[$name => \is_array($config) ? $config : true]
));
return self::create(
array_merge(
$this->rules,
[$name => \is_array($config) ? $config : true]
)
);
}

public function disable(string $name): self
{
return self::create(array_merge(
$this->rules,
[$name => false]
));
return self::create(
array_merge(
$this->rules,
[$name => false]
)
);
}

private function migration(string $package, float $version, bool $risky): self
Expand All @@ -228,31 +252,42 @@ static function ($name) {

$rules = array_filter($rules);

$rules = array_filter($rules, static function ($versionAndRisky) use ($package) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;
$rules = array_filter(
$rules,
static function ($versionAndRisky) use ($package) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;

return strtoupper($package) === strtoupper($rulePackage);
});
return strtoupper($package) === strtoupper($rulePackage);
}
);

$rules = array_filter($rules, static function ($versionAndRisky) use ($version) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;
$rules = array_filter(
$rules,
static function ($versionAndRisky) use ($version) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;

return ((float) $ruleVersion / 10) <= $version;
});
return ((float) $ruleVersion / 10) <= $version;
}
);

$rules = array_filter($rules, static function ($versionAndRisky) use ($risky) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;
$rules = array_filter(
$rules,
static function ($versionAndRisky) use ($risky) {
[$rule, $rulePackage, $ruleVersion, $ruleRisky] = $versionAndRisky;

if ($risky) {
return true;
}
if ($risky) {
return true;
}

return empty($ruleRisky);
});
return empty($ruleRisky);
}
);

return self::create(array_merge(
$this->rules,
array_map(static fn () => true, $rules)
));
return self::create(
array_merge(
$this->rules,
array_map(static fn () => true, $rules)
)
);
}
}