mirror of
https://codeberg.org/cblanken/boggler.git
synced 2026-07-26 03:29:26 -04:00
Add argument parsing to main module
This commit is contained in:
+23
-12
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user