mirror of
https://github.com/iLoveElysia/openbilibili.git
synced 2026-09-02 07:38:04 -05:00
108 lines
2.5 KiB
Bash
108 lines
2.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
#自动配置环境变量并使用测试配置运行go run或test(加参数 -t),可以项目任一目录执行,都可以自动找到并运行对应的cmd/main.go
|
|||
|
|
|
|||
|
|
export DEPLOY_ENV=uat
|
|||
|
|
export ZONE=sh001
|
|||
|
|
export APP_ID
|
|||
|
|
export APP_ROOT
|
|||
|
|
|
|||
|
|
grpcPort=9000
|
|||
|
|
httpPort=8000
|
|||
|
|
perfPort=2000
|
|||
|
|
portOffset=0
|
|||
|
|
|
|||
|
|
getApp(){
|
|||
|
|
declare -a dirs
|
|||
|
|
n=0
|
|||
|
|
wd=$PWD
|
|||
|
|
depts=4
|
|||
|
|
while true;do
|
|||
|
|
cur=`basename $PWD`
|
|||
|
|
if [ "$cur" == "" ] || [ "$cur" == "/" ]; then
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
dirs[n]=$cur
|
|||
|
|
if [ "${dirs[n]}" == "go-common" ] && [ "${dirs[n-1]}" == "app" ]; then
|
|||
|
|
if [ $n -lt $depts ]; then
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
for((i=n-1;i>=n-depts+1;i--));do
|
|||
|
|
cd "${dirs[i]}"
|
|||
|
|
done
|
|||
|
|
export APP_ID=${dirs[n-depts]}
|
|||
|
|
export APP_ROOT=$PWD/$APP_ID
|
|||
|
|
portOffset=`ls -l|grep ^d|awk '{if($NF=="'$APP_ID'")print FNR}'`
|
|||
|
|
cd $wd
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
let n=n+1
|
|||
|
|
cd ..
|
|||
|
|
done
|
|||
|
|
echo "must be run in go-common app directory" >&2
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getApp
|
|||
|
|
let grpcPort=grpcPort+portOffset
|
|||
|
|
let httpPort=httpPort+portOffset
|
|||
|
|
let perfPort=perfPort+portOffset
|
|||
|
|
export GRPC="tcp://0.0.0.0:"$grpcPort"/?timeout=1s&idle_timeout=60s"
|
|||
|
|
export HTTP="tcp://0.0.0.0:"$httpPort"/?timeout=1s"
|
|||
|
|
export HTTP_PERF="tcp://0.0.0.0:$perfPort"
|
|||
|
|
|
|||
|
|
conf=`find $APP_ROOT/cmd -name "*.toml"`
|
|||
|
|
if [ ! -f "$conf" ]; then
|
|||
|
|
echo "toml file not exist"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
logdir=`sed -n '/^\[log\]/,$p' $conf|grep -m1 'dir *='|awk -F'=' '{print $2}'|cut -d'"' -f2`
|
|||
|
|
if [ -n "$logdir" ] && [ ! -d "$logdir" ];then
|
|||
|
|
mkdir -p "$logdir"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
while getopts t o; do
|
|||
|
|
case "$o" in
|
|||
|
|
t) test=1;;
|
|||
|
|
esac
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
shift $((OPTIND-1))
|
|||
|
|
target=$1
|
|||
|
|
|
|||
|
|
#运行main.go
|
|||
|
|
if [ -z "$test" ]; then
|
|||
|
|
if [ -z "$target" ]; then
|
|||
|
|
target=$APP_ROOT/cmd/main.go
|
|||
|
|
fi
|
|||
|
|
echo "running "$APP_ID" on grpc port:"$grpcPort" and http port:"$httpPort
|
|||
|
|
go run "$target" -conf "$conf"
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
methods=""
|
|||
|
|
files=""
|
|||
|
|
for i in $@;do
|
|||
|
|
if echo $i|grep '^[a-zA-Z0-9_]\+$'>/dev/null; then
|
|||
|
|
methods=$methods$i" "
|
|||
|
|
else
|
|||
|
|
files=$files$i" "
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
if [ -n "$methods" ]; then
|
|||
|
|
for m in $methods; do
|
|||
|
|
go test -v -run $m -conf "$conf"
|
|||
|
|
done
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [ -n "$files" ];then
|
|||
|
|
for f in $files; do
|
|||
|
|
base=`echo $f|sed 's/_test\.go//'`
|
|||
|
|
if [ "$base" != "$f" ] && ! echo ' '$files' '|grep ' '$base'\.go '>/dev/null; then
|
|||
|
|
files=$files$base".go "
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
go test -v $files -conf "$conf"
|
|||
|
|
fi
|