| 123456789101112131415161718192021222324252627282930 |
- import getopt
- import re
- import sys
- def accept_args( args_spec, args, options, usage ):
-
- defaults_num = len(options)
-
- ( option_pairs, rest_args ) = getopt.getopt( args, '', args_spec )
- map( lambda x: options.__setitem__( x[0], x[1] ), option_pairs )
- if ( options.has_key( '--help' ) or len( options.keys() ) == defaults_num ):
- usage()
- sys.exit( 1 )
- if len( rest_args ) > 0 and rest_args[0][0] == '@':
- f = open( rest_args[0][1:], 'r' )
- config_lines = f.read().splitlines()
- f.close()
- for l in config_lines:
- if re.search( r'^\s*#', l ): continue
- if re.search( r'^\s*$', l ): continue
- m = re.match( r'^(?P<name>.*?)=(?P<value>.*)', l )
- if m:
- options[ '--%s' % m.group( 'name' ) ] = m.group( 'value' )
- else:
- raise 'Invalid format of config line "%s"' % l
- return rest_args
|