示例#1
0
文件: proj.py 项目: smxlong/nnw-proj
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)
示例#2
0
 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)
示例#3
0
 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))
示例#4
0
 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))
示例#5
0
 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))
示例#6
0
 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))
示例#7
0
 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)
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
 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)
示例#11
0
 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))
示例#12
0
 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))
示例#13
0
 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))
示例#14
0
 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))
示例#15
0
 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)
示例#16
0
 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)
示例#17
0
 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)