Add argument parsing to main module

This commit is contained in:
2023-05-24 19:20:30 -04:00
parent 7500720992
commit 2bc9d9fb9e
+26 -15
View File
@@ -1,24 +1,35 @@
"""Boggler Demo"""
import argparse
import sys
from pathlib import Path
from .boggler_utils import BoggleBoard, build_full_boggle_tree, read_boggle_file
def main():
if len(sys.argv) < 3 or len(sys.argv) > 4:
print('Usage: python3 boggler.py <BOARD_FILE> <WORDLISTS_DIR> [MAX_WORD_LENGTH]')
sys.exit(1)
parser = argparse.ArgumentParser(
prog="boggler",
description="Boggle board game solver"
)
board = read_boggle_file(Path(sys.argv[1]))
if len(sys.argv) == 3:
boggle_board = BoggleBoard(board)
elif len(sys.argv) == 4:
try:
boggle_board = BoggleBoard(board, int(sys.argv[3]))
except ValueError:
print("Invalid MAX_WORD_LENGTH. Please try again with a valid integer.")
sys.exit(1)
parser.add_argument("board", type=Path, help="Path to board CSV file")
parser.add_argument("wordlists", type=Path,
help="Path to directory of wordlist files. The directory must contain \
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:
boggle_tree = build_full_boggle_tree(boggle_board, Path(sys.argv[2]))
boggle_board = BoggleBoard(board, args.max_word_length)
except ValueError:
print("Invalid MAX_WORD_LENGTH. Please try again with a valid integer.")
sys.exit()
try:
boggle_tree = build_full_boggle_tree(boggle_board, args.wordlists)
print("\nBOARD")
print(boggle_board)
@@ -28,7 +39,7 @@ def main():
for word in tree.word_paths:
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("Please try again.")
sys.exit(1)