Skip to content

Commit 556b9dd

Browse files
committed
refactor(WorkspaceBuilder): Refactor .session
1 parent 056cfd9 commit 556b9dd

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

src/tmuxp/workspace/builder.py

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ class WorkspaceBuilder:
135135
"""
136136

137137
server: "Server"
138-
session: t.Optional["Session"]
138+
_session: t.Optional["Session"]
139+
session_name: str
139140

140141
def __init__(
141142
self,
@@ -171,9 +172,31 @@ def __init__(
171172
self.server = server
172173

173174
self.sconf = sconf
174-
175175
self.plugins = plugins
176176

177+
if self.server is not None and self.session_exists(
178+
session_name=self.sconf["session_name"]
179+
):
180+
try:
181+
# todo libtmux: Add overload for .get() to always be non-null unless
182+
# default added.
183+
session = self.server.sessions.get(
184+
session_name=self.sconf["session_name"]
185+
)
186+
assert session is not None
187+
self._session = session
188+
except ObjectDoesNotExist:
189+
pass
190+
191+
@property
192+
def session(self):
193+
if self._session is None:
194+
raise ObjectDoesNotExist(
195+
"No session object exists for WorkspaceBuilder. "
196+
"Tip: Add session_name in constructor or run WorkspaceBuilder.build()"
197+
)
198+
return self._session
199+
177200
def session_exists(self, session_name: str) -> bool:
178201
assert session_name is not None
179202
assert isinstance(session_name, str)
@@ -213,9 +236,12 @@ def build(self, session: t.Optional[Session] = None, append: bool = False) -> No
213236

214237
if self.server.has_session(self.sconf["session_name"]):
215238
try:
216-
self.session = self.server.sessions.get(
239+
session = self.server.sessions.get(
217240
session_name=self.sconf["session_name"]
218241
)
242+
assert session is not None
243+
assert isinstance(session, Session)
244+
self._session = session
219245

220246
raise TmuxSessionExists(
221247
"Session name %s is already running."
@@ -241,7 +267,7 @@ def build(self, session: t.Optional[Session] = None, append: bool = False) -> No
241267
assert session is not None
242268
assert session.name is not None
243269

244-
self.session: "Session" = session
270+
self._session = session
245271

246272
assert session.server is not None
247273

0 commit comments

Comments
 (0)