@@ -137,7 +137,6 @@ def build_workspace(config_file, args):
137137 return
138138
139139
140-
141140def subcommand_load (args ):
142141 if args .list_configs :
143142 startup (config_dir )
@@ -177,42 +176,44 @@ def subcommand_load(args):
177176 build_workspace (file_user , args )
178177 else :
179178 logger .error ('%s not found.' % configfile )
180- else :
181- parser .print_help ()
182179
183180
184181def 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
188187
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
193194
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.' )
196202
197- def subcommand_kill_session (args ):
198- #print('kill session')
199- #print(args)
200- #print(type(args.session_name))
201- #print(args.session_name)
202203
204+ def subcommand_kill_session (args ):
203205 commands = []
204206 ctext = args .session_name [0 ]
205207
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 ]
213210
214- print (' \n ' .join (commands ))
211+ if (len (sessions ) == 1 ):
212+ proc = sessions [0 ].kill_session ()
213+ if proc .stderr :
214+ print (proc .stderr )
215215
216+ print (proc .stdout )
216217
217218
218219def cli_parser ():
@@ -225,8 +226,8 @@ def cli_parser():
225226
226227 parser = argparse .ArgumentParser ()
227228 subparsers = parser .add_subparsers (title = 'subcommands' ,
228- description = 'valid subcommands' ,
229- help = 'additional help' )
229+ description = 'valid subcommands' ,
230+ help = 'additional help' )
230231
231232 kill_session = subparsers .add_parser ('kill-session' )
232233 kill_session .set_defaults (callback = subcommand_kill_session )
@@ -238,10 +239,16 @@ def cli_parser():
238239 default = None ,
239240 )
240241
241-
242242 attach_session = subparsers .add_parser ('attach-session' )
243243 attach_session .set_defaults (callback = subcommand_attach_session )
244244
245+ attach_session .add_argument (
246+ dest = 'session_name' ,
247+ nargs = '*' ,
248+ type = str ,
249+ default = None ,
250+ )
251+
245252 load = subparsers .add_parser ('load' )
246253
247254 load .add_argument (
@@ -265,7 +272,6 @@ def cli_parser():
265272 )
266273 load .set_defaults (callback = subcommand_load )
267274
268-
269275 parser .add_argument ('--log-level' , dest = 'log_level' , default = 'INFO' ,
270276 metavar = 'log-level' ,
271277 help = 'Log level e.g. INFO, DEBUG, ERROR' )
@@ -280,9 +286,9 @@ def cli_parser():
280286 '-v' , '--version' , dest = 'version' , action = 'store_true' ,
281287 help = 'Prints the tmuxp version' )
282288
283-
284289 return parser
285290
291+
286292def main ():
287293
288294 parser = cli_parser ()
@@ -298,9 +304,9 @@ def main():
298304
299305 if args .callback is subcommand_load :
300306 subcommand_load (args )
301- if args .callback is subcommand_attach_session :
307+ elif args .callback is subcommand_attach_session :
302308 subcommand_attach_session (args )
303- if args .callback is subcommand_kill_session :
309+ elif args .callback is subcommand_kill_session :
304310 subcommand_kill_session (args )
305311 else :
306312 if args .version :
@@ -309,7 +315,6 @@ def main():
309315 parser .print_help ()
310316
311317
312-
313318def complete (cline , cpoint ):
314319
315320 parser = argparse .ArgumentParser ()
@@ -353,20 +358,21 @@ def session_complete(command, commands, ctext):
353358 sessions = [s .get ('session_name' ) for s in t ._sessions ]
354359 commands .extend ([c for c in sessions if ctext_subargs in c ])
355360
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)]
358363
359364 def config_complete (command , commands , ctext ):
360365 if ctext .startswith (command + ' ' ):
361366 commands [:] = []
362367 ctext_subargs = ctext .replace (command + ' ' , '' )
363368 configs = []
364369 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)
368374 configs += ['./' + c for c in config .in_dir (cwd_dir )]
369- #configs += config.in_dir(cwd_dir)
375+ # configs += config.in_dir(cwd_dir)
370376 commands += [c for c in configs if c .startswith (ctext_subargs )]
371377
372378 session_complete ('attach-session' , commands , ctext )
0 commit comments