From 9f7050aaae3d640d39d14f5f97fbd50d2be07159 Mon Sep 17 00:00:00 2001 From: Bruno Sutic Date: Sat, 20 Sep 2014 23:47:15 +0200 Subject: [PATCH] Use a strategy when fetching pane full command --- CHANGELOG.md | 2 ++ save_command_strategies/default.sh | 24 ++++++++++++++++++++++++ scripts/save.sh | 17 ++++++++++++++--- scripts/variables.sh | 2 ++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100755 save_command_strategies/default.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b09966..0b7d126 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ### master +- plugin now uses strategies when fetching pane full command. Implemented + 'default' strategy. ### v1.3.0, 2014-09-20 - remove dependency on `pgrep` command. Use `ps` for fetching process names. diff --git a/save_command_strategies/default.sh b/save_command_strategies/default.sh new file mode 100755 index 0000000..8544add --- /dev/null +++ b/save_command_strategies/default.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +PANE_PID="$1" + +exit_safely_if_empty_ppid() { + if [ -z "$PANE_PID" ]; then + exit 0 + fi +} + +full_command() { + ps -eo "ppid command" | + sed "s/^ *//" | + grep "^${PANE_PID}" | + cut -d' ' -f2- +} + +main() { + exit_safely_if_empty_ppid + full_command +} +main diff --git a/scripts/save.sh b/scripts/save.sh index 685ba00..a1ac699 100755 --- a/scripts/save.sh +++ b/scripts/save.sh @@ -65,11 +65,22 @@ dump_panes_raw() { tmux list-panes -a -F "$(pane_format)" } +_save_command_strategy_file() { + local save_command_strategy="$(get_tmux_option "$save_command_strategy_option" "default")" + local strategy_file="$CURRENT_DIR/../save_command_strategies/${save_command_strategy}.sh" + local default_strategy_file="$CURRENT_DIR/../save_command_strategies/default.sh" + if [ -e "$strategy_file" ]; then # strategy file exists? + echo "$strategy_file" + else + echo "$default_strategy_file" + fi +} + pane_full_command() { local pane_pid="$1" - ps -eo "ppid command" | - grep "^${pane_pid}" | - cut -d' ' -f2- + local strategy_file="$(_save_command_strategy_file)" + # execute strategy script to get pane full command + $strategy_file "$pane_pid" } # translates pane pid to process command running inside a pane diff --git a/scripts/variables.sh b/scripts/variables.sh index 5945986..52322f1 100644 --- a/scripts/variables.sh +++ b/scripts/variables.sh @@ -23,3 +23,5 @@ restore_processes="" restore_process_strategy_option="@resurrect-strategy-" inline_strategy_token="->" + +save_command_strategy_option="@resurrect-save-command-strategy"