def opts(l=None): """ Option parser. FIXME: this code segment is much too long! """ if not l: l = sys.argv[1:] internal = False else: internal = True try: opts, args = getopt.gnu_getopt( l, "b:B:dpsS:ri:wneom:f:M:cLgGvVD:01PT:I:x:", []) except getopt.GetoptError: usage() for o, a in opts: if o == '-b': setBarRange(a) elif o == '-B': setBarRange(a) gbl.barRange.append("ABS") elif o in ('-d', '-o', '-p', '-s', '-r', '-w', '-n', '-e', '-c'): import MMA.debug # circular dep. problem MMA.debug.cmdLineDebug(o[-1]) elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-L': gbl.printProcessed = True elif o == '-f': import MMA.paths gbl.outfile = a if internal: warning("Output filename overwritten by -f CmdLine option.") MMA.paths.createOutfileName(".mid") elif o == '-i': import MMA.paths if internal: cmdError("-i") MMA.paths.setRC(a) elif o == '-g': if internal: cmdError("-g") gbl.makeGrvDefs = 1 elif o == '-G': if internal: cmdError("-G") gbl.makeGrvDefs = 2 elif o == '-m': try: a = int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print("%s" % gbl.version) if not internal: sys.exit(0) elif o == '-M': global cmdSMF if a in ['0', '1']: cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-T': # set tracks to generate, mute all others gbl.muteTracks = a.upper().split(',') elif o == '-D': if internal: cmdError("-D..") if a == 'xl': gbl.createDocs = 1 elif a == 'xh': gbl.createDocs = 2 elif a == 's': gbl.createDocs = 3 elif a == 'gh': gbl.createDocs = 4 elif a == 'js': gbl.createDocs = 5 elif a == 'bo': gbl.createDocs = 99 elif a == 'k': import MMA.alloc # important! Needs a space before the trailing LF for mma.el print("Base track names: %s \n" % ' '.join([a for a in sorted(MMA.alloc.trkClasses)])) print("Commands: %s BEGIN END DEFAULT\n" % ' '.join([a for a in sorted(MMA.parse.simpleFuncs)])) print("TrackCommands: %s \n" % ' '.join([a for a in sorted(MMA.parse.trackFuncs)])) print("Not complete ... subcommands, comments, chords...") sys.exit(0) else: print("Unknown option: '-D%s'." % a) usage() elif o == '-0': import MMA.sync MMA.sync.synchronize(['START']) elif o == '-1': import MMA.sync MMA.sync.synchronize(['END']) elif o == '-P': gbl.playFile = 1 elif o == '-I': # We use -I for plugin help and overload it to discard # the plugin security. Use -II for security override. # It does mean you can't have plugin called "I", but # you could use "i" and it'll work. import MMA.regplug if a == 'I': MMA.regplug.secOverRide = True # Plugin help. Note we have not loaded any plugins at this # point. pluginHelp() will find the plugin, register it and # call its help function. else: MMA.regplug.pluginHelp(a) sys.exit(0) elif o == '-V': import MMA.file if internal: # can't have a -V in a -V :) cmdError("-V") gbl.playFile = 2 # signal create and play groove if not args: error("-V: option requires Groove Name.") _, tfile = tempfile.mkstemp(prefix="MMA_", suffix=".mma") op = open(tfile, "w") groove = '' cmds = [] chords = "I, vi, ii, V7" count = 4 for g in args: if '=' in g: c = g.split('=') if c[0].upper() == 'CHORDS': chords = c[1] elif c[0].upper() == "COUNT": count = c[1] try: count = int(count) except: error("-V: expecting integer for Count.") else: cmds.append(c) elif groove: error("-V: Only one groove name permitted.") else: groove = g if not groove: error("-V: no groove name specified.") op.write("Groove %s\n" % groove) for g in cmds: op.write("%s %s \n" % (g[0], g[1])) chords = chords.split(',') while len(chords) < count: chords += chords chords = chords[:count] for c in chords: op.write("%s\n" % c) op.close() # we can only have one scratch file, so no fear of overload. # otherwise we might need to explicity delete file here. MMA.exits.files.append(tfile) args = [tfile] # fake the CLI so mma thinks the created file is yours elif o=='-x': # any one of some xtra, seldom used, options import MMA.xtra MMA.xtra.xoption(a, args) else: usage() # unreachable?? if internal: return # a few sanity checks #if MMA.writeMid.splitOutput: # if gbl.playFile: # error("The -P (play) option is not compatible with channel/track splitting.") # if gbl.infile == 1: # error("The '-' (read from stdin) is not compatible with channel/track splitting.") # we have processed all the args. Should just have a filename left if len(args) > 1: usage("Only one input filename is permitted, %s given on command line." % len(args)) if gbl.infile: usage("Input filename already assigned ... should not happen.") if args: gbl.infile = args[0] # if a single '-' is left on the cmd line user want stdin. We set the # the input filename to numeric 1 which can't be entered. if gbl.infile == '-': gbl.infile = 1 if not gbl.outfile: import MMA.debug # circular dep. problem if not(MMA.debug.noOutput): error("Input from STDIN specified. Use -f to set an output filename.")
def opts(l=None): """ Option parser. """ if not l: l = sys.argv[1:] internal = False else: internal = True try: opts, args = getopt.gnu_getopt(l, "b:B:dpsS:ri:wneom:f:M:cLgGvVD:01PT:I:", []) except getopt.GetoptError: usage() for o, a in opts: if o == '-b': setBarRange(a) elif o == '-B': setBarRange(a) gbl.barRange.append("ABS") elif o == '-d': gbl.debug = gbl.Ldebug = 1 elif o == '-o': gbl.showFilenames = gbl.LshowFilenames = 1 elif o == '-p': gbl.pshow = gbl.Lpshow = 1 elif o == '-s': gbl.seqshow = gbl.Lseqshow = 1 elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-r': gbl.showrun = gbl.Lshowrun = 1 elif o == '-w': gbl.noWarn = gbl.LnoWarn = 1 elif o == '-n': gbl.noOutput = gbl.LnoOutput = 1 elif o == '-e': gbl.showExpand = gbl.LshowExpand = 1 elif o == '-c': gbl.chshow = gbl.Lchshow = 1 elif o == '-L': gbl.printProcessed = True elif o == '-f': gbl.outfile = a if internal: warning("Output filename overwritten by -f CmdLine option.") MMA.paths.createOutfileName(".mid") elif o == '-i': if internal: cmdError("-i") MMA.paths.setRC(a) elif o == '-g': if internal: cmdError("-g") gbl.makeGrvDefs = 1 elif o == '-G': if internal: cmdError("-G") gbl.makeGrvDefs = 2 elif o == '-m': try: a = int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print("%s" % gbl.version) if not internal: sys.exit(0) elif o == '-M': global cmdSMF if a in ['0', '1']: cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-T': # set tracks to generate, mute all others gbl.muteTracks = a.upper().split(',') elif o == '-D': if internal: cmdError("-D..") if a == 'xl': gbl.createDocs = 1 elif a == 'xh': gbl.createDocs = 2 elif a == 's': gbl.createDocs = 3 elif a == 'gh': gbl.createDocs = 4 elif a == 'bo': gbl.createDocs = 99 elif a == 'k': # important! Needs a space before the trailing LF for mma.el print("Base track names: %s \n" % ' '.join([a for a in sorted(MMA.alloc.trkClasses)])) print("Commands: %s BEGIN END DEFAULT\n" % ' '.join([a for a in sorted(MMA.parse.simpleFuncs)])) print("TrackCommands: %s \n" % ' '.join([a for a in sorted(MMA.parse.trackFuncs)])) print("Not complete ... subcommands, comments, chords...") sys.exit(0) else: print("Unknown option: '-D%s'." % a) usage() elif o == '-0': gbl.synctick = 1 elif o == '-1': gbl.endsync = 1 elif o == '-P': gbl.playFile = 1 elif o == '-I': # We use -I for plugin help and overload it to discard # the plugin security. Use -II for security override. # It does mean you can't have plugin called "I", but # you could use "i" and it'll work. if a == 'I': MMA.regplug.secOverRide = True # Plugin help. Note we have not loaded any plugins at this # point. pluginHelp() will find the plugin, register it and # call its help function. else: MMA.regplug.pluginHelp(a) sys.exit(0) elif o == '-V': if internal: cmdError("-V") gbl.playFile = 2 # signal create and play groove if not args: error("-V: option requires Groove Name.") tfile = "MMAtmp%s.mma" % os.getpid() op = open(tfile, "w") groove = '' cmds = [] chords = "I, vi, ii, V7" count = 4 for g in args: if '=' in g: c = g.split('=') if c[0].upper() == 'CHORDS': chords = c[1] elif c[0].upper() == "COUNT": count = c[1] try: count = int(count) except: error("-V: expecting integer for Count.") else: cmds.append(c) elif groove: error("-V: Only one groove name permitted.") else: groove = g if not groove: error("-V: no groove name specified.") op.write("Groove %s\n" % groove) for g in cmds: op.write("%s %s \n" % (g[0], g[1])) chords = chords.split(',') while len(chords) < count: chords += chords chords = chords[:count] for c in chords: op.write("%s\n" % c) op.close() MMA.exits.files.append(tfile) args = [tfile] else: usage() # unreachable?? if internal: return # we have processed all the args. Should just have a filename left if len(args) > 1: usage("Only one input filename is permitted, %s given on command line." % len(args)) if gbl.infile: usage("Input filename already assigned ... should not happen.") if args: gbl.infile = args[0] # if a single '-' is left on the cmd line user want stdin. We set the # the input filename to numeric 1 which can't be entered. if gbl.infile == '-': gbl.infile = 1 if not gbl.outfile: error("Input from STDIN specified. Use -f to set an output filename.")
def opts(l=None): """ Option parser. """ if not l: l = sys.argv[1:] internal = False else: internal = True try: opts, args = getopt.gnu_getopt(l, "b:B:dpsS:ri:wneom:f:M:cLgGvVD:01PT:I:", []) except getopt.GetoptError: usage() for o, a in opts: if o == '-b': setBarRange(a) elif o == '-B': setBarRange(a) gbl.barRange.append("ABS") elif o == '-d': gbl.debug = gbl.Ldebug = 1 elif o == '-o': gbl.showFilenames = gbl.LshowFilenames = 1 elif o == '-p': gbl.pshow = gbl.Lpshow = 1 elif o == '-s': gbl.seqshow = gbl.Lseqshow = 1 elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-r': gbl.showrun = gbl.Lshowrun = 1 elif o == '-w': gbl.noWarn = gbl.LnoWarn = 1 elif o == '-n': gbl.noOutput = gbl.LnoOutput = 1 elif o == '-e': gbl.showExpand = gbl.LshowExpand = 1 elif o == '-c': gbl.chshow = gbl.Lchshow = 1 elif o == '-L': gbl.printProcessed = True elif o == '-f': gbl.outfile = a if internal: warning("Output filename overwritten by -f CmdLine option.") MMA.paths.createOutfileName(".mid") elif o == '-i': if internal: cmdError("-i") MMA.paths.setRC(a) elif o == '-g': if internal: cmdError("-g") gbl.makeGrvDefs = 1 elif o == '-G': if internal: cmdError("-G") gbl.makeGrvDefs = 2 elif o == '-m': try: a = int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print("%s" % gbl.version) if not internal: sys.exit(0) elif o == '-M': global cmdSMF if a in ['0', '1']: cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-T': # set tracks to generate, mute all others gbl.muteTracks = a.upper().split(',') elif o == '-D': if internal: cmdError("-D..") if a == 'xl': gbl.createDocs = 1 elif a == 'xh': gbl.createDocs = 2 elif a == 's': gbl.createDocs = 3 elif a == 'gh': gbl.createDocs = 4 elif a == 'bo': gbl.createDocs = 99 elif a == 'k': # important! Needs a space before the trailing LF for mma.el print("Base track names: %s \n" % ' '.join([a for a in sorted(MMA.alloc.trkClasses)])) print("Commands: %s BEGIN END DEFAULT\n" % ' '.join([a for a in sorted(MMA.parse.simpleFuncs)])) print("TrackCommands: %s \n" % ' '.join([a for a in sorted(MMA.parse.trackFuncs)])) print("Not complete ... subcommands, comments, chords...") sys.exit(0) else: print("Unknown option: '-D%s'." % a) usage() elif o == '-0': gbl.synctick = 1 elif o == '-1': gbl.endsync = 1 elif o == '-P': gbl.playFile = 1 elif o == '-I': # We use -I for plugin help and overload it to discard # the plugin security. Use -II for security override. # It does mean you can't have plugin called "I", but # you could use "i" and it'll work. if a == 'I': MMA.regplug.secOverRide = True # Plugin help. Note we have not loaded any plugins at this # point. pluginHelp() will find the plugin, register it and # call its help function. else: MMA.regplug.pluginHelp(a) sys.exit(0) elif o == '-V': if internal: cmdError("-V") gbl.playFile = 2 # signal create and play groove if not args: error("-V: option requires Groove Name.") tfile = "MMAtmp%s.mma" % os.getpid() op = open(tfile, "w") groove = '' cmds = [] chords = "I, vi, ii, V7" count = 4 for g in args: if '=' in g: c = g.split('=') if c[0].upper() == 'CHORDS': chords = c[1] elif c[0].upper() == "COUNT": count = c[1] try: count = int(count) except: error("-V: expecting integer for Count.") else: cmds.append(c) elif groove: error("-V: Only one groove name permitted.") else: groove = g if not groove: error("-V: no groove name specified.") op.write("Groove %s\n" % groove) for g in cmds: op.write("%s %s \n" % (g[0], g[1])) chords = chords.split(',') while len(chords) < count: chords += chords chords = chords[:count] for c in chords: op.write("%s\n" % c) op.close() MMA.exits.files.append(tfile) args = [tfile] else: usage() # unreachable?? if internal: return # we have processed all the args. Should just have a filename left if len(args) > 1: usage("Only one input filename is permitted, %s given on command line." % len(args)) # if gbl.infile: # usage("Input filename already assigned ... should not happen.") if args: gbl.infile = args[0] # if a single '-' is left on the cmd line user want stdin. We set the # the input filename to numeric 1 which can't be entered. if gbl.infile == '-': gbl.infile = 1 if not gbl.outfile: error("Input from STDIN specified. Use -f to set an output filename.")
def opts(): """ Option parser. """ try: opts, args = getopt.gnu_getopt(sys.argv[1:], "dpsS:ri:wneom:f:M:cgGvD:0", []) except getopt.GetoptError: usage() for o, a in opts: if o == '-d': gbl.debug = gbl.Ldebug = 1 elif o == '-o': gbl.showFilenames = gbl.LshowFilenames = 1 elif o == '-p': gbl.pshow = gbl.Lpshow = 1 elif o == '-s': gbl.seqshow = gbl.Lseqshow = 1 elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-r': gbl.showrun = gbl.Lshowrun = 1 elif o == '-w': gbl.noWarn = gbl.LnoWarn = 1 elif o == '-n': gbl.noOutput = gbl.LnoOutput = 1 elif o == '-e': gbl.showExpand = gbl.LshowExpand = 1 elif o == '-c': gbl.chshow = gbl.Lchshow = 1 elif o == '-f': gbl.outfile = a elif o == '-i': gbl.mmaRC = a elif o == '-g': gbl.makeGrvDefs = 1 elif o == '-G': gbl.makeGrvDefs = 2 elif o == '-m': try: a = int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print "%s" % gbl.version sys.exit(0) elif o == '-M': if a in ['0', '1']: gbl.cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-D': if a == 'xl': gbl.docs = 1 elif a == 'xh': gbl.docs = 2 elif a == 'k': def pl(msg, lst): print msg, for i in sorted(lst.keys()): print i, print "\n" pl("Base track names:", MMA.alloc.trkClasses) pl("Commands:", MMA.parse.simpleFuncs) pl("TrackCommands:", MMA.parse.trackFuncs) print "Not complete ... subcommands, comments, chords..." sys.exit(0) else: print "Unknown -D option." usage() elif o == '-0': gbl.synctick = 1 else: usage() # unreachable?? if args: if gbl.infile: usage("Only one input filename is permitted.") gbl.infile = args.pop(0)
def opts(): """ Option parser. """ try: opts, args = getopt.gnu_getopt(sys.argv[1:], "b:B:dpsS:ri:wneom:f:M:cgGvVD:01PT:", [] ) except getopt.GetoptError: usage() for o,a in opts: if o == '-b': setBarRange(a) elif o == '-B': setBarRange(a) gbl.barRange.append("ABS") elif o == '-d': gbl.debug = gbl.Ldebug = 1 elif o == '-o': gbl.showFilenames = gbl.LshowFilenames = 1 elif o == '-p': gbl.pshow = gbl.Lpshow = 1 elif o == '-s': gbl.seqshow = gbl.Lseqshow = 1 elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-r': gbl.showrun = gbl.Lshowrun = 1 elif o == '-w': gbl.noWarn = gbl.LnoWarn = 1 elif o == '-n': gbl.noOutput = gbl.LnoOutput = 1 elif o == '-e': gbl.showExpand = gbl.LshowExpand = 1 elif o == '-c': gbl.chshow = gbl.Lchshow = 1 elif o == '-f': gbl.outfile = a elif o == '-i': gbl.mmaRC = a elif o == '-g': gbl.makeGrvDefs = 1 elif o == '-G': gbl.makeGrvDefs = 2 elif o == '-m': try: a=int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print "%s" % gbl.version sys.exit(0) elif o == '-M': if a in ['0', '1']: gbl.cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-T': # set tracks to generate, mute all others gbl.muteTracks = a.upper().split(',') elif o == '-D': if a == 'xl': gbl.createDocs = 1 elif a == 'xh': gbl.createDocs = 2 elif a == 's': gbl.createDocs = 3 elif a == 'gh': gbl.createDocs = 4 elif a == 'bo': gbl.createDocs = 99 elif a == 'k': def pl(msg, lst, adds): print msg, for i in sorted(lst.keys() + adds): print i, print "\n" pl("Base track names:", MMA.alloc.trkClasses, []) pl("Commands:", MMA.parse.simpleFuncs, ["BEGIN", "END",] ) pl("TrackCommands:", MMA.parse.trackFuncs, []) print "Not complete ... subcommands, comments, chords..." sys.exit(0) else: print "Unknown -D option." usage() elif o == '-0': gbl.synctick = 1 elif o == '-1': gbl.endsync = 1 elif o == '-P': gbl.playFile = 1 elif o == '-V': gbl.playFile = 2 # signal create and play groove if not args: error("-V: option requires Groove Name.") tfile = "MMAtmp%s.mma" % os.getpid() op = open( tfile, "w") groove='' cmds=[] chords="I, vi, ii, V7" count=4 for g in args: if '=' in g: c=g.split('=') if c[0].upper() == 'CHORDS': chords = c[1] elif c[0].upper() == "COUNT": count = c[1] try: count=int(count) except: error("-V: expecting integer for Count.") else: cmds.append(c) elif groove: error( "-V: Only one groove name permitted.") else: groove=g if not groove: error("-V: no groove name specified.") op.write("Groove %s\n" % groove) for g in cmds: op.write("%s %s \n" % (g[0], g[1])) chords = chords.split(',') while len(chords) < count: chords += chords chords = chords[:count] for c in chords: op.write("%s\n" % c) op.close() MMA.exits.files.append(tfile) args = [tfile] else: usage() # unreachable?? # we have processed all the args. Should just have a filename left if len(args)>1: usage("Only one input filename is permitted, %s given on command line." % len(args) ) if gbl.infile: usage("Input filename already assigned ... should not happen.") if args: gbl.infile = args[0]
def opts(): """ Option parser. """ try: opts, args = getopt.gnu_getopt(sys.argv[1:], "b:B:dpsS:ri:wneom:f:M:cgGvVD:01PT:", []) except getopt.GetoptError: usage() for o, a in opts: if o == '-b': setBarRange(a) elif o == '-B': setBarRange(a) gbl.barRange.append("ABS") elif o == '-d': gbl.debug = gbl.Ldebug = 1 elif o == '-o': gbl.showFilenames = gbl.LshowFilenames = 1 elif o == '-p': gbl.pshow = gbl.Lpshow = 1 elif o == '-s': gbl.seqshow = gbl.Lseqshow = 1 elif o == '-S': ln = a.split('=', 1) macros.setvar(ln) elif o == '-r': gbl.showrun = gbl.Lshowrun = 1 elif o == '-w': gbl.noWarn = gbl.LnoWarn = 1 elif o == '-n': gbl.noOutput = gbl.LnoOutput = 1 elif o == '-e': gbl.showExpand = gbl.LshowExpand = 1 elif o == '-c': gbl.chshow = gbl.Lchshow = 1 elif o == '-f': gbl.outfile = a elif o == '-i': gbl.mmaRC = a elif o == '-g': gbl.makeGrvDefs = 1 elif o == '-G': gbl.makeGrvDefs = 2 elif o == '-m': try: a = int(a) except: error("Expecting -m arg to be a integer") gbl.maxBars = a elif o == '-v': print "%s" % gbl.version sys.exit(0) elif o == '-M': if a in ['0', '1']: gbl.cmdSMF = a else: error("Only a '0' or '1' is permitted for the -M arg") elif o == '-T': # set tracks to generate, mute all others gbl.muteTracks = a.upper().split(',') elif o == '-D': if a == 'xl': gbl.createDocs = 1 elif a == 'xh': gbl.createDocs = 2 elif a == 's': gbl.createDocs = 3 elif a == 'gh': gbl.createDocs = 4 elif a == 'bo': gbl.createDocs = 99 elif a == 'k': def pl(msg, lst, adds): print msg, for i in sorted(lst.keys() + adds): print i, print "\n" pl("Base track names:", MMA.alloc.trkClasses, []) pl("Commands:", MMA.parse.simpleFuncs, [ "BEGIN", "END", ]) pl("TrackCommands:", MMA.parse.trackFuncs, []) print "Not complete ... subcommands, comments, chords..." sys.exit(0) else: print "Unknown -D option." usage() elif o == '-0': gbl.synctick = 1 elif o == '-1': gbl.endsync = 1 elif o == '-P': gbl.playFile = 1 elif o == '-V': gbl.playFile = 2 # signal create and play groove if not args: error("-V: option requires Groove Name.") tfile = "MMAtmp%s.mma" % os.getpid() op = open(tfile, "w") groove = '' cmds = [] chords = "I, vi, ii, V7" count = 4 for g in args: if '=' in g: c = g.split('=') if c[0].upper() == 'CHORDS': chords = c[1] elif c[0].upper() == "COUNT": count = c[1] try: count = int(count) except: error("-V: expecting integer for Count.") else: cmds.append(c) elif groove: error("-V: Only one groove name permitted.") else: groove = g if not groove: error("-V: no groove name specified.") op.write("Groove %s\n" % groove) for g in cmds: op.write("%s %s \n" % (g[0], g[1])) chords = chords.split(',') while len(chords) < count: chords += chords chords = chords[:count] for c in chords: op.write("%s\n" % c) op.close() MMA.exits.files.append(tfile) args = [tfile] else: usage() # unreachable?? # we have processed all the args. Should just have a filename left if len(args) > 1: usage( "Only one input filename is permitted, %s given on command line." % len(args)) if gbl.infile: usage("Input filename already assigned ... should not happen.") if args: gbl.infile = args[0]