from nullptr.command_line import CommandLine from nullptr.store import Store import argparse from nullptr.models.agent import Agent from nullptr.models.system import System from nullptr.models.waypoint import Waypoint from nullptr.models.marketplace import Marketplace from nullptr.models.jumpgate import Jumpgate from nullptr.api import Api from .util import * from time import sleep, time from threading import Thread from nullptr.atlas_builder import AtlasBuilder 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.atlas_builder = AtlasBuilder(self.store, self.api) self.store.flush() self.stop_auto= False 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_info(self): pprint(self.api.info(), 100) def do_register(self, faction): self.api.register(faction.upper()) def do_universe(self, page=1): self.atlas_builder.run(page) def do_systems(self, page=1): r = self.api.list_systems(int(page)) pprint(self.api.last_meta) def do_waypoints(self, system_str): system = self.store.get(System, system_str.upper()) r = self.api.list_waypoints(system) pprint(r) def do_marketplace(self, waypoint_str): waypoint = self.store.get(Waypoint, waypoint_str.upper()) r = self.api.marketplace(waypoint) def do_jumps(self, waypoint_str): waypoint = self.store.get(Waypoint, waypoint_str.upper()) r = self.api.jumps(waypoint) pprint(r) def do_test(self): start_time = time() total = 0 for m in self.store.all('', Marketplace, True): total += 1 dur = time() - start_time print(f'{total} markets in {dur:.2f} seconds') start_time = time() total = 0 for m in self.store.all('', Jumpgate, True): total += 1 dur = time() - start_time print(f'{total} jumpgates in {dur:.2f} seconds')