diff --git a/git-fix-whitespace b/git-fix-whitespace index d7a2e8c..184a2b9 100755 --- a/git-fix-whitespace +++ b/git-fix-whitespace @@ -1,9 +1,12 @@ #!/bin/bash + +me="$(basename $0)" + usage() { - me="$(basename $0)" cat << EOF git-fix-whitespace - Fixes the whitespace issues that 'git-diff --check' complains about. + Usage: $me --cached $me tree-ish tree-ish @@ -44,17 +47,34 @@ err_files(){ git diff $ARG1 $ARG2 --check | sed -E '/^(\+|-)/d;s/:.*//' | sort | uniq } -PATCH=$(mktemp ${0##*/}.patch.XXXXXX) -if [[ $# == 1 && "$1" == "--cached" ]]; then - ARG1=$1 - ARG2=HEAD -elif [[ $# == 2 ]]; then - ARG1=$1 - ARG2=$2 -else - usage - exit -fi +case "$#" in + 1) + test "$1" = "--cached" && ARG1=$1 || { + echo + echo "Inavlid arguments" + echo + echo + usage + } + ARG1=$1 + ARG2=HEAD + ;; + 2) + ARG1=$1 + ARG2=$2 + ;; + *) + test $# > 3 && { + echo + echo "Invalid arguments" + echo + echo + } + usage + ;; +esac + +PATCH=$(mktemp -p $(pwd -P) ${me}.patch.XXXXXX) git diff $ARG1 $ARG2 > $PATCH FILES=$(sed '/^+++ /!d;s?^+++ b/??' $PATCH) echo -e "Files in index with whitespace errors:\n$(err_files 1)"