bin/tm: handle multiple-matches better
This commit is contained in:
34
bin/tm
34
bin/tm
@@ -1,7 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Configuration
|
||||
DATADIR=$HOME/data/screen
|
||||
|
||||
# Variables
|
||||
#DRY=echo
|
||||
DRY=
|
||||
@@ -58,15 +55,28 @@ fi
|
||||
|
||||
echo Looking for $TARGET
|
||||
|
||||
MATCH=$(tmux ls | grep "$TARGET")
|
||||
if [ "$MATCH" == "" ] ; then
|
||||
# Use the name as what they passed.
|
||||
SESSION_NAME="$TARGET"
|
||||
COMMAND="new -s $SESSION_NAME"
|
||||
else
|
||||
# Pull out the existing session name.
|
||||
SESSION_NAME=$(echo "$MATCH" | sed -e 's/:.*$//')
|
||||
COMMAND="at -t $SESSION_NAME"
|
||||
MATCHCOUNT=$(tmux ls | grep "$TARGET" | wc -l)
|
||||
if [ $MATCHCOUNT -eq 0 ] ; then
|
||||
# Use the name as what they passed.
|
||||
SESSION_NAME="$TARGET"
|
||||
COMMAND="new -s $SESSION_NAME"
|
||||
elif [ $MATCHCOUNT -gt 1 ] ; then
|
||||
found_multiple=1
|
||||
OLD_TARGET=$TARGET
|
||||
TARGET="^$OLD_TARGET:"
|
||||
MATCHCOUNT=$(tmux ls | grep "$TARGET" | wc -l)
|
||||
if [ $MATCHCOUNT -ne 1 ] ; then
|
||||
echo "Confused by session naming; $OLD_TARGET matches too many sessions."
|
||||
$DRY tmux ls | grep $OLD_TARGET
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $MATCHCOUNT -eq 1 ] ; then
|
||||
MATCH=$(tmux ls | grep "$TARGET")
|
||||
# Pull out the existing session name.
|
||||
SESSION_NAME=$(echo "$MATCH" | sed -e 's/:.*$//')
|
||||
COMMAND="at -t $SESSION_NAME"
|
||||
fi
|
||||
|
||||
if [ "$COMMAND" != "" ] ; then
|
||||
|
||||
Reference in New Issue
Block a user