apiv1

git config --global alias.log-format '!git log --pretty=tformat: --numstat'
git config --global alias.log-count '!awk "{ add += \$1 ; subs += \$2 ; loc += \$1 - \$2 } END { printf \"\033[31m+\033[0m:%s  \033[32m-\033[0m:%s  \033[33m△\033[0m:%s\n\",add,subs,loc }"'

git config --global alias.who '!git log --pretty="%aN <%aE>" | sort | uniq -c | sort -k1 -n -r'

git config --global alias.recount '!
_count() {
    awk "{ add += \$1 ; subs += \$2 ; loc += \$1 - \$2 } END { printf \"%s  %s  %s\",add,subs,loc }"
}
recount() {
    TOTAL_COMMIT=$(echo $(git log --oneline $@ | wc -l))
    TOTAL=$(git log --pretty=tformat: --numstat $@ | _count)
    TOTAL_ADD=$(echo $TOTAL | awk "{print \$1}") TOTAL_SUBS=$(echo $TOTAL | awk "{print \$2}") TOTAL_LOC=$(echo $TOTAL | awk "{print \$3}")
    printf "\033[31m+\033[0m:%-8s  \033[32m-\033[0m:%-8s  \033[33m△\033[0m:%-12s  \033[33m↑\033[0m:%-12s  --- Total ---\n" $TOTAL_ADD $TOTAL_SUBS $TOTAL_LOC $TOTAL_COMMIT
    git log --pretty="%aN <%aE>" $@ | sort | uniq -c | sort -k1 -n -r |
    while read count name
    do
        LOCAL=$(git log --pretty=tformat: --numstat --author="$name" $@ | _count)
        LOCAL_ADD=$(echo $LOCAL | awk "{print \$1}") LOCAL_SUBS=$(echo $LOCAL | awk "{print \$2}") LOCAL_LOC=$(echo $LOCAL | awk "{print \$3}")
        printf "\033[31m+\033[0m:%-8s  \033[32m-\033[0m:%-8s  \033[33m△\033[0m:%-12s  \033[33m↑\033[0m:%-12s $name\n" $LOCAL_ADD $LOCAL_SUBS "$LOCAL_LOC($((${LOCAL_LOC:-0}*100/$TOTAL_LOC))%)" "$count($((${count:-0}*100/$TOTAL_COMMIT))%)"
    done;
}; recount'