You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/usr/bin/env bash
############################ GLOBAL VARIABLES regex=' ' branch="master" max_length=150
REGEX_SUFFIX_GO=".+\.go$"
############################ FUNCTIONS msg() { printf '%b' "$1" >&2 }
die() { msg "\33[31m[✘]\33[0m ${1}${2}" exit 1 }
succ() { msg "\33[34m[√]\33[0m ${1}${2}" }
gostd() { local branch=$1 local reg4exclude=$2 local max_length=$3
for file in `git diff $branch --name-only` do if ! [[ $file =~ $REGEX_SUFFIX_GO ]] || [[ $file =~ $reg4exclude ]]; then continue fi
error=`go fmt $file 2>&1` if ! [ $? -eq 0 ]; then die "go fmt $file:" "$error" fi
succ "$file\n"
grep -n -E --color=always ".{$max_length}" $file | awk '{ printf ("%4s %s\n", "", $0) }' done }
get_options() { while getopts "b:e:hl:" opts do case $opts in b) branch=$OPTARG ;; e) regex=$OPTARG ;; h) usage exit 0 ;; l) max_length=$OPTARG ;; \?) usage exit 1 ;; esac done }
usage () { cat << _EOC_ Usage: gostd [options]
Options: -b <branch/commit> Specify the git diff branch or commit. (default: master) -e <regex> Regex for excluding file or directory. -h Print this usage. -l <length> Show files that exceed the limit line length. (default: 150)
Examples: gostd gostd -b master -l 100 gostd -b 59d532a -e weed/pb -l 100 _EOC_ }
main() { get_options "$@"
gostd "$branch" "$regex" "$max_length" }
############################ MAIN() main "$@"
|