from store import Store from command_line import CommandLine import argparse from models.agent import Agent from api import Api from util import * class Commander(CommandLine): def __init__(self, store_dir='data', agent=None): self.store_dir = store_dir self.store = Store(store_dir) self.agent = self.select_agent(agent) self.api = Api(self.store, self.agent) self.store.flush() super().__init__() 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): self.store.foo() self.store.flush() def do_info(self): pprint(self.api.info(), 100) def do_register(self, faction): self.api.register(faction.upper()) def main(args): c = Commander(args.store_dir, args.agent) c.run() if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-s', '--store-dir', default='data') parser.add_argument('-a', '--agent', default=None) args = parser.parse_args() main(args)