##################################################################### DEPENDENCIES+=(yq) ##################################################################### REMOTE__GET_CONNECTION_STRING() { local REMOTE_NAME="$1" [ $(REMOTE__QUERY_CONNECTION .sessions.$REMOTE_NAME.host) ] \ || ERROR "no such connection $REMOTE_NAME exists" \ || return 1 local CONNECTION_HOST=$(REMOTE__QUERY_CONNECTION .sessions.$REMOTE_NAME.host) [ $CONNECTION_HOST ] \ || ERROR "connection $REMOTE_NAME is misconfigured; missing 'host' field" \ || return 1 local CONNECTION_USER=$(REMOTE__QUERY_CONNECTION .sessions.$REMOTE_NAME.user) [ $CONNECTION_USER ] || CONNECTION_USER=$(REMOTE__QUERY_CONNECTION .default.user) [ $CONNECTION_USER ] \ && CONNECTION_STRING="${CONNECTION_USER}@${CONNECTION_HOST}" \ || CONNECTION_STRING="$CONNECTION_HOST" \ ; echo $CONNECTION_STRING } REMOTE__GET_SSH_ARGS() { local REMOTE_NAME local TYPE=ssh local USE_TTY=true while [[ $# -gt 0 ]] do case $1 in -t | --type ) TYPE=$2; shift 1 ;; --use-tty ) USE_TTY=$2; shift 1 ;; --no-tty ) USE_TTY=false ;; * ) [ $REMOTE_NAME ] && { ERROR "too many args :c"; return 1; } REMOTE_NAME=$1 ;; esac shift 1 done local ARGS=() [ $REMOTE_NAME ] || { echo "${ARGS[@]}" return 0 } local PORT=$(REMOTE__QUERY_CONNECTION .sessions.$REMOTE_NAME.port) [ $PORT ] && { case $TYPE in ssh | xserver | tmux ) ARGS+=(-p $PORT) ;; scp ) ARGS+=(-P $PORT) ;; # not really in use, just a sample * ) WARNING " port is specified, but I'm not sure whether to use '-p' or '-P' if this command fails, try adding your --type to the appropriate list in '$SCWRYPTS_ROOT__remote/lib/config.module.zsh' " ARGS+=(-p $PORT) ;; esac } ARGS+=($(REMOTE__QUERY_CONNECTION .session.$REMOTE_NAME.$TYPE.args)) [[ $USE_TTY =~ true ]] && ARGS+=(-t) echo "${ARGS[@]}" } ##################################################################### REMOTE__QUERY_CONNECTION() { YQ -oy -r $@ "$REMOTE_CONNECTIONS_FILE" \ | grep -v ^null$ } REMOTE__QUERY_CONNECTION_WITH_FALLBACK() { while [[ $# -gt 0 ]] && [ ! $QUERY_RESULT ] do case $1 in .* ) QUERY_RESULT=$(REMOTE__QUERY_CONNECTION $1) ;; * ) QUERY_RESULT="$1" ;; # allows raw default value esac shift 1 done echo $QUERY_RESULT }