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

#!/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