[[ -t 0 ]] || return
if [[ "$__MCFLY_LOADED" == "loaded" ]]; then
return 0
fi
__MCFLY_LOADED="loaded"
export HISTFILE="${HISTFILE:-$HOME/.bash_history}"
if [[ ! -r "${HISTFILE}" ]]; then
echo "McFly: ${HISTFILE} does not exist or is not readable. Please fix this or set HISTFILE to something else before using McFly."
return 1
fi
export MCFLY_SESSION_ID=$(dd if=/dev/urandom bs=256 count=1 2> /dev/null | env LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 24)
MCFLY_PATH=${MCFLY_PATH:-$(which mcfly)}
if [ -z "$MCFLY_PATH" ]; then
echo "Cannot find the mcfly binary, please make sure that mcfly is in your path before sourcing mcfly.bash."
return 1
fi
export HISTCONTROL="${HISTCONTROL:-ignorespace}"
shopt -s histappend
function mcfly_prompt_command {
local exit_code=$?
if [[ ! -f "${MCFLY_HISTORY}" ]]; then
export MCFLY_HISTORY=$(mktemp -t mcfly.XXXXXXXX)
tail -n100 "${HISTFILE}" >| ${MCFLY_HISTORY}
fi
history -a ${MCFLY_HISTORY} $MCFLY_PATH add --exit ${exit_code} --append-to-histfile
history -cr ${MCFLY_HISTORY}
return ${exit_code} }
PROMPT_COMMAND="mcfly_prompt_command;$PROMPT_COMMAND"
if [[ $- =~ .*i.* ]]; then
if [[ ${BASH_VERSINFO[0]} -ge 4 ]]; then
bind -x '"\C-r": "echo \#mcfly: ${READLINE_LINE[@]} >> $MCFLY_HISTORY ; READLINE_LINE= ; mcfly search"'
else
if set -o | grep "vi " | grep -q on; then
bind "'\C-r': '\e0i#mcfly: \e\C-m mcfly search\C-m'"
else
bind "'\C-r': '\C-amcfly: \e# mcfly search\C-m'"
fi
fi
fi