0ptr/nullptr/commander.py

92 lines
2.7 KiB
Python
Raw Normal View History

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
2023-06-12 12:41:27 +00:00
from nullptr.models.jumpgate import Jumpgate
from nullptr.api import Api
from .util import *
2023-06-12 12:41:27 +00:00
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):
2023-06-12 12:41:27 +00:00
start_time = time()
total = 0
for m in self.store.all('', Marketplace, True):
2023-06-12 12:41:27 +00:00
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')
2023-06-12 16:35:24 +00:00
start_time = time()
total = 0
for m in self.store.all('', Waypoint, True):
total += 1
dur = time() - start_time
print(f'{total} waypoints in {dur:.2f} seconds')
start_time = time()
total = 0
for m in self.store.all('', System, True):
total += 1
dur = time() - start_time
print(f'{total} systems in {dur:.2f} seconds')