Fixed PhpCsFixer directory. Issue #75.

This commit is contained in:
Dmitry Khomutov 2017-05-31 21:19:22 +07:00
parent 92e535dffd
commit 41f7597c05
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
2 changed files with 37 additions and 5 deletions

View file

@ -13,6 +13,7 @@ Configuration
* **directory** [string, optional] - The directory in which PHP CS Fixer should work (default: `%BUILD_PATH%`)
* **rules** [string, optional] - Fixer rules (default: `@PSR2`)
* **args** [string, optional] - Command line args (in string format) to pass to PHP Coding Standards Fixer (default: ``)
* **config** [string, optional] - Special config file (default: `%BUILD_PATH%./.php_cs` or `%BUILD_PATH%./.php_cs.dist`)
### Examples
@ -31,3 +32,9 @@ test:
diff: true
rules: "@PSR2"
```
```yml
test:
php_cs_fixer:
config: "./my/dir/.php_cs.special"
```

View file

@ -15,6 +15,12 @@ class PhpCsFixer extends Plugin
{
protected $directory = null;
protected $args = '';
protected $config = false;
protected $configs = [
'.php_cs',
'.php_cs.dist',
];
/**
* @return string
@ -34,7 +40,7 @@ class PhpCsFixer extends Plugin
if (!empty($options['args'])) {
$this->args = $options['args'];
}
if (isset($options['verbose']) && $options['verbose']) {
$this->args .= ' --verbose';
}
@ -47,6 +53,11 @@ class PhpCsFixer extends Plugin
$this->args .= ' --rules=' . $options['rules'];
}
if (isset($options['config']) && $options['config']) {
$this->config = true;
$this->args .= ' --config=' . $builder->interpolate($options['config']);
}
if (isset($options['directory']) && $options['directory']) {
$this->directory = $builder->interpolate($options['directory']);
}
@ -55,17 +66,31 @@ class PhpCsFixer extends Plugin
/**
* Run PHP CS Fixer.
*
* @return bool
* @return boolean
*/
public function execute()
{
$cmd = '';
$directory = '';
if (!empty($this->directory)) {
$cmd = 'cd ' . $this->directory . ' && ';
$directory = $this->directory;
}
if (!$this->config) {
foreach ($this->configs as $config) {
if (file_exists($this->builder->buildPath . '/' . $config)) {
$this->config = true;
$this->args .= ' --config=./' . $config;
break;
}
}
}
if (!$this->config && !$directory) {
$directory = '.';
}
$phpCsFixer = $this->builder->findBinary('php-cs-fixer');
$cmd .= $phpCsFixer . ' fix . %s';
$cmd = $phpCsFixer . ' fix ' . $directory . ' %s';
$success = $this->builder->executeCommand($cmd, $this->args);
return $success;