1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/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 "$@"
|