4
4
5
5
import typing as t
6
6
7
+ if t .TYPE_CHECKING :
8
+ from tmuxp ._internal .types import WindowConfig , WorkspaceConfig
7
9
8
- def import_tmuxinator (workspace_dict : dict [str , t .Any ]) -> dict [str , t .Any ]:
10
+
11
+ def import_tmuxinator (workspace_dict : dict [str , t .Any ]) -> WorkspaceConfig :
9
12
"""Return tmuxp workspace from a `tmuxinator`_ yaml workspace.
10
13
11
14
.. _tmuxinator: https://github.com/aziz/tmuxinator
@@ -18,8 +21,9 @@ def import_tmuxinator(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
18
21
Returns
19
22
-------
20
23
dict
24
+ A dictionary conforming to WorkspaceConfig structure.
21
25
"""
22
- tmuxp_workspace : dict [ str , t . Any ] = {}
26
+ tmuxp_workspace : WorkspaceConfig = {"windows" : []} # type: ignore[typeddict-item]
23
27
24
28
if "project_name" in workspace_dict :
25
29
tmuxp_workspace ["session_name" ] = workspace_dict .pop ("project_name" )
@@ -51,7 +55,6 @@ def import_tmuxinator(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
51
55
if "socket_name" in workspace_dict :
52
56
tmuxp_workspace ["socket_name" ] = workspace_dict ["socket_name" ]
53
57
54
- tmuxp_workspace ["windows" ] = []
55
58
56
59
if "tabs" in workspace_dict :
57
60
workspace_dict ["windows" ] = workspace_dict .pop ("tabs" )
@@ -76,33 +79,33 @@ def import_tmuxinator(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
76
79
"rbenv shell {}" .format (workspace_dict ["rbenv" ]),
77
80
)
78
81
79
- for window_dict in workspace_dict ["windows" ]:
80
- for k , v in window_dict .items ():
81
- window_dict = {"window_name" : k }
82
+ for window_item in workspace_dict ["windows" ]:
83
+ for k , v in window_item .items ():
84
+ new_window : WindowConfig = {"window_name" : k }
82
85
83
86
if isinstance (v , str ) or v is None :
84
- window_dict ["panes" ] = [v ]
85
- tmuxp_workspace ["windows" ].append (window_dict )
87
+ new_window ["panes" ] = [v ]
88
+ tmuxp_workspace ["windows" ].append (new_window )
86
89
continue
87
90
if isinstance (v , list ):
88
- window_dict ["panes" ] = v
89
- tmuxp_workspace ["windows" ].append (window_dict )
91
+ new_window ["panes" ] = v
92
+ tmuxp_workspace ["windows" ].append (new_window )
90
93
continue
91
94
92
95
if "pre" in v :
93
- window_dict ["shell_command_before" ] = v ["pre" ]
96
+ new_window ["shell_command_before" ] = v ["pre" ]
94
97
if "panes" in v :
95
- window_dict ["panes" ] = v ["panes" ]
98
+ new_window ["panes" ] = v ["panes" ]
96
99
if "root" in v :
97
- window_dict ["start_directory" ] = v ["root" ]
100
+ new_window ["start_directory" ] = v ["root" ]
98
101
99
102
if "layout" in v :
100
- window_dict ["layout" ] = v ["layout" ]
101
- tmuxp_workspace ["windows" ].append (window_dict )
103
+ new_window ["layout" ] = v ["layout" ]
104
+ tmuxp_workspace ["windows" ].append (new_window )
102
105
return tmuxp_workspace
103
106
104
107
105
- def import_teamocil (workspace_dict : dict [str , t .Any ]) -> dict [ str , t . Any ] :
108
+ def import_teamocil (workspace_dict : dict [str , t .Any ]) -> WorkspaceConfig :
106
109
"""Return tmuxp workspace from a `teamocil`_ yaml workspace.
107
110
108
111
.. _teamocil: https://github.com/remiprev/teamocil
@@ -112,6 +115,11 @@ def import_teamocil(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
112
115
workspace_dict : dict
113
116
python dict for tmuxp workspace
114
117
118
+ Returns
119
+ -------
120
+ dict
121
+ A dictionary conforming to WorkspaceConfig structure.
122
+
115
123
Notes
116
124
-----
117
125
Todos:
@@ -122,7 +130,7 @@ def import_teamocil(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
122
130
- clear
123
131
- cmd_separator
124
132
"""
125
- tmuxp_workspace : dict [ str , t . Any ] = {}
133
+ tmuxp_workspace : WorkspaceConfig = {"windows" : []} # type: ignore[typeddict-item]
126
134
127
135
if "session" in workspace_dict :
128
136
workspace_dict = workspace_dict ["session" ]
@@ -132,21 +140,20 @@ def import_teamocil(workspace_dict: dict[str, t.Any]) -> dict[str, t.Any]:
132
140
if "root" in workspace_dict :
133
141
tmuxp_workspace ["start_directory" ] = workspace_dict .pop ("root" )
134
142
135
- tmuxp_workspace ["windows" ] = []
136
143
137
144
for w in workspace_dict ["windows" ]:
138
- window_dict = {"window_name" : w ["name" ]}
145
+ window_dict : WindowConfig = {"window_name" : w ["name" ]}
139
146
140
147
if "clear" in w :
141
- window_dict ["clear" ] = w ["clear" ]
148
+ # TODO: handle clear attribute
149
+ pass
142
150
143
151
if "filters" in w :
144
152
if "before" in w ["filters" ]:
145
- for _b in w ["filters" ]["before" ]:
146
- window_dict ["shell_command_before" ] = w ["filters" ]["before" ]
153
+ window_dict ["shell_command_before" ] = w ["filters" ]["before" ]
147
154
if "after" in w ["filters" ]:
148
- for _b in w [ "filters" ][ "after" ]:
149
- window_dict [ "shell_command_after" ] = w [ "filters" ][ "after" ]
155
+ # TODO: handle shell_command_after
156
+ pass
150
157
151
158
if "root" in w :
152
159
window_dict ["start_directory" ] = w .pop ("root" )
0 commit comments