Files
oceanbase/tools/deploy/activate_obd.sh
2023-05-16 08:42:03 +00:00

119 lines
3.2 KiB
Bash

#!/bin/bash
DIR=$(readlink -f "$(dirname ${BASH_SOURCE[0]})/../..")
OB_DO_GLOBAL_CONFIG=~/.ob_do_global
[[ -f $OB_DO_GLOBAL_CONFIG ]] && source $OB_DO_GLOBAL_CONFIG
export DEPLOY_PATH=$DIR/tools/deploy
export OBD_FORCE_UPDATE_PLUGINS=1
if grep 'dep_create.sh' $DIR/build.sh 2>&1 >/dev/null
then
export DEP_PATH=$DIR/deps/3rd
else
export DEP_PATH=$DIR/rpm/.dep_create/var
fi
export OBD_BIN=${_OBD_BIN:-$DEP_PATH/usr/bin/obd}
alias obd="${OBD_BIN}"
export OBD_HOME=${_OBD_HOME:-$DIR/tools/deploy}
export OBD_INSTALL_PRE=${_OBD_INSTALL_PRE:-$DEP_PATH}
export OBD_PORT_GEN=$((100*($(id -u)%500)+10000))
if [ ${_OBD_PROFILE} ]; then
source ${_OBD_PROFILE}
fi
if [ -f $OBD_INSTALL_PRE/etc/profile.d/obd.sh ]
then
source $OBD_INSTALL_PRE/etc/profile.d/obd.sh
fi
if [[ "${OB_DO_NO_GLOBAL_CLUSTER:-0}" == "0" ]]; then
obd_dev=${OBD_HOME_GLOBAL:-~/.obd_dev}
mkdir -p $obd_dev/cluster
mkdir -p $OBD_HOME/.obd
[ ! -d $OBD_HOME/.obd/cluster ] && ln -fs $obd_dev/cluster $OBD_HOME/.obd
fi
if [ -n "$BASH_VERSION" ]; then
complete -F _obd_sh_complete_func ./obd.sh
fi
function _obd_sh_reply_deploy_names() {
if [[ -d $OBD_HOME/.obd/cluster ]]
then
res=$(ls -p $OBD_HOME/.obd/cluster 2>/dev/null | sed "s#/##")
COMPREPLY=( $(compgen -o filenames -W "${res}" -- ${cur}) )
fi
}
function _obd_sh_reply_current_files() {
filename=${cur##*/}
dirname=${cur%*$filename}
res=$(ls -a -p $dirname 2>/dev/null | sed "s#^#$dirname#")
compopt -o nospace
COMPREPLY=( $(compgen -o filenames -W "${res}" -- ${cur}) )
}
function _obd_sh_reply_yaml_files() {
filename=${cur##*/}
dirname=${cur%*$filename}
res=$(ls -a -p $dirname 2>/dev/null | grep -E '(*.yaml|*.yml)' | sed "s#^#$dirname#")
compopt -o nospace
COMPREPLY=( $(compgen -o filenames -W "${res}" -- ${cur}) )
}
function _obd_sh_complete_func
{
local all_cmds
declare -A all_cmds
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
all_cmds["$*"]="prepare deploy redeploy reinstall start stop restart destroy upgrade mysqltest pid ssh less gdb sql mysql oracle edit list sys display create_tenant drop_tenant sysbench tpch tpcc tpcds graph display-trace set-config"
case $prev in
list)
return 0
;;
-p|--path)
_obd_sh_reply_current_files
;;
-c|--config)
_obd_sh_reply_yaml_files
;;
-n|--deploy-name)
_obd_sh_reply_deploy_names
;;
*)
valid_len=$COMP_CWORD
words=( ${COMP_WORDS[@]::valid_len} )
index=valid_len
while (( index >= 1 )); do
target="${words[*]}"
cmd=${all_cmds[$target]}
if [[ "$cmd" != "" ]]
then
if [[ $cmd =~ ^_obd_sh_reply.* ]]
then
$cmd
break
else
if [[ $cmd =~ .*'=' ]]
then
compopt -o nospace
fi
COMPREPLY=( $(compgen -W "${cmd}" -- ${cur}) )
break
fi
fi
index=$(( index - 1))
tmp=${words[*]::index}
[[ "$tmp" != "" ]] && parent_cmd=${all_cmds[$tmp]}
if [[ "$parent_cmd" =~ ^_obd_sh_reply.* || " $parent_cmd " =~ " ${words[index]} " ]]; then
words[index]='*'
else
break
fi
done
;;
esac
}