import argparse from string import ascii_lowercase import cmd2 from dictionary import DEFAULT, ALTERNATE LOWERCASE = set(ascii_lowercase) DICTS = {"default": DEFAULT, "alt": ALTERNATE} # argparsers dictionary_manage_parser = argparse.ArgumentParser() commands = dictionary_manage_parser.add_mutually_exclusive_group() commands.add_argument( "-l", "--list", action="store_true", help="List available dictionaries" ) commands.add_argument("-s", "--switch", help="Dictionary to swap to") letter_set_manage = argparse.ArgumentParser() letter_set_manage.add_argument("new_letters") class MainLoop(cmd2.Cmd): """Loop for wordscape commands """ prompt = "?$ " def __init__(self): self.dict = "default" self.letters = [l for l in input("Enter letters: ").lower() if l in LOWERCASE] self.prompt = ", ".join(self.letters) + " " + MainLoop.prompt super().__init__() @cmd2.with_argparser(dictionary_manage_parser) def do_dict(self, args): """list/switch dict""" if args.list: print( "\n".join( ( "{} {}".format("*" if key == self.dict else " ", key) for key in DICTS.keys() ) ) ) else: DICTS[args.switch] self.dict = args.switch @cmd2.with_argparser(letter_set_manage) def do_change_letters(self, args): pass if __name__ == "__main__": MainLoop().cmdloop()