Skip to content

Commit 8365963

Browse files
committed
Keep helper methods in util
1 parent 52475ab commit 8365963

File tree

3 files changed

+80
-95
lines changed

3 files changed

+80
-95
lines changed

tmuxp/cli.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from libtmux.exc import TmuxCommandNotFound
2020
from libtmux.server import Server
2121

22-
from . import config, exc, log, shell, util
22+
from . import config, exc, log, util
2323
from .__about__ import __version__
2424
from ._compat import string_types
2525
from .workspacebuilder import WorkspaceBuilder, freeze
@@ -682,19 +682,19 @@ def command_shell(session_name, window_name, socket_name, socket_path, command):
682682
"""
683683
server = Server(socket_name=socket_name, socket_path=socket_path)
684684

685-
shell.raise_if_tmux_not_running(server=server)
685+
util.raise_if_tmux_not_running(server=server)
686686

687-
current_pane = shell.get_current_pane(server=server)
687+
current_pane = util.get_current_pane(server=server)
688688

689-
session = shell.get_session(
689+
session = util.get_session(
690690
server=server, session_name=session_name, current_pane=current_pane
691691
)
692692

693-
window = shell.get_window(
693+
window = util.get_window(
694694
session=session, window_name=window_name, current_pane=current_pane
695695
)
696696

697-
pane = shell.get_pane(window=window, current_pane=current_pane) # NOQA: F841
697+
pane = util.get_pane(window=window, current_pane=current_pane) # NOQA: F841
698698

699699
if command is not None:
700700
exec(command)
@@ -734,19 +734,19 @@ def command_shell_plus(
734734
"""
735735
server = Server(socket_name=socket_name, socket_path=socket_path)
736736

737-
shell.raise_if_tmux_not_running(server=server)
737+
util.raise_if_tmux_not_running(server=server)
738738

739-
current_pane = shell.get_current_pane(server=server)
739+
current_pane = util.get_current_pane(server=server)
740740

741-
session = shell.get_session(
741+
session = util.get_session(
742742
server=server, session_name=session_name, current_pane=current_pane
743743
)
744744

745-
window = shell.get_window(
745+
window = util.get_window(
746746
session=session, window_name=window_name, current_pane=current_pane
747747
)
748748

749-
pane = shell.get_pane(window=window, current_pane=current_pane) # NOQA: F841
749+
pane = util.get_pane(window=window, current_pane=current_pane) # NOQA: F841
750750

751751
if command is not None:
752752
exec(command)

tmuxp/shell.py

Lines changed: 0 additions & 84 deletions
This file was deleted.

tmuxp/util.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import subprocess
1414
import sys
1515

16+
from libtmux.exc import LibTmuxException
17+
1618
from . import exc
1719
from ._compat import console_to_str
1820

@@ -74,3 +76,70 @@ def oh_my_zsh_auto_title():
7476
'Then create a new shell or type:\n\n'
7577
'\t$ source ~/.zshrc'
7678
)
79+
80+
81+
def raise_if_tmux_not_running(server):
82+
"""Raise exception if not running. More descriptive error if no server found."""
83+
try:
84+
server.sessions
85+
except LibTmuxException as e:
86+
if 'No such file or directory' in str(e):
87+
raise LibTmuxException(
88+
'no tmux session found. Start a tmux session and try again. \n'
89+
'Original error: ' + str(e)
90+
)
91+
else:
92+
raise e
93+
94+
95+
def get_current_pane(server):
96+
"""Return Pane if one found in env"""
97+
if os.getenv('TMUX_PANE') is not None:
98+
try:
99+
return [
100+
p
101+
for p in server._list_panes()
102+
if p.get('pane_id') == os.getenv('TMUX_PANE')
103+
][0]
104+
except IndexError:
105+
pass
106+
107+
108+
def get_session(server, session_name=None, current_pane=None):
109+
if session_name:
110+
session = server.find_where({'session_name': session_name})
111+
elif current_pane is not None:
112+
session = server.find_where({'session_id': current_pane['session_id']})
113+
else:
114+
session = server.list_sessions()[0]
115+
116+
if not session:
117+
raise exc.TmuxpException('Session not found: %s' % session_name)
118+
119+
return session
120+
121+
122+
def get_window(session, window_name=None, current_pane=None):
123+
if window_name:
124+
window = session.find_where({'window_name': window_name})
125+
if not window:
126+
raise exc.TmuxpException('Window not found: %s' % window_name)
127+
elif current_pane is not None:
128+
window = session.find_where({'window_id': current_pane['window_id']})
129+
else:
130+
window = session.list_windows()[0]
131+
132+
return window
133+
134+
135+
def get_pane(window, current_pane=None):
136+
try:
137+
if current_pane is not None:
138+
pane = window.find_where({'pane_id': current_pane['pane_id']}) # NOQA: F841
139+
else:
140+
pane = window.attached_pane # NOQA: F841
141+
except exc.TmuxpException as e:
142+
print(e)
143+
return
144+
145+
return pane

0 commit comments

Comments
 (0)