You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2013- Facebook.
|
|
# All rights reserved.
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
import inferlib
|
|
|
|
|
|
def create_inferJ_command(args, javac_arguments):
|
|
infer_args = ['-o', args.infer_out]
|
|
if args.debug:
|
|
infer_args.append('--debug')
|
|
infer_args += ['--analyzer', 'capture']
|
|
|
|
return inferlib.Infer(inferlib.inferJ_parser.parse_args(infer_args),
|
|
inferlib.get_javac_args(['javac'] + javac_arguments))
|
|
|
|
|
|
def get_build_output(build_cmd):
|
|
# TODO make it return generator to be able to handle large builds
|
|
proc = subprocess.Popen(build_cmd, stdout=subprocess.PIPE)
|
|
(verbose_out_chars, _) = proc.communicate()
|
|
return verbose_out_chars.split('\n')
|
|
|
|
|
|
def run_commands(cmds):
|
|
# TODO call it in parallel
|
|
if len(cmds) == 0:
|
|
return os.EX_NOINPUT
|
|
for cmd in cmds:
|
|
if not cmd.start():
|
|
return os.EX_SOFTWARE
|
|
return os.EX_OK
|
|
|
|
|
|
def base_argparser(description, module_name):
|
|
def _func(group_name=module_name):
|
|
"""This creates an empty argparser for the module, which provides only
|
|
description/usage information and no arguments."""
|
|
parser = argparse.ArgumentParser(add_help=False)
|
|
group = parser.add_argument_group(
|
|
"{grp} module".format(grp=group_name),
|
|
description=description,
|
|
)
|
|
return parser
|
|
return _func
|