#!/usr/bin/env bash # TODO Do not dupplicate trimmed.bash CACHE_DIR="${XDG_CACHE_DIR:-$HOME/.cache}/bsh" FOLDER_NAME="geoffrey" mkdir -p "$CACHE_DIR" if [ ! -f "${CACHE_DIR}/cmd" ] then # Preparation WORK="${CACHE_DIR}/${FOLDER_NAME}" DEST="/tmp/${FOLDER_NAME}" rm -rf "$WORK" # DEBUG mkdir "$WORK" # Copying files grep -o '^[^#]*' ~/.config/shell/trimmed.bash > "${WORK}/.bashrc" grep -o '^[^#]*' ~/.config/inputrc > "${WORK}/.inputrc" grep -o '^[^"]*' ~/.config/vim/vimconfig.vim > "${WORK}/.vimrc" #mkdir -p "${WORK}/terminfo/${TERM:0:1}" #if [ -f "/usr/share/terminfo/${TERM:0:1}/${TERM}" ] #then # cp "/usr/share/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}" #elif [ -f "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" ] #then # cp "$HOME/.config/terminfo/${TERM:0:1}/${TERM}" "${WORK}/terminfo/${TERM:0:1}/${TERM}" #fi # Extra configuration echo "alias s='sudo -s -E bash --rcfile ${DEST}/.bashrc'" >> "${WORK}/.bashrc" echo "export VIMINIT='source ${DEST}/.vimrc'" >> "${WORK}/.bashrc" #echo "export TERMINFO=${DEST}/terminfo" >> "${WORK}/.bashrc" echo "export INPUTRC=${DEST}/.inputrc" >> "${WORK}/.bashrc" # TODO Maybe we should just set HOME thereā€¦ # Crafting command b64="$(cd "$CACHE_DIR"; tar czf - "$FOLDER_NAME" | base64 -w 0)" echo "echo '$b64' | base64 -d | tar xzf - -C /tmp" > "${CACHE_DIR}/cmd" echo "bash --rcfile ${DEST}/.bashrc" >> "${CACHE_DIR}/cmd" echo "rm -rf ${DEST}" >> "${CACHE_DIR}/cmd" # TODO Do not remove unless last one connected # Cleanup # rm -rf "$WORK" fi ssh -t "$@" "$(cat "${CACHE_DIR}/cmd")"