ghostwriter/phormat

PHP code formatter

dev-main 2024-12-10 16:06 UTC

This package is auto-updated.

Last update: 2024-12-10 16:07:20 UTC


README

Automation Supported PHP Version GitHub Sponsors Code Coverage Type Coverage Psalm Level Latest Version on Packagist Downloads

PHP code formatter.

Warning

This project is not finished yet, work in progress.

Installation

You can install the package via composer:

composer require ghostwriter/phormat

Star ⭐️ this repo if you find it useful

You can also star (🌟) this repo to find it easier later.

Usage

vendor/bin/phormat <path> --dry-run

Configuration

wip - work in progress

<?php

declare(strict_types=1);

use Ghostwriter\Phormat\NodeVisitor\ChangeToShortArrayNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\DeclareStrictTypesNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\ImportFullyQualifiedNamesNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\MakeClosureAndFunctionStaticNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\PERCSNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortClassLikeMemberStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortClassLikeStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortMatchExpressionsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\NodeVisitor\SortUseStatementsAlphabeticallyNodeVisitor;
use Ghostwriter\Phormat\PhormatConfig;

/** @var non-empty-string $workingDirectory */
$workingDirectory = \getcwd() ?: __DIR__;

/** @psalm-suppress UncaughtThrowInGlobalScope */
return PhormatConfig::new()
    ->visitors([
        PERCSNodeVisitor::class,
        // ChangeToShortArrayNodeVisitor::class,
        // DeclareStrictTypesNodeVisitor::class,
        // ImportFullyQualifiedNamesNodeVisitor::class,
        // MakeClosureAndFunctionStaticNodeVisitor::class,
        // SortClassLikeMemberStatementsAlphabeticallyNodeVisitor::class,
        // SortClassLikeStatementsAlphabeticallyNodeVisitor::class,
        // SortMatchExpressionsAlphabeticallyNodeVisitor::class,
        // SortUseStatementsAlphabeticallyNodeVisitor::class,
    ]);
    ->paths([
        $workingDirectory . '/bin',
        $workingDirectory . '/src', 
        $workingDirectory . '/tests'
    ])
    ->exclude([
        PERCSNodeVisitor::class => [
            $workingDirectory . '/resources',
        ],
        $workingDirectory . '/.cache',
        $workingDirectory . '/docs',
        $workingDirectory . '/tests/fixture'
        $workingDirectory . '/vendor',
    ]);
    ->phpVersion(8, 2); // To use a specific PHP version when parsing the code

Credits

Changelog

Please see CHANGELOG.md for more information on what has changed recently.

License

Please see LICENSE for more information on the license that applies to this project.

Security

Please see SECURITY.md for more information on security disclosure process.