diff --git a/src/Action/Action.php b/src/Action/Action.php index e4c1b26..07c9eb7 100644 --- a/src/Action/Action.php +++ b/src/Action/Action.php @@ -18,7 +18,7 @@ abstract class Action implements ActionInterface { protected const ERROR_MESSAGE = "I'm sorry, Dave. I'm afraid I can't do that. Please check your commit for errors"; - public function execute(Config $config, IO $io, Repository $repository, Config\Action $action): void + public function execute(Config $config, IO $io, Repository $repository, ActionConfig $action): void { if (!$this->isEnabled($action)) { return; @@ -27,7 +27,7 @@ public function execute(Config $config, IO $io, Repository $repository, Config\A $this->doExecute($config, $io, $repository, $action); } - abstract protected function doExecute(Config $config, IO $io, Repository $repository, Config\Action $action): void; + abstract protected function doExecute(Config $config, IO $io, Repository $repository, ActionConfig $action): void; protected function throwError(ActionConfig $config, IO $io): void { diff --git a/src/Action/JSLinter.php b/src/Action/JSLinter.php index 7522bd8..5ee4ac4 100644 --- a/src/Action/JSLinter.php +++ b/src/Action/JSLinter.php @@ -9,6 +9,7 @@ use SebastianFeldmann\Cli\Processor\ProcOpen as Processor; use SebastianFeldmann\Git\Repository; +use function array_merge; use function count; use function escapeshellarg; use function preg_match; @@ -19,8 +20,14 @@ final class JSLinter extends Action protected function doExecute(Config $config, IO $io, Repository $repository, Config\Action $action): void { - $changedJsFiles = $repository->getIndexOperator()->getStagedFilesOfType('js'); - if (count($changedJsFiles) === 0) { + $extensions = $action->getOptions()->get('extensions', ['js']); + + $changedFiles = []; + foreach ($extensions as $extension) { + $changedFiles = array_merge($changedFiles, $repository->getIndexOperator()->getStagedFilesOfType($extension)); + } + + if (count($changedFiles) === 0) { return; } @@ -30,7 +37,7 @@ protected function doExecute(Config $config, IO $io, Repository $repository, Con $linterOptions = $action->getOptions()->get('linter_options', '--fix-dry-run'); $io->write('Running linter on files:', true, IO::VERBOSE); - foreach ($changedJsFiles as $file) { + foreach ($changedFiles as $file) { if ($this->shouldSkipFileCheck($file, $excludedFiles)) { continue; } diff --git a/src/Action/JSPrettier.php b/src/Action/JSPrettier.php index 663eb29..9174b41 100644 --- a/src/Action/JSPrettier.php +++ b/src/Action/JSPrettier.php @@ -9,6 +9,7 @@ use SebastianFeldmann\Cli\Processor\ProcOpen as Processor; use SebastianFeldmann\Git\Repository; +use function array_merge; use function count; use function escapeshellarg; use function preg_match; @@ -19,8 +20,14 @@ final class JSPrettier extends Action protected function doExecute(Config $config, IO $io, Repository $repository, Config\Action $action): void { - $changedJsFiles = $repository->getIndexOperator()->getStagedFilesOfType('js'); - if (count($changedJsFiles) === 0) { + $extensions = $action->getOptions()->get('extensions', ['js']); + + $changedFiles = []; + foreach ($extensions as $extension) { + $changedFiles = array_merge($changedFiles, $repository->getIndexOperator()->getStagedFilesOfType($extension)); + } + + if (count($changedFiles) === 0) { return; } @@ -30,7 +37,7 @@ protected function doExecute(Config $config, IO $io, Repository $repository, Con $prettierOptions = $action->getOptions()->get('prettier_options', '--check'); $io->write('Running prettier on files:', true, IO::VERBOSE); - foreach ($changedJsFiles as $file) { + foreach ($changedFiles as $file) { if ($this->shouldSkipFileCheck($file, $excludedFiles)) { continue; }