mirror of
https://github.com/markqvist/Sideband.git
synced 2025-07-26 16:25:28 -04:00
Restructured repository
This commit is contained in:
parent
46269dd82b
commit
0de4c12c17
274 changed files with 51617 additions and 45 deletions
92
sbapp/kivymd/tools/argument_parser.py
Normal file
92
sbapp/kivymd/tools/argument_parser.py
Normal file
|
@ -0,0 +1,92 @@
|
|||
# Copyright (c) 2019-2021 Artem Bulgakov
|
||||
#
|
||||
# This file is distributed under the terms of the same license,
|
||||
# as the Kivy framework.
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
class ArgumentParserWithHelp(argparse.ArgumentParser):
|
||||
def parse_args(self, args=None, namespace=None):
|
||||
# Add help when no arguments specified
|
||||
if not args and not len(sys.argv) > 1:
|
||||
self.print_help()
|
||||
self.exit(1)
|
||||
return super().parse_args(args, namespace)
|
||||
|
||||
def error(self, message):
|
||||
# Add full help on error
|
||||
self.print_help()
|
||||
self.exit(2, f"\nError: {message}\n")
|
||||
|
||||
def format_help(self):
|
||||
# Add subparsers usage and help to full help text
|
||||
formatter = self._get_formatter()
|
||||
|
||||
# Get subparsers
|
||||
subparsers_actions = [
|
||||
action
|
||||
for action in self._actions
|
||||
if isinstance(action, argparse._SubParsersAction)
|
||||
]
|
||||
|
||||
# Description
|
||||
formatter.add_text(self.description)
|
||||
|
||||
# Usage
|
||||
formatter.add_usage(
|
||||
self.usage,
|
||||
self._actions,
|
||||
self._mutually_exclusive_groups,
|
||||
prefix="Usage:\n",
|
||||
)
|
||||
|
||||
# Subparsers usage
|
||||
for subparsers_action in subparsers_actions:
|
||||
for choice, subparser in subparsers_action.choices.items():
|
||||
formatter.add_usage(
|
||||
subparser.usage,
|
||||
subparser._actions,
|
||||
subparser._mutually_exclusive_groups,
|
||||
prefix="",
|
||||
)
|
||||
|
||||
# Positionals, optionals and user-defined groups
|
||||
for action_group in self._action_groups:
|
||||
if not any(
|
||||
[
|
||||
action in subparsers_actions
|
||||
for action in action_group._group_actions
|
||||
]
|
||||
):
|
||||
formatter.start_section(action_group.title)
|
||||
formatter.add_text(action_group.description)
|
||||
formatter.add_arguments(action_group._group_actions)
|
||||
formatter.end_section()
|
||||
else:
|
||||
# Process subparsers differently
|
||||
# Just show list of choices
|
||||
formatter.start_section(action_group.title)
|
||||
# formatter.add_text(action_group.description)
|
||||
for action in action_group._group_actions:
|
||||
for choice in action.choices:
|
||||
formatter.add_text(choice)
|
||||
formatter.end_section()
|
||||
|
||||
# Subparsers help
|
||||
for subparsers_action in subparsers_actions:
|
||||
for choice, subparser in subparsers_action.choices.items():
|
||||
formatter.start_section(choice)
|
||||
for action_group in subparser._action_groups:
|
||||
formatter.start_section(action_group.title)
|
||||
formatter.add_text(action_group.description)
|
||||
formatter.add_arguments(action_group._group_actions)
|
||||
formatter.end_section()
|
||||
formatter.end_section()
|
||||
|
||||
# Epilog
|
||||
formatter.add_text(self.epilog)
|
||||
|
||||
# Determine help from format above
|
||||
return formatter.format_help()
|
Loading…
Add table
Add a link
Reference in a new issue