#!/usr/bin/env python import sys from mygetopt import my_getopt import jackctl import readline argv = sys.argv[1:] def server_parse_ags( srv, argv ): shortopts = "" longopts = [] shortmap = {} driver = None for param in srv.params: p = srv.params[param] shortopts += p.id if p.param_type != 5: shortopts += ":" longopts.append (p.name + "=") else: longopts.append (p.name) shortmap[p.id] = p while not driver: opts, argv = my_getopt( argv, shortopts+"d:" ) if not opts: break for opt,optarg in opts: if opt == "-d": driver = srv.drivers[optarg] elif opt.startswith("--"): pass elif opt.startswith("-"): p = shortmap[opt[1]] if p.param_type == 5: p.value = True else: p.value = optarg return driver, argv def driver_parse_args( drv, argv ): shortopts = "" longopts = [] shortmap = {} for param in drv.params: p = drv.params[param] shortopts += p.id if p.param_type != 5: shortopts += ":" longopts.append (p.name + "=") else: longopts.append (p.name) shortmap[p.id] = p while True: opts, argv = my_getopt( argv, shortopts+"d:" ) if not opts: break for opt,optarg in opts: if opt.startswith("--"): pass elif opt.startswith("-"): p = shortmap[opt[1]] if p.param_type == 5: p.value = True else: p.value = optarg srv = jackctl.Server() drv, argv = server_parse_ags( srv, argv ) driver_parse_args( drv, argv ) #for p in srv.params.values(): # print p.name, "-> ", p.value # #print "----------------" #print "driver ", drv.name # #for p in drv.params.values(): # print p.name, "-> ", p.value srv.start( drv ) quit = False while not quit: try: cmd = raw_input("jack> ") except EOFError: break cmdv = cmd.split() if len(cmdv) == 0: continue if cmdv[0] == "quit": quit = True elif cmdv[0] == "switch": if len(cmdv) > 1: drv = srv.drivers[cmdv[1]] driver_parse_args( drv, cmdv[2:] ) srv.switch_master( drv ) print "\nshutting down" srv.stop()