"""Observe one existing job within a soft deadline. Timeout NEVER stops Resolve."""
import argparse
from resolve_api_connection import connect
from resolve_api_queue import cli_target, bounds, wait_job, print_result, PreflightError


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    cli_target(parser)
    parser.add_argument("--job-id", required=True)
    parser.add_argument("--timeout", type=float, default=120, help="Soft observation deadline, seconds")
    parser.add_argument("--interval", type=float, default=1, help="Seconds between samples")
    parser.add_argument("--max-polls", type=int, default=600)
    args = parser.parse_args()

    def work():
        # Validate local arguments before loading the native bridge.
        if not args.project_id:
            raise PreflightError("Waiting requires an exact --project-id")
        bounds(args.timeout, args.interval, args.max_polls)
        return wait_job(connect(), args.project_id, args.job_id,
                        args.timeout, args.interval, args.max_polls, args.details)
    return print_result(work)


if __name__ == "__main__":
    raise SystemExit(main())
