in build/get_syzygy_binaries.py [0:0]
def _ParseCommandLine():
"""Parses the command-line and returns an options structure."""
option_parser = optparse.OptionParser()
option_parser.add_option('--dry-run', action='store_true', default=False,
help='If true then will simply list actions that would be performed.')
option_parser.add_option('--force', action='store_true', default=False,
help='Force an installation even if the binaries are up to date.')
option_parser.add_option('--no-cleanup', action='store_true', default=False,
help='Allow installation on non-Windows platforms, and skip the forced '
'cleanup step.')
option_parser.add_option('--output-dir', type='string',
help='The path where the binaries will be replaced. Existing binaries '
'will only be overwritten if not up to date.')
option_parser.add_option('--overwrite', action='store_true', default=False,
help='If specified then the installation will happily delete and rewrite '
'the entire output directory, blasting any local changes.')
option_parser.add_option('--revision', type='string',
help='The SVN revision or GIT hash associated with the required version.')
option_parser.add_option('--revision-file', type='string',
help='A text file containing an SVN revision or GIT hash.')
option_parser.add_option('--resource', type='string', action='append',
dest='resources', help='A resource to be downloaded.')
option_parser.add_option('--verbose', dest='log_level', action='store_const',
default=logging.INFO, const=logging.DEBUG,
help='Enables verbose logging.')
option_parser.add_option('--quiet', dest='log_level', action='store_const',
default=logging.INFO, const=logging.ERROR,
help='Disables all output except for errors.')
options, args = option_parser.parse_args()
if args:
option_parser.error('Unexpected arguments: %s' % args)
if not options.output_dir:
option_parser.error('Must specify --output-dir.')
if not options.revision and not options.revision_file:
option_parser.error('Must specify one of --revision or --revision-file.')
if options.revision and options.revision_file:
option_parser.error('Must not specify both --revision and --revision-file.')
# Configure logging.
logging.basicConfig(level=options.log_level)
# If a revision file has been specified then read it.
if options.revision_file:
options.revision = open(options.revision_file, 'rb').read().strip()
_LOGGER.debug('Parsed revision "%s" from file "%s".',
options.revision, options.revision_file)
# Ensure that the specified SVN revision or GIT hash is valid.
if not _REVISION_RE.match(options.revision):
option_parser.error('Must specify a valid SVN or GIT revision.')
# This just makes output prettier to read.
options.output_dir = os.path.normpath(options.output_dir)
return options