in sync/command.py [0:0]
def get_parser():
# type () -> argparse.ArgumentParser
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
parser.add_argument("--pdb", action="store_true", help="Run in pdb")
parser.add_argument("--profile", action="store", help="Run in profile, dump stats to "
"specified filename")
parser.add_argument("--config", action="append", help="Set a config option")
parser_update = subparsers.add_parser("update",
help="Update the local state by reading from GH + etc.")
parser_update.add_argument("--sync-type", nargs="*", help="Type of sync to update",
choices=["upstream", "downstream"])
parser_update.add_argument("--status", nargs="*", help="Statuses of syncs to update e.g. open")
parser_update.set_defaults(func=do_update)
parser_update_tasks = subparsers.add_parser("update-tasks",
help="Update the state of try pushes")
parser_update_tasks.add_argument("pr_id", nargs="?", type=int,
help="Downstream PR id for sync to update")
parser_update_tasks.set_defaults(func=do_update_tasks)
parser_list = subparsers.add_parser("list", help="List all in-progress syncs")
parser_list.add_argument("sync_type", nargs="*", help="Type of sync to list")
parser_list.add_argument("--error", action="store_true", help="List only syncs with errors")
parser_list.set_defaults(func=do_list)
parser_detail = subparsers.add_parser("detail", help="List all in-progress syncs")
parser_detail.add_argument("sync_type", help="Type of sync")
parser_detail.add_argument("obj_id", type=int, help="Bug or PR id for the sync")
parser_detail.set_defaults(func=do_detail)
parser_landing = subparsers.add_parser("landing", help="Trigger the landing code")
parser_landing.add_argument("--prev-wpt-head", help="First commit to use as the base")
parser_landing.add_argument("--wpt-head", help="wpt commit to land to")
parser_landing.add_argument("--no-push", dest="push", action="store_false", default=True,
help="Don't actually push anything to gecko")
parser_landing.add_argument("--include-incomplete", action="store_true", default=False,
help="Consider PRs with incomplete syncs as landable.")
parser_landing.add_argument("--accept-failures", action="store_true", default=False,
help="Consider the latest try push a success even if it has "
"more than the allowed number of failures")
parser_landing.add_argument("--retry", action="store_true", default=False,
help="Rebase onto latest central and do another try push")
parser_landing.set_defaults(func=do_landing)
parser_fetch = subparsers.add_parser("repo-config", help="Configure repo.")
parser_fetch.set_defaults(func=do_configure_repos)
parser_fetch.add_argument('repo', choices=['gecko', 'web-platform-tests', 'wpt-metadata'])
parser_fetch.add_argument('config_file', help="Path to git config file to copy.")
parser_listen = subparsers.add_parser("listen", help="Start pulse listener")
parser_listen.set_defaults(func=do_start_listener)
parser_listen = subparsers.add_parser("phab-listen", help="Start phabricator listener")
parser_listen.set_defaults(func=do_start_phab_listener)
parser_pr = subparsers.add_parser("pr", help="Update the downstreaming for a specific PR")
parser_pr.add_argument("pr_ids", default=None, type=int, nargs="*", help="PR numbers")
parser_pr.add_argument("--rebase", default=False, action="store_true",
help="Force the PR to be rebase onto the integration branch")
parser_pr.set_defaults(func=do_pr)
parser_bug = subparsers.add_parser("bug", help="Update the upstreaming for a specific bug")
parser_bug.add_argument("bug", default=None, nargs="?", help="Bug number")
parser_bug.set_defaults(func=do_bug)
parser_push = subparsers.add_parser("push", help="Run the push handler")
parser_push.add_argument("--base-rev", help="Base revision for push or landing")
parser_push.add_argument("--rev", help="Revision pushed")
parser_push.add_argument("--process", dest="processes", action="append",
choices=["landing", "upstream"],
default=None,
help="Select process to run on push (default: landing, upstream)")
parser_push.set_defaults(func=do_push)
parser_delete = subparsers.add_parser("delete", help="Delete a sync by bug number or pr")
parser_delete.add_argument("sync_type", choices=["downstream", "upstream", "landing"],
help="Type of sync to delete")
parser_delete.add_argument("obj_ids", nargs="+", type=int,
help="Bug or PR id for the sync(s)")
parser_delete.add_argument("--seq-id", default=None, type=int, help="Sync sequence id")
parser_delete.add_argument("--all", dest="delete_all", action="store_true",
help="Delete all matches, not just most recent")
parser_delete.add_argument("--try", dest="try_push",
action="store_true", help="Delete try pushes for a sync")
parser_delete.set_defaults(func=do_delete)
parser_worktree = subparsers.add_parser("worktree", help="Create worktree for a sync")
parser_worktree.add_argument("sync_type", help="Type of sync")
parser_worktree.add_argument("obj_id", type=int, help="Bug or PR id for the sync")
parser_worktree.add_argument("worktree_type", choices=["gecko", "wpt"],
help="Repo type of worktree")
parser_worktree.set_defaults(func=do_worktree)
parser_status = subparsers.add_parser("status", help="Set the status of a Sync or Try push")
parser_status.add_argument("obj_type", choices=["try", "sync"],
help="Object type")
parser_status.add_argument("sync_type", choices=["downstream", "upstream", "landing"],
help="Sync type")
parser_status.add_argument("obj_id", type=int, help="Object id (pr number or bug)")
parser_status.add_argument("new_status", help="Status to set")
parser_status.add_argument("--old-status", help="Current status")
parser_status.add_argument("--seq-id", default=None, type=int, help="Sequence number")
parser_status.set_defaults(func=do_status)
parser_test = subparsers.add_parser("test", help="Run the tests with pytest")
parser_test.add_argument("--no-flake8", dest="flake8", action="store_false",
default=True, help="Don't run flake8")
parser_test.add_argument("--no-pytest", dest="pytest", action="store_false",
default=True, help="Don't run pytest")
parser_test.add_argument("--no-mypy", dest="mypy", action="store_false",
help="Don't run mypy")
parser_test.add_argument("args", nargs="*", help="Arguments to pass to pytest")
parser_test.set_defaults(func=do_test)
parser_cleanup = subparsers.add_parser("cleanup", help="Run the cleanup code")
parser_cleanup.set_defaults(func=do_cleanup)
parser_skip = subparsers.add_parser("skip",
help="Mark the sync for a PR as skip so that "
"it doesn't have to complete before a landing")
parser_skip.add_argument("pr_ids", type=int, nargs="*", help="PR ids for which to skip")
parser_skip.set_defaults(func=do_skip)
parser_notify = subparsers.add_parser("notify",
help="Try to perform results notification "
"for specified PRs")
parser_notify.add_argument("pr_ids", nargs="*", type=int, help="PR ids for which to notify "
"(tries to use the PR for the current working directory "
"if not specified)")
parser_notify.add_argument("--force", action="store_true",
help="Run even if the sync is already marked as notified")
parser_notify.set_defaults(func=do_notify)
parser_landable = subparsers.add_parser("landable",
help="Display commits from upstream "
"that are able to land")
parser_landable.add_argument("--prev-wpt-head", help="First commit to use as the base")
parser_landable.add_argument("--quiet", action="store_false", dest="include_all", default=True,
help="Only print the first PR with an error")
parser_landable.add_argument("--blocked", action="store_true", dest="blocked", default=False,
help="Only print unlandable PRs that are blocking")
parser_landable.add_argument("--retrigger", action="store_true", default=False,
help="Try to update all unlanded PRs that aren't Ready "
"(requires --all)")
parser_landable.add_argument("--include-incomplete", action="store_true", default=False,
help="Consider PRs with incomplete syncs as landable.")
parser_landable.set_defaults(func=do_landable)
parser_retrigger = subparsers.add_parser("retrigger",
help="Retrigger syncs that are not read")
parser_retrigger.add_argument("--no-upstream", action="store_false", default=True,
dest="upstream", help="Don't retrigger upstream syncs")
parser_retrigger.add_argument("--no-downstream", action="store_false", default=True,
dest="downstream", help="Don't retrigger downstream syncs")
parser_retrigger.add_argument("--rebase", default=False, action="store_true",
help="Force downstream syncs to be rebased onto the "
"integration branch")
parser_retrigger.set_defaults(func=do_retrigger)
parser_try_push_add = subparsers.add_parser("add-try",
help="Add a try push to an existing sync")
parser_try_push_add.add_argument("try_rev", help="Revision on try")
parser_try_push_add.add_argument("sync_type", nargs="?", choices=["downstream", "landing"],
help="Revision on try")
parser_try_push_add.add_argument("sync_id", nargs="?", type=int,
help="PR id for downstream sync or bug number "
"for upstream sync")
parser_try_push_add.add_argument("--stability", action="store_true",
help="Push is stability try push")
parser_try_push_add.add_argument("--rebuild-count", default=None, type=int,
help="Rebuild count")
parser_try_push_add.set_defaults(func=do_try_push_add)
parser_download_logs = subparsers.add_parser("download-logs",
help="Download logs for a given try push")
parser_download_logs.add_argument("--log-path",
help="Destination path for the logs")
parser_download_logs.add_argument("taskgroup_id", help="id of the taskgroup (decision task)")
parser_download_logs.set_defaults(func=do_download_logs)
parser_bugupdate = subparsers.add_parser("bug-update",
help="Run the bug update task")
parser_bugupdate.set_defaults(func=do_bugupdate)
parser_build_index = subparsers.add_parser("build-index",
help="Build indexes")
parser_build_index.add_argument("index_name", nargs="*",
help="Index names to rebuild (default all)")
parser_build_index.set_defaults(func=do_build_index)
parser_migrate = subparsers.add_parser("migrate",
help="Migrate to latest data storage format")
parser_migrate.set_defaults(func=do_migrate)
return parser