mirror of
https://github.com/theniceboy/.config.git
synced 2026-05-02 03:21:51 +08:00
agent tracker + tmux update
This commit is contained in:
parent
cd9c92b1c2
commit
5064629d61
68 changed files with 15041 additions and 3483 deletions
|
|
@ -111,35 +111,12 @@ _op_run() {
|
|||
fi
|
||||
fi
|
||||
|
||||
local explicit_session=""
|
||||
local i
|
||||
for (( i=1; i<=${#opencode_cmd[@]}; i++ )); do
|
||||
case "${opencode_cmd[$i]}" in
|
||||
-s|--session) explicit_session="${opencode_cmd[$((i+1))]}"; break ;;
|
||||
-s=*|--session=*) explicit_session="${opencode_cmd[$i]#*=}"; break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
OPENCODE_CONFIG_DIR="$tmp_home" \
|
||||
OP_TRACKER_NOTIFY="${OP_TRACKER_NOTIFY:-0}" \
|
||||
RIPGREP_CONFIG_PATH="${RIPGREP_CONFIG_PATH:-$HOME/.ripgreprc}" \
|
||||
"${opencode_cmd[@]}"
|
||||
local exit_code=$?
|
||||
|
||||
local session_to_save=""
|
||||
if [ -n "$explicit_session" ]; then
|
||||
session_to_save="$explicit_session"
|
||||
else
|
||||
session_to_save=$(OPENCODE_CONFIG_DIR="$tmp_home" opencode session list 2>/dev/null | awk 'NR==3{print $1}')
|
||||
fi
|
||||
|
||||
if [ -n "$session_to_save" ] && [ -n "$TMUX" ]; then
|
||||
local win_key
|
||||
win_key=$(tmux display-message -p '#{session_name}:#{window_name}')
|
||||
local state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/op"
|
||||
mkdir -p "$state_dir"
|
||||
printf '%s\n%s\n' "$session_to_save" "$tag" > "$state_dir/window_${win_key//[^a-zA-Z0-9_]/_}"
|
||||
fi
|
||||
|
||||
trap - EXIT INT TERM
|
||||
eval "$cleanup_cmd"
|
||||
return $exit_code
|
||||
|
|
|
|||
|
|
@ -13,5 +13,5 @@ op() {
|
|||
source "$common" || return 1
|
||||
fi
|
||||
|
||||
_op_run op "$@"
|
||||
OP_TRACKER_NOTIFY=1 _op_run op "$@"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,24 +4,36 @@ opr() {
|
|||
return 1
|
||||
fi
|
||||
|
||||
local win_key
|
||||
win_key=$(tmux display-message -p '#{session_name}:#{window_name}')
|
||||
local state_file="${XDG_STATE_HOME:-$HOME/.local/state}/op/window_${win_key//[^a-zA-Z0-9_]/_}"
|
||||
|
||||
if [ ! -f "$state_file" ]; then
|
||||
print -u2 "opr: no previous session for this tmux window"
|
||||
local pane_target="${TMUX_PANE:-}"
|
||||
if [ -z "$pane_target" ]; then
|
||||
pane_target=$(tmux display-message -p '#{pane_id}')
|
||||
fi
|
||||
if [ -z "$pane_target" ]; then
|
||||
print -u2 "opr: unable to determine tmux pane id"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local session_id tag
|
||||
{ read -r session_id; read -r tag; } < "$state_file"
|
||||
local pane_locator
|
||||
pane_locator=$(tmux display-message -p -t "$pane_target" '#{session_name}:#{window_index}.#{pane_index}')
|
||||
if [ -z "$pane_locator" ]; then
|
||||
print -u2 "opr: unable to determine tmux pane locator"
|
||||
return 1
|
||||
fi
|
||||
local state_file="${XDG_STATE_HOME:-$HOME/.local/state}/op/loc_${pane_locator//[^a-zA-Z0-9_]/_}"
|
||||
|
||||
if [ ! -f "$state_file" ]; then
|
||||
print -u2 "opr: no previous session for this tmux pane locator"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local session_id
|
||||
IFS= read -r session_id < "$state_file"
|
||||
|
||||
if [ -z "$session_id" ]; then
|
||||
print -u2 "opr: no previous session to resume"
|
||||
return 1
|
||||
fi
|
||||
|
||||
tag="${tag:-op}"
|
||||
print -u2 "opr: resuming session $session_id"
|
||||
|
||||
if ! typeset -f _op_run >/dev/null; then
|
||||
|
|
@ -38,5 +50,5 @@ opr() {
|
|||
source "$common" || return 1
|
||||
fi
|
||||
|
||||
_op_run "$tag" --session "$session_id" "$@"
|
||||
_op_run op --session "$session_id" "$@"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue