Wine93
6 years ago
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