#!/usr/bin/env python
"""
This is a script to launch multiple triage viewers in parallel.
"""
import argparse
import subprocess
import sys


def parse_args(argv):
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(
            '--lmdb_file',
            type=str,
            required=True,
            help=('The basename of an lmdb file that is in a perception_ci '
                  'suite. Ex: "760.lmdb"'))
    parser.add_argument(
            '--target_branch',
            type=str,
            required=True,
            help=('Branch name to be compared to source_branch'))
    parser.add_argument(
            '--source_branch',
            type=str,
            required=False,
            default='nightly-master',
            help=('Base branch to view in comparison to --target_branch. '
                  'Should almost always be nightly-master. Cannot be the '
                  'same as target_branch.'))
    return parser.parse_args(argv)


def main(argv=sys.argv[1:]):
    args = parse_args(argv)
    assert args.target_branch != args.source_branch
    source_cmd = ['data/triage/perception_ci_triage',
                  '--lmdb_file', args.lmdb_file,
                  '--branch_name', args.source_branch,
                  '--use_latest']
    target_cmd = ['data/triage/perception_ci_triage',
                  '--lmdb_file', args.lmdb_file,
                  '--branch_name', args.target_branch]
    # Add the source process and divert stdout.
    source_proc = subprocess.Popen(
                source_cmd,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE)
    # Add the target process and keep stdout to allow for datetime picker.
    target_proc = subprocess.Popen(target_cmd)
    source_ret = source_proc.wait()
    target_proc.wait()
    if source_ret != 0:
        stdout, stderr = source_proc.communicate()
        print(stderr)
        sys.exit(source_ret)
    return 0


if __name__ == '__main__':
    sys.exit(main())
