55 lines
1.1 KiB
Plaintext
55 lines
1.1 KiB
Plaintext
|
#!/usr/bin/env python3
|
||
|
|
||
|
import os
|
||
|
import random
|
||
|
import sys
|
||
|
|
||
|
|
||
|
questions_filepath = f"{os.environ['SCRIPTS']}/writing/character-questions.md"
|
||
|
|
||
|
|
||
|
def print_usage():
|
||
|
print(f"{sys.argv[0]} COUNT\n\nwhere COUNT is the number of questions to retrieve")
|
||
|
|
||
|
|
||
|
def get_question_count() -> int:
|
||
|
if len(sys.argv) < 2:
|
||
|
print_usage()
|
||
|
exit(1)
|
||
|
|
||
|
try:
|
||
|
return int(sys.argv[1])
|
||
|
except ValueError:
|
||
|
print_usage()
|
||
|
exit(1)
|
||
|
|
||
|
|
||
|
def get_question_options():
|
||
|
if not os.path.isfile(questions_filepath):
|
||
|
print(f"questions file not located at expected location: {questions_filepath}")
|
||
|
exit(1)
|
||
|
|
||
|
with open(questions_filepath, "r") as f:
|
||
|
return [l.strip() for l in f.readlines()]
|
||
|
|
||
|
|
||
|
def get_random_questions():
|
||
|
count = get_question_count()
|
||
|
candidates = get_question_options()
|
||
|
|
||
|
indices = []
|
||
|
while len(indices) < count:
|
||
|
r = random.randint(0, len(candidates) - 1)
|
||
|
|
||
|
if r in indices and not len(candidates) <= count:
|
||
|
continue
|
||
|
|
||
|
indices.append(r)
|
||
|
|
||
|
return [candidates[idx] for idx in indices]
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
[print(q) for q in get_random_questions()]
|
||
|
|