@@ -92,6 +92,7 @@ def prompt_bool(name, default=False, yes_choices=None, no_choices=None):
92
92
def prompt_yes_no (name , default = True ):
93
93
return prompt_bool (name , default = default )
94
94
95
+
95
96
def prompt_choices (name , choices , default = None , resolve = ascii_lowercase ,
96
97
no_choice = ('none' ,)):
97
98
"""
@@ -254,12 +255,13 @@ def load_workspace(config_file, args):
254
255
255
256
if 'TMUX' in os .environ :
256
257
del os .environ ['TMUX' ]
257
- os .execl (tmux_bin , 'tmux' , 'switch-client' , '-t' , sconfig [
258
- 'session_name' ])
258
+ os .execl (tmux_bin , 'tmux' , 'switch-client' , '-t' ,
259
+ sconfig [ 'session_name' ])
259
260
260
261
if attach_session :
261
- os .execl (tmux_bin , 'tmux' , 'attach-session' , '-t' , sconfig [
262
- 'session_name' ])
262
+ print (sconfig ['sesson_name' ])
263
+ os .execl (tmux_bin , 'tmux' , 'attach-session' , '-t' ,
264
+ sconfig ['session_name' ])
263
265
return
264
266
265
267
@@ -334,18 +336,60 @@ def command_import_teamocil(args):
334
336
335
337
print (output )
336
338
elif args .config :
337
- configfile = os .path .relpath (args .config )
339
+ configfile = os .path .abspath ( os . path . relpath (args .config ) )
338
340
configparser = kaptan .Kaptan (handler = 'yaml' )
339
- configparser .import_config (configfile )
341
+
342
+ if os .path .exists (configfile ):
343
+ print (configfile )
344
+ configparser .import_config (configfile )
345
+ else :
346
+ sys .exit ('File not found: %s' % configfile )
340
347
341
348
newconfig = config .import_teamocil (configparser .get ())
342
349
343
- newconfig = configparser .import_config (newconfig )
344
- newconfig = configparser .export (
345
- 'yaml' , indent = 2 , default_flow_style = False
346
- )
350
+ config_format = prompt_choices ('Convert to' , choices = [
351
+ 'yaml' , 'json' ], default = 'yaml' )
352
+
353
+ if config_format == 'yaml' :
354
+ newconfig = configparser .export (
355
+ 'yaml' , indent = 2 , default_flow_style = False
356
+ )
357
+ elif config_format == 'json' :
358
+ newconfig = configparser .export ('json' , indent = 2 )
359
+ else :
360
+ sys .exit ('Unknown config format.' )
347
361
348
362
print (newconfig )
363
+ print (
364
+ '---------------------------------------------------------------' )
365
+ print (
366
+ 'Configuration import does its best to convert teamocil files.\n ' )
367
+ if prompt_yes_no (
368
+ 'The new config *WILL* require adjusting afterwards. Save config?'
369
+ ):
370
+ dest = None
371
+ while not dest :
372
+ dest_prompt = prompt ('Save to: ' , os .path .abspath (
373
+ os .path .join (config_dir , 'myimport.%s' % config_format )))
374
+ if os .path .exists (dest_prompt ):
375
+ print ('%s exists. Pick a new filename.' % dest_prompt )
376
+ continue
377
+
378
+ dest = dest_prompt
379
+
380
+ dest = os .path .abspath (os .path .relpath (dest ))
381
+ if prompt_yes_no ('Write to %s?' % dest ):
382
+ buf = open (dest , 'w' )
383
+ buf .write (newconfig )
384
+ buf .close ()
385
+
386
+ print ('Saved to %s.' % dest )
387
+ else :
388
+ print (
389
+ 'tmuxp has examples in JSON and YAML format at <http://tmuxp.readthedocs.org/en/latest/examples.html>\n '
390
+ 'View tmuxp docs at <http://tmuxp.readthedocs.org/>'
391
+ )
392
+ sys .exit ()
349
393
350
394
351
395
def command_import_tmuxinator (args ):
@@ -378,18 +422,60 @@ def command_import_tmuxinator(args):
378
422
print (output )
379
423
380
424
if args .config :
381
- configfile = os .path .relpath (args .config )
425
+ configfile = os .path .abspath ( os . path . relpath (args .config ) )
382
426
configparser = kaptan .Kaptan (handler = 'yaml' )
383
- configparser .import_config (configfile )
427
+
428
+ if os .path .exists (configfile ):
429
+ print (configfile )
430
+ configparser .import_config (configfile )
431
+ else :
432
+ sys .exit ('File not found: %s' % configfile )
384
433
385
434
newconfig = config .import_tmuxinator (configparser .get ())
386
435
387
- newconfig = configparser .import_config (newconfig )
388
- newconfig = configparser .export (
389
- 'yaml' , indent = 2 , default_flow_style = False
390
- )
436
+ config_format = prompt_choices ('Convert to' , choices = [
437
+ 'yaml' , 'json' ], default = 'yaml' )
438
+
439
+ if config_format == 'yaml' :
440
+ newconfig = configparser .export (
441
+ 'yaml' , indent = 2 , default_flow_style = False
442
+ )
443
+ elif config_format == 'json' :
444
+ newconfig = configparser .export ('json' , indent = 2 )
445
+ else :
446
+ sys .exit ('Unknown config format.' )
391
447
392
448
print (newconfig )
449
+ print (
450
+ '---------------------------------------------------------------' )
451
+ print (
452
+ 'Configuration import does its best to convert teamocil files.\n ' )
453
+ if prompt_yes_no (
454
+ 'The new config *WILL* require adjusting afterwards. Save config?'
455
+ ):
456
+ dest = None
457
+ while not dest :
458
+ dest_prompt = prompt ('Save to: ' , os .path .abspath (
459
+ os .path .join (config_dir , 'myimport.%s' % config_format )))
460
+ if os .path .exists (dest_prompt ):
461
+ print ('%s exists. Pick a new filename.' % dest_prompt )
462
+ continue
463
+
464
+ dest = dest_prompt
465
+
466
+ dest = os .path .abspath (os .path .relpath (dest ))
467
+ if prompt_yes_no ('Write to %s?' % dest ):
468
+ buf = open (dest , 'w' )
469
+ buf .write (newconfig )
470
+ buf .close ()
471
+
472
+ print ('Saved to %s.' % dest )
473
+ else :
474
+ print (
475
+ 'tmuxp has examples in JSON and YAML format at <http://tmuxp.readthedocs.org/en/latest/examples.html>\n '
476
+ 'View tmuxp docs at <http://tmuxp.readthedocs.org/>'
477
+ )
478
+ sys .exit ()
393
479
394
480
395
481
def command_convert (args ):
0 commit comments