diff --git a/CHANGELOG.md b/CHANGELOG.md index 58059e7..613bd22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ### master +- saving a new session does not remove the previous one ### v0.0.1, 2014-08-26 - started a project diff --git a/scripts/helpers.sh b/scripts/helpers.sh index 4850db0..0b5f1f2 100644 --- a/scripts/helpers.sh +++ b/scripts/helpers.sh @@ -1,3 +1,7 @@ +# constants +SESSIONS_DIR="$HOME/.tmux/sessions" + +# helper functions get_tmux_option() { local option="$1" local default_value="$2" @@ -33,3 +37,12 @@ display_message() { # restores original 'display-time' value tmux set-option -gq display-time "$saved_display_time" } + +session_path() { + local timestamp="$(date +"%Y-%m-%dT%H:%M:%S")" + echo "${SESSIONS_DIR}/tmux_session_${timestamp}.txt" +} + +last_session_path() { + echo "${SESSIONS_DIR}/last" +} diff --git a/scripts/session_restorer.sh b/scripts/session_restorer.sh index 04e8470..bb594f1 100755 --- a/scripts/session_restorer.sh +++ b/scripts/session_restorer.sh @@ -70,7 +70,7 @@ restore_pane() { restore_all_sessions() { while read line; do restore_pane "$line" - done < $HOME/.tmux/session + done < $(last_session_path) display_message "Restored all Tmux sessions!" } diff --git a/scripts/session_saver.sh b/scripts/session_saver.sh index 639b0d8..9275599 100755 --- a/scripts/session_saver.sh +++ b/scripts/session_saver.sh @@ -22,8 +22,10 @@ dump() { } save_all_sessions() { - mkdir -p $HOME/.tmux - dump > $HOME/.tmux/session + local session_path="$(session_path)" + mkdir -p "$SESSIONS_DIR" + dump > $session_path + ln -fs "$session_path" "$(last_session_path)" display_message "Saved all Tmux sessions!" }