@@ -16,7 +16,7 @@ import email.policy
1616import os
1717import glob
1818import sys
19- import optparse
19+ import argparse
2020import re
2121import tempfile
2222import shutil
@@ -557,99 +557,100 @@ def inspect_menu(tmpdir, to_list, cc_list, patches, suppress_cc, in_reply_to,
557557 return patches
558558
559559def parse_args ():
560+ prog = os .path .basename (sys .argv [0 ])
560561
561- parser = optparse . OptionParser ( version = '%% prog %s' % VERSION ,
562- usage = '% prog [options] -- [common format-patch options]' ,
562+ parser = argparse . ArgumentParser ( prog = f" { prog } { VERSION } " ,
563+ usage = f" { prog } [options] -- [common format-patch options]" ,
563564 description = 'Prepare and store patch revisions as git tags.' ,
564565 epilog = 'Please report bugs to Stefan Hajnoczi <stefanha@gmail.com>.' )
565- parser .add_option ('--annotate' , dest = 'annotate' , action = 'store_true' ,
566+ parser .add_argument ('--annotate' , dest = 'annotate' , action = 'store_true' ,
566567 default = False , help = 'review and edit each patch email' )
567- parser .add_option ('-b' , '--base' , dest = 'base' , default = None ,
568+ parser .add_argument ('-b' , '--base' , dest = 'base' , default = None ,
568569 help = 'branch which this is based off [defaults to master]' )
569- parser .add_option ('--blurb-template' , dest = 'blurb_template' , default = None ,
570+ parser .add_argument ('--blurb-template' , dest = 'blurb_template' , default = None ,
570571 help = 'Template for blurb [defaults to *** BLURB HERE ***]' )
571- parser .add_option ('--cc' , dest = 'cc' , action = 'append' , default = [],
572+ parser .add_argument ('--cc' , dest = 'cc' , action = 'append' , default = [],
572573 help = 'specify a Cc: email recipient' )
573- parser .add_option ('--cc-cmd' ,
574+ parser .add_argument ('--cc-cmd' ,
574575 help = 'specify a command whose output to add to the cc list' )
575- parser .add_option ('--no-check-url' , dest = 'check_url' , action = 'store_false' ,
576+ parser .add_argument ('--no-check-url' , dest = 'check_url' , action = 'store_false' ,
576577 help = 'skip publicly accessible pull request URL check' )
577- parser .add_option ('--check-url' , dest = 'check_url' , action = 'store_true' ,
578+ parser .add_argument ('--check-url' , dest = 'check_url' , action = 'store_true' ,
578579 help = 'check pull request URLs are publicly accessible' )
579- parser .add_option ('--skip' , type = ' int' , dest = 'skip' , metavar = 'N' , default = 0 ,
580+ parser .add_argument ('--skip' , type = int , dest = 'skip' , metavar = 'N' , default = 0 ,
580581 help = 'unselect the first N patch emails (including the cover letter if any)' )
581- parser .add_option ('--edit' , dest = 'edit' , action = 'store_true' ,
582+ parser .add_argument ('--edit' , dest = 'edit' , action = 'store_true' ,
582583 default = False , help = 'edit message but do not tag a new version' )
583- parser .add_option ('--no-inspect-emails' , dest = 'inspect_emails' ,
584+ parser .add_argument ('--no-inspect-emails' , dest = 'inspect_emails' ,
584585 action = 'store_false' ,
585586 help = 'no confirmation before sending emails' )
586- parser .add_option ('--inspect-emails' , dest = 'inspect_emails' ,
587+ parser .add_argument ('--inspect-emails' , dest = 'inspect_emails' ,
587588 action = 'store_true' , default = True ,
588589 help = 'show confirmation before sending emails' )
589- parser .add_option ('-n' , '--number' , type = ' int' , dest = 'number' , default = - 1 ,
590+ parser .add_argument ('-n' , '--number' , type = int , dest = 'number' , default = - 1 ,
590591 help = 'version number [auto-generated by default]' )
591- parser .add_option ('--no-message' , '--no-cover-letter' , dest = 'message' ,
592+ parser .add_argument ('--no-message' , '--no-cover-letter' , dest = 'message' ,
592593 action = 'store_false' , help = 'do not add a message' )
593- parser .add_option ('-m' , '--message' , '--cover-letter' , dest = 'message' ,
594+ parser .add_argument ('-m' , '--message' , '--cover-letter' , dest = 'message' ,
594595 action = 'store_true' , help = 'add a message' )
595- parser .add_option ('--no-cover-info' , dest = 'cover_info' ,
596+ parser .add_argument ('--no-cover-info' , dest = 'cover_info' ,
596597 action = 'store_false' , default = True ,
597598 help = 'do not append comments information when editing the cover letter' )
598- parser .add_option ('--no-binary' , dest = 'binary' ,
599+ parser .add_argument ('--no-binary' , dest = 'binary' ,
599600 action = 'store_false' , default = True ,
600601 help = 'Do not output contents of changes in binary files, instead display a notice that those files changed' )
601- parser .add_option ('--profile' , '-p' , dest = 'profile_name' , default = 'default' ,
602+ parser .add_argument ('--profile' , '-p' , dest = 'profile_name' , default = 'default' ,
602603 help = 'select default settings profile' )
603- parser .add_option ('--pull-request' , dest = 'pull_request' , action = 'store_true' ,
604+ parser .add_argument ('--pull-request' , dest = 'pull_request' , action = 'store_true' ,
604605 default = False , help = 'tag and send as a pull request' )
605- parser .add_option ('--sign-pull' , dest = 'sign_pull' , action = 'store_true' ,
606+ parser .add_argument ('--sign-pull' , dest = 'sign_pull' , action = 'store_true' ,
606607 help = 'sign tag when sending pull request' )
607- parser .add_option ('-k' , '--keyid' , dest = 'keyid' ,
608+ parser .add_argument ('-k' , '--keyid' , dest = 'keyid' ,
608609 help = 'use the given GPG key when signing pull request tag' )
609- parser .add_option ('--no-sign-pull' , dest = 'sign_pull' , action = 'store_false' ,
610+ parser .add_argument ('--no-sign-pull' , dest = 'sign_pull' , action = 'store_false' ,
610611 help = 'do not sign tag when sending pull request' )
611- parser .add_option ('--subject-prefix' , dest = 'prefix' , default = None ,
612+ parser .add_argument ('--subject-prefix' , dest = 'prefix' , default = None ,
612613 help = 'set the email Subject: header prefix' )
613- parser .add_option ('--clear-subject-prefix' , dest = 'clear_prefix' ,
614+ parser .add_argument ('--clear-subject-prefix' , dest = 'clear_prefix' ,
614615 action = 'store_true' , default = False ,
615616 help = 'clear the per-branch subject prefix' )
616- parser .add_option ('--setup' , dest = 'setup' , action = 'store_true' , default = False ,
617+ parser .add_argument ('--setup' , dest = 'setup' , action = 'store_true' , default = False ,
617618 help = 'add git alias in ~/.gitconfig' )
618- parser .add_option ('-t' , '--topic' , dest = 'topic' ,
619+ parser .add_argument ('-t' , '--topic' , dest = 'topic' ,
619620 help = 'topic name [defaults to current branch name]' )
620- parser .add_option ('--to' , dest = 'to' , action = 'append' , default = [],
621+ parser .add_argument ('--to' , dest = 'to' , action = 'append' , default = [],
621622 help = 'specify a primary email recipient' )
622- parser .add_option ('-s' , '--signoff' , dest = 'signoff' , action = 'store_true' ,
623+ parser .add_argument ('-s' , '--signoff' , dest = 'signoff' , action = 'store_true' ,
623624 default = False ,
624625 help = 'add Signed-off-by: <self> to commits when emailing' )
625- parser .add_option ('--notes' , dest = 'notes' , action = 'store_true' ,
626+ parser .add_argument ('--notes' , dest = 'notes' , action = 'store_true' ,
626627 default = False ,
627628 help = 'Append the notes (see git-notes(1)) for the commit after the three-dash line.' )
628- parser .add_option ('--suppress-cc' , dest = 'suppress_cc' ,
629+ parser .add_argument ('--suppress-cc' , dest = 'suppress_cc' ,
629630 help = 'override auto-cc when sending email (man git-send-email for details)' )
630- parser .add_option ('-v' , '--verbose' , dest = 'verbose' ,
631+ parser .add_argument ('-v' , '--verbose' , dest = 'verbose' ,
631632 action = 'store_true' , default = False ,
632633 help = 'show executed git commands (useful for troubleshooting)' )
633- parser .add_option ('--forget-cc' , dest = 'forget_cc' , action = 'store_true' ,
634+ parser .add_argument ('--forget-cc' , dest = 'forget_cc' , action = 'store_true' ,
634635 default = False , help = 'Forget all previous CC emails' )
635- parser .add_option ('--override-to' , dest = 'override_to' , action = 'store_true' ,
636+ parser .add_argument ('--override-to' , dest = 'override_to' , action = 'store_true' ,
636637 default = False , help = 'Ignore any profile or saved TO emails' )
637- parser .add_option ('--override-cc' , dest = 'override_cc' , action = 'store_true' ,
638+ parser .add_argument ('--override-cc' , dest = 'override_cc' , action = 'store_true' ,
638639 default = False , help = 'Ignore any profile or saved CC emails' )
639- parser .add_option ('--in-reply-to' , "-R" ,
640+ parser .add_argument ('--in-reply-to' , "-R" ,
640641 help = 'specify the In-Reply-To: of the cover letter (or the single patch)' )
641- parser .add_option ('--no-thread' , dest = 'thread' , action = 'store_false' ,
642+ parser .add_argument ('--no-thread' , dest = 'thread' , action = 'store_false' ,
642643 help = 'do not add In-Reply-To: headers to any email' )
643- parser .add_option ('--thread' , dest = 'thread' , action = 'store_true' ,
644+ parser .add_argument ('--thread' , dest = 'thread' , action = 'store_true' ,
644645 help = 'add In-Reply-To: headers to sent emails' )
645- parser .add_option ('--add-header' , '-H' , action = 'append' , dest = 'headers' ,
646+ parser .add_argument ('--add-header' , '-H' , action = 'append' , dest = 'headers' ,
646647 help = 'specify custom headers to git-send-email' )
647- parser .add_option ('--separate-send' , '-S' , dest = 'separate_send' , action = 'store_true' ,
648+ parser .add_argument ('--separate-send' , '-S' , dest = 'separate_send' , action = 'store_true' ,
648649 default = False , help = 'Send patches using separate git-send-email cmd' )
649- parser .add_option ('--send-email-args' , action = 'append' , default = [],
650+ parser .add_argument ('--send-email-args' , action = 'append' , default = [],
650651 help = "Arguments forwarded to git-send-email" )
651652
652- return parser .parse_args ()
653+ return parser .parse_known_args ()
653654
654655def main ():
655656 global VERBOSE
0 commit comments