0ptr/commander.py

52 lines
1.3 KiB
Python
Raw Normal View History

2023-06-07 19:48:36 +00:00
from store import Store
from command_line import CommandLine
2023-06-09 11:19:47 +00:00
import argparse
2023-06-10 17:39:32 +00:00
from models.agent import Agent
from api import Api
from util import *
2023-06-07 19:48:36 +00:00
class Commander(CommandLine):
2023-06-10 17:39:32 +00:00
def __init__(self, store_dir='data', agent=None):
2023-06-09 11:19:47 +00:00
self.store_dir = store_dir
self.store = Store(store_dir)
2023-06-10 17:39:32 +00:00
self.agent = self.select_agent(agent)
self.api = Api(self.store, self.agent)
self.store.flush()
2023-06-09 11:19:47 +00:00
super().__init__()
2023-06-10 17:39:32 +00:00
def select_agent(self, agent_str):
if agent_str is not None:
return self.store.get(Agent, agent_str)
else:
agents = self.store.all('', Agent)
agent = next(agents, None)
if agent is None:
symbol = input('agent name: ')
agent = self.store.get(Agent, symbol)
return agent
def after_cmd(self):
self.store.flush()
def do_foo(self):
2023-06-09 11:19:47 +00:00
self.store.foo()
2023-06-09 20:20:46 +00:00
self.store.flush()
2023-06-10 17:39:32 +00:00
def do_info(self):
pprint(self.api.info(), 100)
def do_register(self, faction):
self.api.register(faction.upper())
2023-06-07 19:48:36 +00:00
2023-06-09 11:19:47 +00:00
def main(args):
2023-06-10 17:39:32 +00:00
c = Commander(args.store_dir, args.agent)
2023-06-09 20:20:46 +00:00
c.run()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--store-dir', default='data')
2023-06-10 17:39:32 +00:00
parser.add_argument('-a', '--agent', default=None)
2023-06-09 11:19:47 +00:00
args = parser.parse_args()
main(args)