Add command execution framework
This commit is contained in:
parent
ec1608b154
commit
e1b2d7b96d
@ -10,17 +10,14 @@ import os
|
||||
|
||||
def is_lexicon(name):
|
||||
"""
|
||||
Checks whether the given name is an extant Lexicon game.
|
||||
Checks whether the given folder is a Lexicon game.
|
||||
Inputs:
|
||||
name The Lexicon name to check.
|
||||
name The Lexicon name to check. Assumed to be an existing folder.
|
||||
Output:
|
||||
If the given name is an extant Lexicon, returns a tuple (True, status)
|
||||
where status is a string with the status of the named Lexicon.
|
||||
If the given name is not an extant Lexicon, returns a tuple
|
||||
If the given name is a Lexicon game, returns a tuple (True, status)
|
||||
where status is a string with the Lexicon's status. Otherwise, returns
|
||||
(False, errormsg) where errormsg is a string detailing the error.
|
||||
"""
|
||||
if not os.path.isdir(os.path.join("lexicon", name)):
|
||||
return (False, "There is no Lexicon named '{}'.".format(name))
|
||||
# TODO: Verify the folder is a Lexicon
|
||||
#return (False, "'{}' is not a Lexicon game, or it may be corrupted.".format(name))
|
||||
return (True, "A Lexicon")
|
||||
@ -34,9 +31,10 @@ def overview_all():
|
||||
lexicon_names = []
|
||||
with os.scandir("lexicon") as lexicons:
|
||||
for entry in lexicons:
|
||||
check = is_lexicon(entry.name)
|
||||
if check[0]:
|
||||
lexicon_names.append((entry.name, check[1]))
|
||||
if entry.is_dir():
|
||||
check = is_lexicon(entry.name)
|
||||
if check[0]:
|
||||
lexicon_names.append((entry.name, check[1]))
|
||||
# Print the results
|
||||
if len(lexicon_names) > 0:
|
||||
l = max([len(name[0]) for name in lexicon_names]) + 4
|
||||
@ -53,30 +51,73 @@ def overview_one(name):
|
||||
given name.
|
||||
"""
|
||||
# Verify the name
|
||||
if not os.path.isdir(os.path.join("lexicon", name)):
|
||||
print("Error: There is no Lexicon named '{}'.".format(name))
|
||||
return
|
||||
check = is_lexicon(name)
|
||||
if not check[0]:
|
||||
print("Error: " + check[1])
|
||||
return
|
||||
# Print status and summary
|
||||
# TODO
|
||||
print("Lexicon {} exists, status {}".format(name, check[1]))
|
||||
|
||||
def run_command(name, command):
|
||||
"""
|
||||
Runs the specified command on the specified Lexicon.
|
||||
Runs a command on a Lexicon.
|
||||
"""
|
||||
# Verify name
|
||||
check = is_lexicon(name)
|
||||
if not check[0]:
|
||||
print("Error: " + check[1])
|
||||
return
|
||||
# Dispatch commands
|
||||
if command == "init":
|
||||
# Check that the folder isn't already there
|
||||
if os.path.exists(os.path.join("lexicon", name)):
|
||||
print("Error: Can't create '{}', it already exists.".format(name))
|
||||
return
|
||||
# Create the Lexicon
|
||||
command_init(name)
|
||||
return
|
||||
elif command == "build":
|
||||
if not os.path.exists(os.path.join("lexicon", name)):
|
||||
print("Error: There is no Lexicon named '{}'.".format(name))
|
||||
return
|
||||
check = is_lexicon(name)
|
||||
if not check[0]:
|
||||
print("Error: " + check[1])
|
||||
return
|
||||
# Build the Lexicon
|
||||
command_build(name)
|
||||
return
|
||||
elif command == "run":
|
||||
if not os.path.exists(os.path.join("lexicon", name)):
|
||||
print("Error: There is no Lexicon named '{}'.".format(name))
|
||||
return
|
||||
check = is_lexicon(name)
|
||||
if not check[0]:
|
||||
print("Error: " + check[1])
|
||||
return
|
||||
# Run a server managing the Lexicon
|
||||
command_run(name)
|
||||
return
|
||||
else:
|
||||
print("Error: '{}' is not a valid command.".format(command))
|
||||
return
|
||||
|
||||
def command_init(name):
|
||||
"""
|
||||
Sets up a Lexicon game with the given name.
|
||||
"""
|
||||
pass
|
||||
|
||||
def command_build(name):
|
||||
"""
|
||||
Rebuilds the browsable pages of a Lexicon.
|
||||
"""
|
||||
pass
|
||||
|
||||
def command_run(name):
|
||||
"""
|
||||
Runs as a server managing a Lexicon.
|
||||
"""
|
||||
pass
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Lexipython is a Python application for playing the Lexicon RPG.",
|
||||
|
Loading…
Reference in New Issue
Block a user