@@ -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