Rename precommand and postcommand and ensure that hishtory doesn't stomp any existing PROMPT_COMMAND

This commit is contained in:
David Dworken 2022-09-27 21:10:45 -07:00
parent 23d85c81e5
commit bf66f9f4fe
2 changed files with 11 additions and 10 deletions

View File

@ -1,7 +1,8 @@
# This script should be sourced inside of .bashrc to integrate bash with hishtory
# This is the same as config.sh, except it doesn't run the save process in the background. This is crucial to making tests reproducible.
# Implementation of PreCommand and PostCommand based on https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/
function PreCommand() {
# Implementation of running before/after every command based on https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/
function __hishtory_precommand() {
if [ -z "$HISHTORY_AT_PROMPT" ]; then
return
fi
@ -10,10 +11,10 @@ function PreCommand() {
# Run before every command
HISHTORY_START_TIME=`date +%s`
}
trap "PreCommand" DEBUG
trap "__hishtory_precommand" DEBUG
HISHTORY_FIRST_PROMPT=1
function PostCommand() {
function __hishtory_postcommand() {
EXIT_CODE=$?
HISHTORY_AT_PROMPT=1
@ -25,4 +26,4 @@ function PostCommand() {
# Run after every prompt
(hishtory saveHistoryEntry bash $EXIT_CODE "`history 1`" $HISHTORY_START_TIME &)
}
PROMPT_COMMAND="PostCommand"
PROMPT_COMMAND="__hishtory_postcommand; $PROMPT_COMMAND"

View File

@ -1,8 +1,8 @@
# This script should be sourced inside of .bashrc to integrate bash with hishtory
# This is the same as config.sh, except it doesn't run the save process in the background. This is crucial to making tests reproducible.
# Implementation of PreCommand and PostCommand based on https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/
function PreCommand() {
# Implementation of running before/after every command based on https://jichu4n.com/posts/debug-trap-and-prompt_command-in-bash/
function __hishtory_precommand() {
if [ -z "$HISHTORY_AT_PROMPT" ]; then
return
fi
@ -11,10 +11,10 @@ function PreCommand() {
# Run before every command
HISHTORY_START_TIME=`date +%s`
}
trap "PreCommand" DEBUG
trap "__hishtory_precommand" DEBUG
HISHTORY_FIRST_PROMPT=1
function PostCommand() {
function __hishtory_postcommand() {
EXIT_CODE=$?
HISHTORY_AT_PROMPT=1
@ -26,4 +26,4 @@ function PostCommand() {
# Run after every prompt
hishtory saveHistoryEntry bash $EXIT_CODE "`history 1`" $HISHTORY_START_TIME
}
PROMPT_COMMAND="PostCommand"
PROMPT_COMMAND="__hishtory_postcommand; $PROMPT_COMMAND"