Skip to content

Instantly share code, notes, and snippets.

@DanilAndreev
Created November 10, 2021 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DanilAndreev/c95bdeba256c1804d702a6d9e9b983d9 to your computer and use it in GitHub Desktop.
Save DanilAndreev/c95bdeba256c1804d702a6d9e9b983d9 to your computer and use it in GitHub Desktop.
Simple CLI parser.
import sys
class ProgramArguments:
def __init__(self):
self.args = []
self.flags = dict()
def is_set(self, flag: str) -> bool:
return str in self.flags
def __str__(self) -> str:
return "Args:" + self.args.__str__() + "\nFlags:" + self.flags.__str__()
def parse_args() -> ProgramArguments:
program_arguments = ProgramArguments()
last_named_value: str = ""
for arg in sys.argv:
if arg.startswith("--") and arg != "--":
last_named_value = arg[2:]
program_arguments.flags[last_named_value] = None
elif arg.startswith("-") and arg != "-":
last_named_value = arg[1:]
program_arguments.flags[last_named_value] = None
elif last_named_value:
program_arguments.flags[last_named_value] = arg
else:
last_named_value = ""
program_arguments.args.append(arg)
return program_arguments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment