From 7f99a9630c3d4c234d8eee0eb27c00a56f2c16dd Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Fri, 27 Nov 2020 12:36:53 +0000 Subject: [PATCH] bin/tm: handle multiple-matches better --- bin/tm | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/bin/tm b/bin/tm index 72ed72f..8843a93 100755 --- a/bin/tm +++ b/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