Add argument parsing to main module

This commit is contained in:
2023-05-24 19:20:30 -04:00
parent 7500720992
commit 2bc9d9fb9e
+23 -12
View File
@@ -1,24 +1,35 @@
"""Boggler Demo""" """Boggler Demo"""
import argparse
import sys import sys
from pathlib import Path from pathlib import Path
from .boggler_utils import BoggleBoard, build_full_boggle_tree, read_boggle_file from .boggler_utils import BoggleBoard, build_full_boggle_tree, read_boggle_file
def main(): parser = argparse.ArgumentParser(
if len(sys.argv) < 3 or len(sys.argv) > 4: prog="boggler",
print('Usage: python3 boggler.py <BOARD_FILE> <WORDLISTS_DIR> [MAX_WORD_LENGTH]') description="Boggle board game solver"
sys.exit(1) )
board = read_boggle_file(Path(sys.argv[1])) parser.add_argument("board", type=Path, help="Path to board CSV file")
if len(sys.argv) == 3: parser.add_argument("wordlists", type=Path,
boggle_board = BoggleBoard(board) help="Path to directory of wordlist files. The directory must contain \
elif len(sys.argv) == 4: text files of the form words_X.txt where \"X\" is a character of \
the alphabet")
parser.add_argument("max_word_length", nargs="?", type=int, default=16,
help="Maximum length of words searched for on provided board")
args = parser.parse_args()
def main():
"""Command line tool for sovling Boggle boards"""
board = read_boggle_file(args.board)
try: try:
boggle_board = BoggleBoard(board, int(sys.argv[3])) boggle_board = BoggleBoard(board, args.max_word_length)
except ValueError: except ValueError:
print("Invalid MAX_WORD_LENGTH. Please try again with a valid integer.") print("Invalid MAX_WORD_LENGTH. Please try again with a valid integer.")
sys.exit(1) sys.exit()
try: try:
boggle_tree = build_full_boggle_tree(boggle_board, Path(sys.argv[2])) boggle_tree = build_full_boggle_tree(boggle_board, args.wordlists)
print("\nBOARD") print("\nBOARD")
print(boggle_board) print(boggle_board)
@@ -28,7 +39,7 @@ def main():
for word in tree.word_paths: for word in tree.word_paths:
print(f"{word[0]: <{boggle_board.max_word_len}}: {word[1]}") print(f"{word[0]: <{boggle_board.max_word_len}}: {word[1]}")
except ValueError as e: except ValueError:
print("The [MAX_WORD_LENGTH] argument must be an integer.") print("The [MAX_WORD_LENGTH] argument must be an integer.")
print("Please try again.") print("Please try again.")
sys.exit(1) sys.exit(1)