mirror of
https://gitlab.com/dslackw/slpkg.git
synced 2025-01-03 06:56:44 +01:00
Updated for invalid options
This commit is contained in:
parent
b715f9674b
commit
0e69f6e505
1 changed files with 3 additions and 39 deletions
|
@ -263,61 +263,25 @@ class Argparse(Configs):
|
||||||
|
|
||||||
self.split_options()
|
self.split_options()
|
||||||
self.split_options_from_args()
|
self.split_options_from_args()
|
||||||
self.invalid_options()
|
|
||||||
self.move_options()
|
self.move_options()
|
||||||
|
self.invalid_options()
|
||||||
|
|
||||||
def invalid_options(self):
|
def invalid_options(self):
|
||||||
""" Checks for invalid options. """
|
""" Checks for invalid options. """
|
||||||
commands: list = []
|
|
||||||
options: list = []
|
|
||||||
invalid: list = []
|
invalid: list = []
|
||||||
doubles: list = []
|
|
||||||
cache: list = []
|
|
||||||
error: int = 0
|
|
||||||
|
|
||||||
for arg in self.args:
|
for arg in self.args:
|
||||||
if arg in self.options:
|
if arg in self.commands.keys():
|
||||||
options.append(arg)
|
pass
|
||||||
if arg[0] == '-' and arg in self.commands.keys():
|
|
||||||
commands.append(arg)
|
|
||||||
elif arg in self.commands.keys() and arg != 'help':
|
|
||||||
commands.append(arg)
|
|
||||||
|
|
||||||
elif arg[0] == '-' and arg not in self.options:
|
elif arg[0] == '-' and arg not in self.options:
|
||||||
invalid.append(arg)
|
invalid.append(arg)
|
||||||
elif arg[0] == '--' and arg not in self.options:
|
elif arg[0] == '--' and arg not in self.options:
|
||||||
invalid.append(arg)
|
invalid.append(arg)
|
||||||
|
|
||||||
# Avoid to add same options, exp: -P, --parallel.
|
|
||||||
opt_list = list(zip(self.options[::2], self.options[1::2]))
|
|
||||||
for i, opt1 in enumerate(opt_list):
|
|
||||||
|
|
||||||
# Reset cache by two items.
|
|
||||||
if (i % 2) == 0:
|
|
||||||
cache = []
|
|
||||||
|
|
||||||
for opt2 in options:
|
|
||||||
if opt2 in opt1:
|
|
||||||
cache.append(opt2)
|
|
||||||
if len(cache) == 2:
|
|
||||||
doubles = cache
|
|
||||||
|
|
||||||
if doubles:
|
|
||||||
print(f"{self.prog_name}: you added the same \'{', '.join(doubles)}\' options.")
|
|
||||||
error: int = 1
|
|
||||||
|
|
||||||
# Avoid to combine two or more commands.
|
|
||||||
if len(commands) > 1:
|
|
||||||
print(f"{self.prog_name}: you can't combine \'{', '.join(commands)}\' commands.")
|
|
||||||
error: int = 1
|
|
||||||
|
|
||||||
# Prints error for invalid options.
|
# Prints error for invalid options.
|
||||||
if invalid:
|
if invalid:
|
||||||
for opt in invalid:
|
for opt in invalid:
|
||||||
print(f"{self.prog_name}: invalid option '{opt}'")
|
print(f"{self.prog_name}: invalid option '{opt}'")
|
||||||
error: int = 1
|
|
||||||
|
|
||||||
if error:
|
|
||||||
self.usage.help_minimal()
|
self.usage.help_minimal()
|
||||||
|
|
||||||
def split_options(self) -> None:
|
def split_options(self) -> None:
|
||||||
|
|
Loading…
Reference in a new issue