def process_cmdline(args): preflags, cmdwords, groups = optparser.parse(args) # TODO: validate all the stuff we just parsed: # * Only recognized preflags are allowed # * Only recognized commands are allowed # * Only recognized groups are allowed # # The individual commands can validate the specific usages of preflags and groups. if cmdwords == []: usage() # To add a command, just define a function named cmd_my_command. You don't need to # change anything down here. # # For example: # "new project" is provided by cmd_new_project # "list" is provided by cmd_list cmd = 'cmd_' + str.join('_', cmdwords) func = globals().get(cmd, None) if not func: print 'ERROR: unrecognized command \'%s\'' % str.join(' ', cmdwords) usage(1) func(preflags, groups)
def test_big(self): args = [ '--noninteractive', 'new', 'executable', '--sources', 'a.cpp', 'b.cpp', 'c.cpp', '--headers', 'a.h', 'b.h', 'c.h', '--sources', 'd.cpp' ] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(['--noninteractive'], preflags) self.assertEqual(['new', 'executable'], cmdwords) self.assertEqual( { '--sources': ['a.cpp', 'b.cpp', 'c.cpp', 'd.cpp'], '--headers': ['a.h', 'b.h', 'c.h'] }, groups)
def test_preflags_and_cmd_multi_3(self): args = ['--test', '--test3', 'test1', 'test2'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(['--test', '--test3'], preflags) self.assertEqual(['test1', 'test2'], cmdwords) self.assertEqual(0, len(groups))
def test_no_args(self): args = [] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(0, len(preflags)) self.assertEqual(0, len(cmdwords)) self.assertEqual(0, len(groups))
def test_cmd_multi_only(self): args = ['test', 'test2'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(0, len(preflags)) self.assertEqual(['test', 'test2'], cmdwords) self.assertEqual(0, len(groups))
def test_preflag_multi_only(self): args = ['--test', '--test2', '--test3'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(['--test', '--test2', '--test3'], preflags) self.assertEqual(0, len(cmdwords)) self.assertEqual(0, len(groups))
def test_big(self): args = ['--noninteractive', 'new', 'executable', '--sources', 'a.cpp', 'b.cpp', 'c.cpp', '--headers', 'a.h', 'b.h', 'c.h', '--sources', 'd.cpp'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(['--noninteractive'], preflags) self.assertEqual(['new', 'executable'], cmdwords) self.assertEqual({'--sources': ['a.cpp', 'b.cpp', 'c.cpp', 'd.cpp'], '--headers': ['a.h', 'b.h', 'c.h']}, groups)
def test_preflag_and_cmd_and_group_merge(self): args = ['--preflag', 'test', '--test1', 'test2', '--test1', 'test4'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual(['--preflag'], preflags) self.assertEqual(['test'], cmdwords) self.assertEqual({'--test1': ['test2', 'test4']}, groups)
def test_cmd_multi_and_empty_group_multi(self): args = ['test', 'test3', '--test1', '--test2'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual([], preflags) self.assertEqual(['test', 'test3'], cmdwords) self.assertEqual({'--test1': [], '--test2': []}, groups)
def test_cmd_and_group_many_1(self): args = ['test', '--test1', 'test2', 'test3'] (preflags, cmdwords, groups) = optparser.parse(args) self.assertEqual([], preflags) self.assertEqual(['test'], cmdwords) self.assertEqual({'--test1': ['test2', 'test3']}, groups)