61 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # git update hook to check that pushed changes don't introduce new flake8
 | |
| # errors
 | |
| 
 | |
| # --- Command line
 | |
| refname="$1"
 | |
| oldrev="$2"
 | |
| newrev="$3"
 | |
| 
 | |
| # --- Safety check
 | |
| if [ -z "$GIT_DIR" ]; then
 | |
| 	echo "Don't run this script from the command line." >&2
 | |
| 	echo " (if you want, you could supply GIT_DIR then run" >&2
 | |
| 	echo "  $0 <ref> <oldrev> <newrev>)" >&2
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
 | |
| 	echo "usage: $0 <ref> <oldrev> <newrev>" >&2
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| 
 | |
| TMPDIR=`mktemp -d`
 | |
| TMPDIFF=`tempfile`
 | |
| 
 | |
| [ $refname != "refs/heads/master" -a $refname != "refs/heads/stable" ] && exit 0
 | |
| 
 | |
| # select only changed python files which are not migrations
 | |
| changed=`git diff --name-only $oldrev $newrev | grep 'py$' | grep -v 'migrations/[0-9]'`
 | |
| if [ -z $changed ] ; then
 | |
|     # Nothing to check. Note the exit is necessary -- we would not pass any
 | |
|     # paths to git diff below and it would output the diff unfiltered.
 | |
|     exit 0
 | |
| fi
 | |
| 
 | |
| git diff --unified=1 $oldrev $newrev -- $changed >${TMPDIFF}
 | |
| 
 | |
| # there is no working tree in bare git repository, so we recreate it for flake8
 | |
| git archive $newrev | tar -x -C ${TMPDIR}
 | |
| 
 | |
| cd ${TMPDIR}
 | |
| # report only errors on lines in diff
 | |
| # (if threre was flake8 installed on atrey, we could just call flake8)
 | |
| /akce/MaM/WWW/mamweb-test/bin/flake8 --diff <${TMPDIFF}
 | |
| status=$?
 | |
| if [ $status != 0 ] ; then
 | |
|     echo
 | |
|     echo -n "Změny, které se snažíte pushnout, obsahují kód v pythonu "
 | |
|     echo -n "nevyhovující flake8 (viz výše). Opravte je a zkuste to znovu. "
 | |
|     echo -n "Nezapomeňte, že můžete editovat historii (git commit --amend, "
 | |
|     echo -n "git rebase -i). Pokud byste chybu příště raději odhalili už při "
 | |
|     echo "commitu, zkopírujte si pre-commit hook z _git_hooks do .git/hooks."
 | |
|     echo
 | |
| fi
 | |
| 
 | |
| rm -rf ${TMPDIR}
 | |
| rm -f ${TMPDIFF}
 | |
| 
 | |
| exit $status
 | 
