#!/bin/bash

SCRIPT=$(basename $0)

usage() {
	echo "Usage: $SCRIPT [--x] [--verbose] [su|sudo] [[{user}]@{host}] [[--] command...]"
}

# origin: http://stackoverflow.com/a/34515468
quote_args() {
    local sq="'"
    local dq='"'
    local space=""
    local arg
    for arg; do
        echo -n "$space'${arg//$sq/$sq$dq$sq$dq$sq}'"
        space=" "
    done
}

# Initial setup
SU=''
SUDO=''
X=''
V=''
HOST=''
PORT=''
while [ $# -gt 0 ]; do
	case $1 in
		su)		SU=1; SUDO=;;
		sudo)		SUDO=1; SU=;;
		--x|-x|x)	X=1;;
		--verbose|-v)	V=1;;
		--port|-p)	PORT="$2"; shift;;
		--)		shift; break;;
		-*)		usage; exit 1;;
		@*)		HOST=${1#@};;
		*@*)		HOST=$1;;
		*)		break;;
	esac
	shift
done

[ $# -gt 0 ] || set -- /bin/bash

[ -z "$SU" ] || set -- su -c "cd; $(quote_args "$@")"
[ -z "$SU" ] || set -- sh -c "echo -n 'Changing to root...: '; $(quote_args "$@")"

[ -z "$SUDO" ] || set -- sudo -i -- "$@"

# Pause for a moment if verbose
[ -z "$V" ] || set -- sh -c "$(quote_args "$@"); sleep 4"

[ -z "$HOST" ] || set -- ssh -t${X:+ -X}${V:+ -v}${PORT:+ -p "$PORT"} $HOST "$(quote_args "$@")"

[ -z "$V" ] || echo "$@"
[ -z "$V" ] || sleep 4

if [ $# -gt 0 ]; then
	x-terminal-emulator -e "$@" &
else
	x-terminal-emulator &
fi