jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/844924 )
Change subject: [IMPR] Refactor delete.main() function ......................................................................
[IMPR] Refactor delete.main() function
- simplify arg parsing - add a pagegenerators loop and create summary inside this loop. At this point -undelete and -summary options are already seen. - first ask for -file option in pg loop because -file may also have a value argument. Unfortunately the summary creation still fails if the page title was not given with the option e.g. for -link or -imageused. - use suggest_help() result to continue
Change-Id: I4f57bfc8808d5f19b0f99eaa5af391679adb554e --- M scripts/delete.py 1 file changed, 26 insertions(+), 36 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/scripts/delete.py b/scripts/delete.py index c563213..449e741 100755 --- a/scripts/delete.py +++ b/scripts/delete.py @@ -224,8 +224,7 @@
def main(*args: str) -> None: - """ - Process command line arguments and invoke bot. + """Process command line arguments and invoke bot.
If args is an empty list, sys.argv is used.
@@ -234,6 +233,7 @@ page_name = '' summary = None options = {} + pg_args = []
# read command line parameters local_args = pywikibot.handle_args(args) @@ -241,35 +241,31 @@ mysite = pywikibot.Site()
for arg in local_args: - - if arg == '-always': - options['always'] = True - elif arg.startswith('-summary'): - if len(arg) == len('-summary'): - summary = pywikibot.input('Enter a reason for the deletion:') - else: - summary = arg[len('-summary:'):] - elif arg.startswith('-undelete'): - options['undelete'] = True - elif arg.startswith('-isorphan'): - options['isorphan'] = int(arg[10:]) if arg[10:] != '' else 0 - if options['isorphan'] < 0: - options['isorphan'] = False - elif arg.startswith('-orphansonly'): - if arg[13:]: - namespaces = mysite.namespaces.resolve(arg[13:].split(',')) + opt, _, value = arg.partition(':') + if opt in ('-always', '-undelete'): + options[opt[1:]] = True + elif opt == '-summary': + summary = value or pywikibot.input( + 'Enter a reason for the deletion:') + elif opt == '-isorphan': + value = int(value or 0) + options[opt[1:]] = value if value >= 0 else False + elif opt == '-orphansonly': + if value: + namespaces = mysite.namespaces.resolve(value.split(',')) else: namespaces = mysite.namespaces - options['orphansonly'] = namespaces + options[opt[1:]] = namespaces else: - gen_factory.handle_arg(arg) - found = arg.find(':') + 1 - if found: - page_name = arg[found:] + pg_args.append(arg)
- if not summary: - un = 'un' if 'undelete' in options else '' - if page_name: + un = 'un' if 'undelete' in options else '' + for arg in pg_args: + *_, page_name = arg.partition(':') + if gen_factory.handle_arg(arg) and not summary: + if arg.startswith('-file'): + summary = i18n.twtranslate(mysite, un + 'delete-from-file') + elif page_name: if arg.startswith(('-cat', '-subcats')): summary = i18n.twtranslate(mysite, 'delete-from-category', {'page': page_name}) @@ -283,21 +279,15 @@ elif arg.startswith('-imageused'): summary = i18n.twtranslate(mysite, un + 'delete-images', {'page': page_name}) - elif arg.startswith('-file'): - summary = i18n.twtranslate(mysite, un + 'delete-from-file')
- generator = gen_factory.getCombinedGenerator() # We are just deleting pages, so we have no need of using a preloading # page generator to actually get the text of those pages. - if generator: + generator = gen_factory.getCombinedGenerator() + if not pywikibot.bot.suggest_help(missing_generator=not generator): if summary is None: - summary = pywikibot.input('Enter a reason for the {}deletion:' - .format(['', 'un'][options - .get('undelete', False)])) + summary = pywikibot.input(f'Enter a reason for the {un}deletion:') bot = DeletionRobot(summary, generator=generator, **options) bot.run() - else: - pywikibot.bot.suggest_help(missing_generator=True)
if __name__ == '__main__':
pywikibot-commits@lists.wikimedia.org