80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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')
 | 
