1 changed files with 98 additions and 0 deletions
			
			
		- 
					98util/gostd
 
@ -0,0 +1,98 @@ | 
				
			|||
#!/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 "$@" | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue