Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###############################################################################
- #
- # PHP Syntax Check for Git pre-commit hook for Windows PowerShell
- #
- # Author: Vojtech Kusy <wojtha@gmail.com>, Kyle Wiering <kyle.wiering@yahoo.com>
- #
- ###############################################################################
- ### INSTRUCTIONS ###
- # Place the code to file "pre-commit" (no extension) and add it to the one of
- # the following locations:
- # 1) Repository hooks folder - C:\Path\To\Repository\.git\hooks
- # 2) User profile template - C:\Users\<USER>\.git\templates\hooks
- # 3) Global shared templates - C:\Program Files (x86)\Git\share\git-core\templates\hooks
- #
- # The hooks from user profile or from shared templates are copied from there
- # each time you create or clone new repository.
- ### SETTINGS ###
- # Path to the php.exe
- $php_exe = "C:\Program Files (x86)\Zend\ZendServer\bin\php.exe";
- # Extensions of the PHP files
- $php_ext = "php|engine|theme|install|inc|module|test"
- # Flag, if set to 1 git will unstage all files with errors, se to 0 to disable
- $unstage_on_error = 0;
- ### FUNCTIONS ###
- function php_syntax_check {
- param([string]$php_bin, [string]$extensions, [int]$reset)
- $err_counter = 0;
- write-host "Pre-commit PHP syntax check:" -foregroundcolor "white"
- git diff-index --name-only --cached HEAD -- | foreach {
- if ($_ -match ".*\.($extensions)$") {
- $file = $matches[0];
- If (Test-Path $file){
- $errors = & $php_bin -d display_errors=On -l $file
- if ($errors -match "No syntax errors detected in $file") {
- write-host $file ": OK" -foregroundcolor "green"
- }
- else {
- write-host $file ":" $errors -foregroundcolor "red"
- if ($reset) {
- git reset -q HEAD $file
- write-host "Unstaging" $file "..." -foregroundcolor "magenta"
- }
- $err_counter++
- }
- }
- else {
- write-host $file ": OK" -foregroundcolor "green"
- }
- }
- }
- if ($err_counter -gt 0) {
- exit 1
- }
- }
- php_syntax_check $php_exe $php_ext $unstage_on_error
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement