sspooky13 / yaml-standards
Standards for yaml files
Installs: 341 568
Dependents: 3
Suggesters: 0
Security: 0
Stars: 9
Watchers: 1
Forks: 2
Open Issues: 12
Requires
- php: ^7.2 || ^8.0
- sebastian/diff: ^3.0 || ^4.0 || ^5.0 || ^6.0
- symfony/config: ^4.2.0 || ^5.0 || ^6.0 || ^7.0
- symfony/console: ^4.2.0 || ^5.0 || ^6.0 || ^7.0
- symfony/yaml: ^4.2.0 || ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- phing/phing: ^2.17.4
- php-parallel-lint/php-parallel-lint: ^1.3.2
- phpstan/phpstan: ^0.12.100
- phpstan/phpstan-phpunit: ^0.12.22
- phpunit/phpunit: ^8.5.14 || ^9.0 || ^10.0
- shopsys/coding-standards: ^9.1.3
- symfony/var-dumper: ^5.4.29
README
This library is primarily intended to help you to keep observe standards for YAML files, but some standards can be used for other files, e.g. YamlEmptyLineAtEnd standard
Installation
Install the latest version with Composer command:
composer require --dev sspooky13/yaml-standards
Usage
- Create config file in project root directory with allowed standards and files/directories to check. You can copy config file
./example/yaml-standards.yaml
and edit it according to your needs. - Run
vendor/bin/yaml-standards
Tips:
- If your config file has different name or it's located in different directory as root you can run command with argument where is wried path to config file with name, e.g.
vendor/bin/yaml-standards ./path/to/your/configFile.yaml
- You can create target for Phing build tool, e.g.
<property name="path.yaml-standards" value="./vendor/bin/yaml-standards"/> <target name="check-yaml-standards" description="Run yaml standards checks"> <exec executable="${path.yaml-standards}" logoutput="true" passthru="true" checkreturn="true" > <arg value="./path/to/your/configFile.yaml" /> </exec> </target>
Options for run
./path/to/your/configFile.yaml
Path to your config file. Default is./yaml-standards.yaml
.--fix
Automatically fix allowed standards problems.--path-to-cache-dir=./path/to/cache/dir/
Custom path where should be cache file stored. Default is the directory PHP stores temporary files in by default (sys_get_temp_dir()).--no-cache
Turn off cache functionality.--no-progress-bar
Turn off progress bar. Useful e.g. for nicer CI output.
Implemented checkers
- YamlAlphabeticalChecker - Check yaml file is alphabetically sorted to selected level. This checker has fixer.
- YamlIndentChecker - Check yaml has right count of indents. This checker has fixer.
- YamlSpacesBetweenGroupsChecker - Check yaml file has empty line between every group to selected level. This checker has fixer.
- YamlInlineChecker - Check yaml file observe standards by symfony yaml parser.
- YamlEmptyLineAtEnd - Check yaml file has empty line at end of file. This checker has fixer. Note: This standard can be used on every file, not only yaml files.
- YamlServiceAliasing - Check yaml service file observe short or long code style aliasing. This checker has fixer.
PHPStorm Integration
You can integrate YAML standards into PHPStorm by using File Watcher.
- Open Settings -> Tools -> File Watchers
- Add new -> custom
- Give it a name
- Select file type:
YAML
- Program:
\vendor\bin\yaml-standards.bat
- Arguments: absolute path to your config file
- In config file path to check and excluded paths must have absolute path too
Now, file watcher check your YAML files by config file and notify you if they have errors
How create your own standards
- Create class with your own check/fix logic
- Checker has to extend class
YamlStandards\Model\AbstractChecker.php
and class name have to end withChecker
word, e.g. YamlLineChecker - Fixer has to be in same directory as checker class, extend class
YamlStandards\Model\AbstractFixer.php
and name have to be same as checker class except name must end withFixer
word, e.g. YamlLineFixer. Warning! checker class must exist too. - Both classes must return class
\YamlStandards\Result\Result
- Add your checker class with namespace to your config file to
checkers
array - done :)
If you think your checker/fixer can be helpful for others, you can create pull request with your code to make it available to everyone :)
Exit codes
Exit code is built using following bit flags:
0 OK.
1 Some file has invalid syntax.
2 General error (file is not readable, error with parse yaml file).