import argv import dot_env import gleam/io import gleam/list import gleam_community/ansi import spacetraders_api import spacetraders_client/env import spacetraders_client/pretty_print import spacetraders_models/agent_symbol import spacetraders_models/faction_symbol import spacetraders_sdk const usage = "\nusage: gleam -m spacetraders_register AGENT_SYMBOL FACTION_SYMBOL" pub fn main() { dot_env.load_default() let assert Ok(account_token) = env.get_account_token() as "no valid account token provided" let args = argv.load().arguments let assert [agent_symbol_str, ..args] = args as { "missing agent symbol argument\n" <> usage } let assert Ok(agent_symbol) = agent_symbol.parse(agent_symbol_str) as { "invalid agent symbol\n" <> usage } let assert [faction_symbol_str, ..] = args as { "missing faction symbol argument\n" <> usage } let assert Ok(faction_symbol) = faction_symbol.parse(faction_symbol_str) as { "invalid faction symbol\n" <> usage } let assert Ok(registered) = spacetraders_api.register_new_agent( account_token, agent_symbol, faction_symbol, ) as "Failed to register agent" io.println(ansi.bold(ansi.underline(ansi.green("Successfully Registered")))) io.println( ansi.bold("Agent Token:\t") <> spacetraders_sdk.agent_token_to_string(registered.token), ) io.println("") pretty_print.agent(registered.agent) io.println("") pretty_print.contract(registered.contract) io.println("") list.each(registered.ships, fn(ship) { pretty_print.ship(ship) io.println("") }) }