def METHOD_NAME(self, parser):
    def add_argument(*args, **kw):
        name = args[-1].lstrip("-").replace("-", "_")
        self.option_names.add(name)
        parser.add_argument(*args, **kw)
    self.option_names = set()
    add_argument(
        'slug',
        choices=sorted(MIGRATIONS),
        help="Migration slug: {}".format(', '.join(sorted(MIGRATIONS))),
    )
    add_argument(
        '--log-dir',
        help="Migration log directory.",
    )
    add_argument(
        '--reset',
        action="store_true",
        default=False,
        help="Discard any existing migration state.",
    )
    add_argument(
        '--chunk-size',
        type=int,
        default=100,
        help="Maximum number of records to read from couch at once.",
    )
    add_argument(
        '--num-workers',
        type=int,
        default=DEFAULT_WORKER_POOL_SIZE,
        help=(
            "Worker pool size for parallel processing. This option is "
            "ignored by migration types that do not support it."
        ),
    )
    add_argument(
        '--date-range',
        help=(
            "Creation date range of blobs to be migrated specified as one "
            "or two dates in YYYYMMDD format. If only one date is "
            "specified, it will be used as the end date, leaving the "
            "start date unbounded. Some migrations may not support this"
            "parameter. Example value: 20180109-20190109"
        ),
    )
    add_argument('--domain', help="Limit migration to a single domain")
    add_argument(
        '--process_day_by_day',
        action='store_true',
        default=False,
        help=(
            "Run migration for each day in the given date-range separately "
            "to allow cancelling and resuming on any day. Only applicable with date-range option"
        ),
    )