Código lint antes do git push

Linting antes de empurrar pode ser útil. Claro, às vezes ver os problemas enquanto você escreve o código é ainda melhor, mas pode ser uma distração.

Este script é executado gulp jshinte / ou gulp scss-lintapenas se as alterações estiverem sendo enviadas para arquivos relevantes para as tarefas lint. Por exemplo, gulp jshintsó será executado se os arquivos javascript forem alterados.

Uso

Coloque o arquivo .git/hooks/pre-pushe certifique-se de que seja executável. Personalize de acordo com suas necessidades.

bônus #protip

icefox / git-hooks é uma ótima ferramenta para gerenciar git hooks.

#!/bin/bash

# lint
# - if pushing changes to .js files: run gulp jshint
# - if pushing changes to .scss files: run gulp scss-lint

set -e

remote
="$1"
url
="$2"
z40
=0000000000000000000000000000000000000000

while read local_ref local_sha remote_ref remote_sha
do
if [ "$local_sha" = $z40 ]; then
# branch deleted
:
else
if [ "$remote_sha" = $z40 ]; then
jshint
=1
scsslint
=1
else
range
="$remote_sha..$local_sha"
files
=`git diff --name-only $range`

[ -n "`echo $files | grep .js$`" ] && jshint=1
[ -n "`echo $files | grep .scss$`" ] && scsslint=1
fi

if [[ $jshint -eq 1 ]]; then
gulp jshint
--target=production
fi

if [[ $scsslint -eq 1 ]]; then
gulp scss
-lint --target=production
fi
fi
done

exit
0