@@ -137,7 +137,6 @@ def build_workspace(config_file, args):
137
137
return
138
138
139
139
140
-
141
140
def subcommand_load (args ):
142
141
if args .list_configs :
143
142
startup (config_dir )
@@ -177,42 +176,44 @@ def subcommand_load(args):
177
176
build_workspace (file_user , args )
178
177
else :
179
178
logger .error ('%s not found.' % configfile )
180
- else :
181
- parser .print_help ()
182
179
183
180
184
181
def subcommand_attach_session (args ):
185
- #print('attac session')
186
- for session_name in args .session_name :
187
- print (session_name )
182
+ commands = []
183
+ try :
184
+ ctext = args .session_name [0 ]
185
+ except IndexError as e :
186
+ return
188
187
189
- def session_complete (command , commands , ctext ):
190
- if ctext .startswith (command + ' ' ):
191
- commands [:] = []
192
- ctext_attach = ctext .replace (command + ' ' , '' )
188
+ t = Server ()
189
+ try :
190
+ session = [s for s in t .sessions if s .get ('session_name' ) == ctext ][0 ]
191
+ except IndexError as e :
192
+ print ('Session not found.' )
193
+ return
193
194
194
- sessions = [s .get ('session_name' ) for s in t ._sessions ]
195
- commands .extend ([c for c in sessions if ctext_attach in c ])
195
+ if 'TMUX' in os .environ :
196
+ del os .environ ['TMUX' ]
197
+ session .switch_client ()
198
+ print ('Inside tmux client, switching client.' )
199
+ else :
200
+ session .attach_session ()
201
+ print ('Attaching client.' )
196
202
197
- def subcommand_kill_session (args ):
198
- #print('kill session')
199
- #print(args)
200
- #print(type(args.session_name))
201
- #print(args.session_name)
202
203
204
+ def subcommand_kill_session (args ):
203
205
commands = []
204
206
ctext = args .session_name [0 ]
205
207
206
- def session_complete (command , commands , ctext ):
207
- if ctext .startswith (command + ' ' ):
208
- commands [:] = []
209
- ctext_attach = ctext .replace (command + ' ' , '' )
210
-
211
- sessions = [s .get ('session_name' ) for s in t ._sessions ]
212
- commands .extend ([c for c in sessions if ctext_attach in c ])
208
+ t = Server ()
209
+ sessions = [s for s in t .sessions if s .get ('session_name' ) == ctext ]
213
210
214
- print (' \n ' .join (commands ))
211
+ if (len (sessions ) == 1 ):
212
+ proc = sessions [0 ].kill_session ()
213
+ if proc .stderr :
214
+ print (proc .stderr )
215
215
216
+ print (proc .stdout )
216
217
217
218
218
219
def cli_parser ():
@@ -225,8 +226,8 @@ def cli_parser():
225
226
226
227
parser = argparse .ArgumentParser ()
227
228
subparsers = parser .add_subparsers (title = 'subcommands' ,
228
- description = 'valid subcommands' ,
229
- help = 'additional help' )
229
+ description = 'valid subcommands' ,
230
+ help = 'additional help' )
230
231
231
232
kill_session = subparsers .add_parser ('kill-session' )
232
233
kill_session .set_defaults (callback = subcommand_kill_session )
@@ -238,10 +239,16 @@ def cli_parser():
238
239
default = None ,
239
240
)
240
241
241
-
242
242
attach_session = subparsers .add_parser ('attach-session' )
243
243
attach_session .set_defaults (callback = subcommand_attach_session )
244
244
245
+ attach_session .add_argument (
246
+ dest = 'session_name' ,
247
+ nargs = '*' ,
248
+ type = str ,
249
+ default = None ,
250
+ )
251
+
245
252
load = subparsers .add_parser ('load' )
246
253
247
254
load .add_argument (
@@ -265,7 +272,6 @@ def cli_parser():
265
272
)
266
273
load .set_defaults (callback = subcommand_load )
267
274
268
-
269
275
parser .add_argument ('--log-level' , dest = 'log_level' , default = 'INFO' ,
270
276
metavar = 'log-level' ,
271
277
help = 'Log level e.g. INFO, DEBUG, ERROR' )
@@ -280,9 +286,9 @@ def cli_parser():
280
286
'-v' , '--version' , dest = 'version' , action = 'store_true' ,
281
287
help = 'Prints the tmuxp version' )
282
288
283
-
284
289
return parser
285
290
291
+
286
292
def main ():
287
293
288
294
parser = cli_parser ()
@@ -298,9 +304,9 @@ def main():
298
304
299
305
if args .callback is subcommand_load :
300
306
subcommand_load (args )
301
- if args .callback is subcommand_attach_session :
307
+ elif args .callback is subcommand_attach_session :
302
308
subcommand_attach_session (args )
303
- if args .callback is subcommand_kill_session :
309
+ elif args .callback is subcommand_kill_session :
304
310
subcommand_kill_session (args )
305
311
else :
306
312
if args .version :
@@ -309,7 +315,6 @@ def main():
309
315
parser .print_help ()
310
316
311
317
312
-
313
318
def complete (cline , cpoint ):
314
319
315
320
parser = argparse .ArgumentParser ()
@@ -353,20 +358,21 @@ def session_complete(command, commands, ctext):
353
358
sessions = [s .get ('session_name' ) for s in t ._sessions ]
354
359
commands .extend ([c for c in sessions if ctext_subargs in c ])
355
360
356
- #commands = [c for c in commands if ctext_subcommand_args in c]
357
- #commands = [c for c in commands if c.startswith(ctext_subargs)]
361
+ # commands = [c for c in commands if ctext_subcommand_args in c]
362
+ # commands = [c for c in commands if c.startswith(ctext_subargs)]
358
363
359
364
def config_complete (command , commands , ctext ):
360
365
if ctext .startswith (command + ' ' ):
361
366
commands [:] = []
362
367
ctext_subargs = ctext .replace (command + ' ' , '' )
363
368
configs = []
364
369
configs += ['./' + c for c in config .in_cwd ()]
365
- #configs += config.in_cwd()
366
- configs += [os .path .join (config_dir , c ) for c in config .in_dir (config_dir )]
367
- #configs += config.in_dir(config_dir)
370
+ # configs += config.in_cwd()
371
+ configs += [os .path .join (config_dir , c )
372
+ for c in config .in_dir (config_dir )]
373
+ # configs += config.in_dir(config_dir)
368
374
configs += ['./' + c for c in config .in_dir (cwd_dir )]
369
- #configs += config.in_dir(cwd_dir)
375
+ # configs += config.in_dir(cwd_dir)
370
376
commands += [c for c in configs if c .startswith (ctext_subargs )]
371
377
372
378
session_complete ('attach-session' , commands , ctext )
0 commit comments