예제 #1
0
def init(argv):
  opts, methods = getopt(argv, 'hl:r:vm:s:a:fi:NP:ducS', ['help', 'lang=', 'reference=', 'version' ,'main=', 'skeleton=', 'add=', 'cout', 'force', 'include=', 'prefix=', 'downcase', 'uppercase', 'camel', 'snake'])
  xunit = load()
  includes = []
  prefix = 1
  force = 0
  cout = 0
  add = None
  skeleton = None
  main = None
  lang = None
  downcase = None
  snake = None
  for opt, value in opts:
    if '-h' == opt or '--help' == opt:
      usage()
      sys.exit(0)
    elif '-v' == opt or '--version' == opt:
      version()
      for lang in xunit.lang.items():
        print '  ' + lang[1].version + '(--lang ' + lang[0] + ')'
      sys.exit(0)
    elif '-r' == opt or '--reference' == opt:
      try:
        print xunit.lang[value].reference
      except KeyError:
        sys.stderr.write('Un Support Language:%s' % value)
        sys.exit(1)
    elif '-l' == opt or '--lang' == opt:
      try:
        lang = xunit.lang[value]
      except KeyError:
        sys.stderr.write('Un Support Language:%s' % value)
        sys.exit(1)
    elif '-m' == opt or '--main' == opt:
      main = value
    elif '-s' == opt or '--skeleton' == opt:
      skeleton = value
    elif '-a' == opt or '--add' == opt:
      add = value
      force = 1
    elif '-P' == opt or '--prefix' == opt:
      if value == '+':
        prefix = 1
      elif value == '-':
        prefix = 0
      else:
        raise ValueError, "prefix option can accept only '+' or '-'"
    elif '-f' == opt or '--force' == opt:
      force = 1
    elif '-d' == opt or '--downcase' == opt:
      downcase = 1
    elif '-u' == opt or '--uppercase' == opt:
      downcase = 0
    elif '-S' == opt or '--snake' == opt:
      snake = 1
    elif '-c' == opt or '--camel' == opt:
      snake = 0
    elif '--cout' == opt:
      cout = 1
    elif '-i' == opt or '--include' == opt:
      includes.append(value)
  if add is not None:
    add = Add(add, language(xunit, lang, add), methods, includes)
    add.create()
    output(add.filename, add.result, force, cout)
  else:
    if skeleton is not None:
      skeleton = Skeleton(skeleton, methods, includes, prefix, 
        language(xunit, lang, skeleton))
      skeleton.create()
      output(skeleton.filename, skeleton.result, force, cout)
    if main is not None:
      main = Main(main, language(xunit, lang, main))
      main.create()
      output(main.filename, main.result, force, cout)